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
15 lines
427 B
Kotlin
Vendored
15 lines
427 B
Kotlin
Vendored
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
|
// !CHECK_TYPE
|
|
import java.util.ArrayList
|
|
|
|
class ListOfLists<T>(public val x : ArrayList<ArrayList<T>>)
|
|
|
|
fun main(args : Array<String>) {
|
|
val a : ArrayList<ArrayList<String>> = ArrayList()
|
|
val b : ListOfLists<String> = ListOfLists(a)
|
|
val c : ListOfLists<*> = b
|
|
val d : ArrayList<ArrayList<*>> = <!TYPE_MISMATCH!>c.x<!>
|
|
|
|
c.x checkType { _<ArrayList<out ArrayList<*>>>() }
|
|
}
|