Build type enhancement properly, by taking into account both bounds of the original flexible type

^KT-44420 Fixed
This commit is contained in:
Victor Petukhov
2021-01-22 17:57:57 +03:00
parent 293f2f9950
commit 83c93aca2e
5 changed files with 64 additions and 7 deletions
@@ -0,0 +1,35 @@
// FIR_IDENTICAL
// FULL_JDK
// WITH_RUNTIME
// WITH_REFLECT
// FILE: NonNullApi.java
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPE, ElementType.PACKAGE})
@javax.annotation.Nonnull
@javax.annotation.meta.TypeQualifierDefault({ElementType.METHOD, ElementType.PARAMETER})
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface NonNullApi { }
// FILE: Foo.java
import java.util.Collection;
@NonNullApi
public class Foo<E> {
public Foo(Collection<? extends E> c) {}
}
// FILE: main.kt
fun test() {
val collection: Collection<Int> = listOf(1, 2, 3)
Foo(collection)
}