Files
kotlin/compiler/testData/codegen/bytecodeText/nullCheckOptimization/deterministicNotNullChecks.kt
Dmitry Petrov ee020ef290 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.
2020-02-05 11:15:41 +03:00

28 lines
955 B
Kotlin
Vendored

// FILE: test/CallableDescriptor.java
// 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;
import org.jetbrains.annotations.NotNull;
public interface CallableDescriptor {
@NotNull
CallableDescriptor getOriginal();
}
// FILE: test/k.kt
package test
fun <D : CallableDescriptor> D.overriddenTreeUniqueAsSequenceA(): Boolean {
return original in emptySet<D>()
}
// TODO: in fact, there should be an assertion, but it's missing because of https://youtrack.jetbrains.com/issue/KT-24210.
// (This test's aim is not to check whether or not the assertion is generated, but to ensure that the behavior is deterministic.)
// 0 checkExpressionValueIsNotNull
// 0 checkNotNullExpressionValue