Files
kotlin-fork/compiler/testData/diagnostics/tests/generics/capturedParameters/innerLocalClass.kt
T
2017-11-29 02:54:30 +03:00

36 lines
1.1 KiB
Kotlin
Vendored

// !WITH_NEW_INFERENCE
// !CHECK_TYPE
// NI_EXPECTED_FILE
private class Outer<E> {
private inner class Inner<out F> {
private fun <G> foo() = {
fun baz() = {
class Local {
val e: E = magic()
val f: F = magic()
val g: G = magic()
}
Local()
}
baz()()
}
private var doubleCharSequenceInt = Outer<Double>().Inner<CharSequence>().foo<Int>()()
private var doubleStringNumber = Outer<Double>().Inner<String>().foo<Number>()()
private var doubleStringInt = Outer<Double>().Inner<String>().foo<Int>()()
private fun bar() {
doubleCharSequenceInt = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>doubleStringNumber<!>
doubleCharSequenceInt = doubleStringInt
doubleStringInt = Outer<Double>().Inner<String>().foo<Int>()()
doubleStringInt.e.checkType { _<Double>() }
doubleStringInt.f.checkType { _<String>() }
doubleStringInt.g.checkType { _<Int>() }
}
}
}
fun <T> magic(): T = null!!