Files
kotlin-fork/compiler/testData/ir/irText/expressions/smartCastAside2.kt.txt
T
2024-02-16 10:19:38 +00:00

78 lines
1.6 KiB
Kotlin
Vendored

abstract class Bar<T : Any> {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
abstract fun bar()
}
interface Foo<out T : Any?> {
abstract fun foo()
}
fun <T : Any> Bar<T>.extBar() {
}
fun <T : Any?> Foo<T>.extFoo() {
}
fun <K : Any?> materialize(): K {
return CHECK_NOT_NULL<Nothing>(arg0 = null)
}
fun test_1(x: Any) {
x as Bar<Any> /*~> Unit */
x as Foo<Any> /*~> Unit */
x /*as Foo<Any> */.foo()
x /*as Bar<Any> */.bar()
x /*as Foo<Any> */.extFoo<Any>()
x /*as Bar<Any> */.extBar<Any>()
}
fun test_2(x: Any) {
x as Bar<Any>? /*~> Unit */
x as Foo<Any>? /*~> Unit */
CHECK_NOT_NULL<Any>(arg0 = x) /*as Foo<Any> */.foo()
CHECK_NOT_NULL<Any>(arg0 = x) /*as Bar<Any> */.bar()
CHECK_NOT_NULL<Any>(arg0 = x) /*as Foo<Any> */.extFoo<Any>()
CHECK_NOT_NULL<Any>(arg0 = x) /*as Bar<Any> */.extBar<Any>()
}
fun test_3(x: Any) {
x as Bar<Any>? /*~> Unit */
x as Foo<Any>? /*~> Unit */
{ // BLOCK
val tmp_0: Any = x
when {
EQEQ(arg0 = tmp_0, arg1 = null) -> materialize<Any>()
else -> tmp_0
}
} /*as Foo<Any> */.foo()
{ // BLOCK
val tmp_1: Any = x
when {
EQEQ(arg0 = tmp_1, arg1 = null) -> materialize<Any>()
else -> tmp_1
}
} /*as Bar<Any> */.bar()
{ // BLOCK
val tmp_2: Any = x
when {
EQEQ(arg0 = tmp_2, arg1 = null) -> materialize<Any>()
else -> tmp_2
}
} /*as Foo<Any> */.extFoo<Any>()
{ // BLOCK
val tmp_3: Any = x
when {
EQEQ(arg0 = tmp_3, arg1 = null) -> materialize<Any>()
else -> tmp_3
}
} /*as Bar<Any> */.extBar<Any>()
}