| // IGNORE_BACKEND_FIR: JVM_IR |
| // WITH_RUNTIME |
| |
| import kotlin.test.assertEquals |
| |
| class A(val x : Int, val y : A?) |
| |
| fun check(a : A?) : Int { |
| return a?.y?.x ?: (a?.x ?: 3) |
| } |
| |
| fun checkLeftAssoc(a : A?) : Int { |
| return (a?.y?.x ?: a?.x) ?: 3 |
| } |
| |
| fun box() : String { |
| val a1 = A(2, A(1, null)) |
| val a2 = A(2, null) |
| val a3 = null |
| |
| assertEquals(1, check(a1)) |
| assertEquals(2, check(a2)) |
| assertEquals(3, check(a3)) |
| |
| assertEquals(1, checkLeftAssoc(a1)) |
| assertEquals(2, checkLeftAssoc(a2)) |
| assertEquals(3, checkLeftAssoc(a3)) |
| |
| return "OK" |
| } |