| // LANGUAGE: +FullValueClasses | |
| // WITH_STDLIB | |
| val log = mutableListOf<Any>() | |
| abstract value class Base { | |
| abstract val i: Int | |
| init { | |
| log.add("Base.init:i=$i") | |
| } | |
| } | |
| value class Derived(override val i: Int, val f: Float) : Base() { | |
| init { | |
| log.add("Derived.init:i=$i,f=$f") | |
| } | |
| } | |
| fun box(): String { | |
| log.clear() | |
| val d = Derived(42, 3.14f) | |
| require(d.i == 42) { "d.i=${d.i}" } | |
| require(d.f == 3.14f) { "d.f=${d.f}" } | |
| val expected = listOf("Base.init:i=42", "Derived.init:i=42,f=3.14") | |
| require(log == expected) { "Expected:\n$expected\nGot:\n$log" } | |
| return "OK" | |
| } |