Files
kotlin-fork/compiler/testData/diagnostics/tests/generics/capturedParameters/innerLocalClass.kt
T
Denis.Zharkov 2ecba6ac39 Remove WITH_NEW_INFERENCE directive from all tests
This directive anyway does not make test run twice with OI, and with NI
It only once run the test with specific settings (// LANGUAGE)
and ignores irrelevant (OI or NI tags)
2021-05-25 13:28:26 +03:00

35 lines
1.1 KiB
Kotlin
Vendored

// !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 = <!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!!