| // KT-61929 |
| // WITH_SDTLIB |
| |
| package foo |
| |
| fun doSomething(lambda: () -> Unit) { lambda() } |
| |
| class CompilerBug1(result: String) { |
| var result: String = "Failed" |
| |
| init { |
| run { |
| object { |
| init { |
| doSomething { completed(result) } |
| } |
| } |
| } |
| } |
| |
| fun completed(value: String) { |
| this.result = value |
| } |
| } |
| |
| class CompilerBug2(result: String) { |
| var result: String = "Fail" |
| |
| init { |
| run { |
| class Foo { |
| init { |
| doSomething { completed(result) } |
| } |
| |
| constructor() {} |
| } |
| |
| Foo() |
| } |
| } |
| |
| fun completed(value: String) { |
| this.result = value |
| } |
| } |
| |
| class CompilerBug3(result: String) { |
| var result: String = "OK" |
| |
| init { |
| run { |
| class Foo { |
| init { |
| doSomething { completed(result) } |
| } |
| |
| constructor() {} |
| constructor(test: String) {} |
| } |
| |
| if (this.result == "OK") { |
| this.result = "Failed with the empty constructor" |
| Foo() |
| } |
| if (this.result == "OK") { |
| this.result = "Failed with one parameter constructor" |
| Foo("Test") |
| } |
| } |
| } |
| |
| fun completed(value: String) { |
| this.result = value |
| } |
| } |
| |
| fun box(): String { |
| CompilerBug1("OK").result.also { if (it != "OK") return "CompilerBug1: $it" } |
| CompilerBug2("OK").result.also { if (it != "OK") return "CompilerBug2: $it" } |
| CompilerBug3("OK").result.also { if (it != "OK") return "CompilerBug3: $it" } |
| |
| return "OK" |
| } |