| var subjectEvaluated = 0 | |
| fun String.foo() = length.also { ++subjectEvaluated } | |
| fun test(s: String?) = | |
| when (s?.foo()) { | |
| 0 -> "zero" | |
| 1 -> "one" | |
| 2 -> "two" | |
| else -> "other" | |
| } | |
| fun box(): String { | |
| val t = test("12") | |
| if (t != "two") return "Fail: $t" | |
| if (subjectEvaluated != 1) return "Fail: subjectEvaluated=$subjectEvaluated" | |
| return "OK" | |
| } |