K2: reproduce situation from KT-62863
This commit is contained in:
committed by
Space Team
parent
168b3416ea
commit
50106c740c
@@ -0,0 +1,77 @@
|
||||
fun <K : Any?> materialize(): K {
|
||||
return CHECK_NOT_NULL<Nothing>(arg0 = null)
|
||||
}
|
||||
|
||||
interface Foo<out T : Any?> {
|
||||
abstract fun foo()
|
||||
|
||||
}
|
||||
|
||||
abstract class Bar<T : Any> {
|
||||
constructor() /* primary */ {
|
||||
super/*Any*/()
|
||||
/* <init>() */
|
||||
|
||||
}
|
||||
|
||||
abstract fun bar()
|
||||
|
||||
}
|
||||
|
||||
fun <T : Any?> Foo<T>.extFoo() {
|
||||
}
|
||||
|
||||
fun <T : Any> Bar<T>.extBar() {
|
||||
}
|
||||
|
||||
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>()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user