| // LANGUAGE: +CompanionBlocks +CompanionExtensions | |
| var initialized = false | |
| class Foo() { | |
| companion { | |
| val staticProp = run { initialized = true; "" } | |
| } | |
| } | |
| companion fun Foo.sayHi(): String { return "hi" } | |
| companion val Foo.greeting: String = "hi" | |
| fun box(): String { | |
| val hi = Foo.sayHi() | |
| if (hi != "hi") return "FAIL: hi=${hi}" | |
| val greeting = Foo.greeting | |
| if (greeting != "hi") return "FAIL: Foo.greeting=${greeting}" | |
| // Companion extension access should not trigger initializers: | |
| // ยง3.4 (companion extensions): we remark that calling a companion extension does not imply the initialization of the classifier being extended | |
| if (initialized) return "FAIL: initialized=${initialized}" | |
| return "OK" | |
| } |