e2c02f825f
Instead of erasing descriptors with conflicting substitution, use invariant CapturedType(<projection>) as replacement for type parameter within default member scope. After substitution leave such types 'as is' everywhere except return types, use common approximation for them. #KT-9294 In Progress #KT-5411 Fixed #KT-8647 Fixed #KT-9462 Fixed #KT-9893 Fixed #KT-7581 Fixed #KT-7296 In Progress
19 lines
455 B
Kotlin
Vendored
19 lines
455 B
Kotlin
Vendored
// !CHECK_TYPE
|
|
|
|
// FILE: A.java
|
|
public class A {
|
|
public java.util.List<? extends CharSequence> foo() {}
|
|
}
|
|
|
|
// FILE: main.kt
|
|
|
|
fun foo2(x: A, y: MutableList<out CharSequence>) {
|
|
x.foo().isEmpty()
|
|
x.foo().get(0) checkType { _<CharSequence>() }
|
|
x.foo().iterator() checkType { _<MutableIterator<CharSequence>>() }
|
|
|
|
y.isEmpty()
|
|
y.get(0) checkType { _<CharSequence>() }
|
|
y.iterator() checkType { _<MutableIterator<CharSequence>>() }
|
|
}
|