KT-36336 @EnhancedNullability and null checks

Don't insert implicit null check on a value of @EnhancedNullability type
used where @EnhancedNullability type is expected.

This uncovers a bunch of other problems in FE and BE.
KT-36343 and KT-36347 are bugs in StrictJavaNullabilityAssertions
implementation which should most likely be fixed in next major language
version (with proper breaking change notice).
KT-36344 is a design problem which should be addressed after 1.4 issues
are resolved.
This commit is contained in:
Dmitry Petrov
2020-02-04 15:27:00 +03:00
parent 6489b56fb0
commit ee020ef290
35 changed files with 1216 additions and 121 deletions

View File

@@ -1,7 +1,9 @@
// FILE: test/CallableDescriptor.java
// IGNORE_BACKEND: JVM_IR
// See KT-35656, here JMV_IR correctly generates a nullability assertion for an argument of 'Iterable<T>.contains(T)'.
// JVM_IR:
// Here in 'original in emptySet<D>()' T = '@EnhancedNullability CallableDescriptor' is inferred for 'Iterable<T>.contains(T)'.
// Using value of '@EnhancedNullability CallableDescriptor' type where '@EnhancedNullability CallableDescriptor' is expected
// doesn't cause a null check.
package test;