92 lines
1.3 KiB
Kotlin
Vendored
92 lines
1.3 KiB
Kotlin
Vendored
// !DUMP_CFG
|
|
interface A {
|
|
fun foo()
|
|
}
|
|
|
|
interface B {
|
|
fun bar()
|
|
}
|
|
|
|
fun test_1(x: Any?) {
|
|
when {
|
|
x is A -> x.foo()
|
|
x is B -> x.bar()
|
|
}
|
|
|
|
when {
|
|
x !is A -> {}
|
|
x !is B -> x.foo()
|
|
x is Int -> {
|
|
x.foo()
|
|
x.bar()
|
|
x.inc()
|
|
}
|
|
else -> {
|
|
x.foo()
|
|
x.bar()
|
|
}
|
|
}
|
|
}
|
|
|
|
fun test_2(x: Any?) {
|
|
when(x) {
|
|
is A -> x.foo()
|
|
is B -> x.bar()
|
|
}
|
|
|
|
when(x) {
|
|
!is A -> {}
|
|
!is B -> x.foo()
|
|
is Int -> {
|
|
x.foo()
|
|
x.bar()
|
|
x.inc()
|
|
}
|
|
else -> {
|
|
x.foo()
|
|
x.bar()
|
|
}
|
|
}
|
|
}
|
|
|
|
fun test_3(x: Any?) {
|
|
when(val y = x) {
|
|
is A -> {
|
|
x.foo()
|
|
y.foo()
|
|
}
|
|
is B -> {
|
|
x.bar()
|
|
y.bar()
|
|
}
|
|
}
|
|
|
|
when(val y = x) {
|
|
!is A -> {}
|
|
!is B -> {
|
|
x.foo()
|
|
y.foo()
|
|
}
|
|
is Int -> {
|
|
x.foo()
|
|
x.bar()
|
|
x.inc()
|
|
y.foo()
|
|
y.bar()
|
|
y.inc()
|
|
}
|
|
else -> {
|
|
x.foo()
|
|
x.bar()
|
|
y.foo()
|
|
y.bar()
|
|
}
|
|
}
|
|
}
|
|
|
|
fun test_4(x: Any) {
|
|
when (x as Int) {
|
|
1 -> x.inc()
|
|
}
|
|
x.inc()
|
|
} |