| // KT-66087 |
| // IGNORE_BACKEND: JS_IR, JS_IR_ES6 |
| // WITH_STDLIB |
| import kotlin.test.* |
| |
| object A { |
| init { |
| assertAUninitialized() |
| } |
| val a1 = 7 |
| val a2 = 12 |
| } |
| |
| // Check that A is initialized dynamically. |
| fun assertAUninitialized() { |
| assertEquals(0, A.a1, "0 != A.a1") |
| assertEquals(0, A.a2, "0 != A.a2") |
| } |
| |
| object B { |
| init { |
| assertBUninitialized() |
| } |
| val b1 = A.a2 |
| val b2 = C.c1 |
| } |
| |
| // Check that B is initialized dynamically. |
| fun assertBUninitialized() { |
| assertEquals(0, B.b1, "0 != B.b1") |
| assertEquals(0, B.b2, "0 != B.b2") |
| } |
| |
| object C { |
| init { |
| assertCUninitialized() |
| } |
| val c1 = 42 |
| val c2 = A.a1 |
| val c3 = B.b1 |
| val c4 = B.b2 |
| } |
| |
| // Check that C is initialized dynamically. |
| fun assertCUninitialized() { |
| assertEquals(0, C.c1, "0 != C.c1") |
| assertEquals(0, C.c2, "0 != C.c2") |
| assertEquals(0, C.c3, "0 != C.c3") |
| assertEquals(0, C.c4, "0 != C.c4") |
| } |
| |
| fun box(): String { |
| assertEquals(A.a1, C.c2, "A.a1 != C.c2") |
| assertEquals(A.a2, C.c3, "A.a2 != C.c3") |
| assertEquals(C.c1, C.c4, "C.c1 != C.c4") |
| |
| return "OK" |
| } |