// FILE: f.kt package toplevelObjectDeclarations open class Foo(y : Int) { open fun foo() : Int = 1 } class T : Foo {} object A : Foo { val x : Int = 2 fun test() : Int { return x + foo() } } object B : A {} val x = A.foo() val y = object : Foo(x) { { x + 12 } override fun foo() : Int = 1 } val z = y.foo() // FILE: f.kt package nestedObejcts object A { val b = B val d = A.B.A object B { val a = A val e = B.A object A { val a = A val b = B val x = nestedObejcts.A.B.A val y = this@A } } } object B { val b = B val c = A.B } val a = A val b = B val c = A.B val d = A.B.A val e = B.A.B // FILE: f.kt package localObjects object A { val x : Int = 0 } open class Foo { fun foo() : Int = 1 } fun test() { A.x val b = object : Foo { } b.foo() object B { fun foo() {} } B.foo() } val bb = B.foo()