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
17 lines
295 B
Kotlin
Vendored
17 lines
295 B
Kotlin
Vendored
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
|
// !CHECK_TYPE
|
|
// See KT-9893
|
|
open class A
|
|
|
|
public interface I<T : A> {
|
|
public fun foo(): T?
|
|
}
|
|
|
|
fun acceptA(a: A) {
|
|
}
|
|
|
|
fun main(i: I<*>) {
|
|
i.foo() checkType { _<A?>() }
|
|
acceptA(<!TYPE_MISMATCH!>i.foo()<!>) // i.foo() should be nullable but isn't
|
|
}
|