| // WITH_STDLIB | |
| 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" | |
| } |