| // ISSUE: KT-58754 | |
| // WITH_STDLIB | |
| fun foo(): Int = 1 | |
| fun bar(): Int = 2 | |
| class Test(b: Boolean) { | |
| val test_1 by lazy { | |
| val a = if (b) { | |
| ::foo | |
| } else { | |
| ::bar | |
| } | |
| a | |
| } | |
| val test_2 by lazy { | |
| val a = if (b) ::foo else ::bar | |
| a | |
| } | |
| val test_3 by lazy { | |
| val a = when { | |
| b -> { ::foo } | |
| else -> { ::bar } | |
| } | |
| a | |
| } | |
| val test_4 by lazy { | |
| val a = when { | |
| b -> ::foo | |
| else -> ::bar | |
| } | |
| a | |
| } | |
| } | |
| fun box(): String { | |
| with(Test(b = false)) { | |
| require(test_1() == bar()) | |
| require(test_2() == bar()) | |
| require(test_3() == bar()) | |
| require(test_4() == bar()) | |
| } | |
| with(Test(b = true)) { | |
| require(test_1() == foo()) | |
| require(test_2() == foo()) | |
| require(test_3() == foo()) | |
| require(test_4() == foo()) | |
| } | |
| return "OK" | |
| } |