6fc0de39c2
This gives us more precise type information and can enable backend optimizations. This was motivated by when expressions not compiled to table switches in the JVM_IR backend. Fixed KT-36845.
28 lines
370 B
Plaintext
Vendored
28 lines
370 B
Plaintext
Vendored
interface I1 {
|
|
|
|
}
|
|
|
|
interface I2 {
|
|
|
|
}
|
|
|
|
operator fun I1.component1(): Int {
|
|
return 1
|
|
}
|
|
|
|
operator fun I2.component2(): String {
|
|
return ""
|
|
}
|
|
|
|
fun test(x: I1) {
|
|
when {
|
|
x !is I2 -> return Unit
|
|
}
|
|
// COMPOSITE {
|
|
val tmp0_container: I2 = x /*as I2 */
|
|
val c1: Int = tmp0_container /*as I1 */.component1()
|
|
val c2: String = tmp0_container.component2()
|
|
// }
|
|
}
|
|
|