Files
kotlin-fork/compiler/testData/diagnostics/tests/generics/projectionsScope/kt7296.kt
T
Denis Zharkov e2c02f825f Refine member scope for types with projections
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
2015-12-28 11:13:37 +03:00

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<*>>>() }
}