Files
kotlin-fork/compiler/fir/analysis-tests/testData/resolve/smartcasts/controlStructures/when.kt
T
2020-03-19 09:51:01 +03:00

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()
}