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
13 lines
262 B
Kotlin
Vendored
13 lines
262 B
Kotlin
Vendored
// !CHECK_TYPE
|
|
|
|
interface Clazz<T> {
|
|
val t: T
|
|
fun getSuperClass(): Clazz<in T>
|
|
}
|
|
|
|
fun test(clazz: Clazz<*>) {
|
|
clazz.t checkType { _<Any?>() }
|
|
clazz.getSuperClass() checkType { _<Clazz<*>>() }
|
|
clazz.getSuperClass().t checkType { _<Any?>() }
|
|
}
|