/* * Copyright 2010-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license * that can be found in the LICENSE file. */ // 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" }