| // See KT-10648: Exhaustiveness check does not work with nested sealed hierarchy |
| sealed class Base { |
| sealed class A : Base() { |
| class A1 : A() |
| class A2 : A() |
| } |
| sealed class B : Base() { |
| class B1 : B() |
| class B2 : B() |
| } |
| } |
| |
| fun foo(b: Base) = when (b) { |
| is Base.A -> when(b) { |
| is Base.A.A1 -> 1 |
| is Base.A.A2 -> 2 |
| } |
| is Base.B -> when(b) { |
| is Base.B.B1 -> 3 |
| is Base.B.B2 -> 4 |
| } |
| } |
| |
| fun bar(b: Base?) = if (b == null) 0 else when (b) { |
| is Base.A -> when(b) { |
| is Base.A.A1 -> 1 |
| is Base.A.A2 -> 2 |
| } |
| is Base.B -> when(b) { |
| is Base.B.B1 -> 3 |
| is Base.B.B2 -> 4 |
| } |
| } |
| |
| fun gav(b: Base?) = when (b) { |
| null -> 0 |
| is Base.A -> when(b) { |
| is Base.A.A1 -> 1 |
| is Base.A.A2 -> 2 |
| } |
| is Base.B -> when(b) { |
| is Base.B.B1 -> 3 |
| is Base.B.B2 -> 4 |
| } |
| } |