2ad8488e6a
Previoisly, there were two places where mapping had happened: - toConeKotlinTypeWithNullability - enhancePossiblyFlexible The first one was used for supertypes and bounds and the second one was used for other signature parts The main idea is to perform type mapping once to a flexible type, and then use it as it's needed (it's lower bound, or for the further ehnancement) Also, this commit fixes flexibility for type arguments, see the tests
25 lines
450 B
Kotlin
Vendored
25 lines
450 B
Kotlin
Vendored
// !WITH_NEW_INFERENCE
|
|
// !CHECK_TYPE
|
|
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
|
// FILE: A.java
|
|
|
|
public class A {
|
|
public static Out<? super CharSequence> foo() { return null; }
|
|
public static In<? extends CharSequence> bar() { return null; }
|
|
}
|
|
|
|
// FILE: main.kt
|
|
|
|
class Out<out E> {
|
|
fun x(): E = null!!
|
|
}
|
|
|
|
class In<in F> {
|
|
fun y(f: F) {}
|
|
}
|
|
|
|
fun test() {
|
|
A.foo().x() checkType { <!UNRESOLVED_REFERENCE!>_<!><Any?>() }
|
|
A.bar().y(null)
|
|
}
|