fun foo() { return false fun a() = {when(x) { is a -> b }} // foo fun b() {} } fun foo() { when (e) { } when (e) { is a -> foo } when (e) { is Tree -> foo null -> foo 1 -> foo A.b -> foo 1.0 -> foo 'c' -> foo "sadfsa" -> foo """ddd""" -> foo } when (when(when (e) { }) { }) { } } fun foo() { when (val a = e) { is Tree -> c is a.a -> c is package.a.a -> c in 1..2 -> dsf !in 2 -> sd !is t -> d (foo) -> Bar -> fgpp is Pair -> 2 else -> foo } } fun foo() { when (val a = e) { is Tree, is a -> c 1, foo(), bar, 2 + 3, is a -> c } } fun whenWithoutCondition(i : Int) { val j = 12 when { 3 -> -1 i == 3 -> -1 j < i, j == i -> -1 i is Int -> 1 else -> 2 } } fun ifDoesntCaptureElse(x : Int) { when (x) { 2 -> if(1) 3 else -> 6 } }