| // TARGET_BACKEND: JVM | |
| // CHECK_BYTECODE_LISTING | |
| // WITH_STDLIB | |
| open class A( | |
| val a: Int = 1, | |
| @IntroducedAt("1") val b: String = "A1", | |
| @IntroducedAt("2") val c: Float = 3f, | |
| ) | |
| class B : A { | |
| constructor(a: Int, @IntroducedAt("1") b: String = "B1") : super(a, b) | |
| constructor(@IntroducedAt("1") b: String = "B2") : super(2, b) | |
| constructor(b: Boolean) : super(3) | |
| } | |
| class C ( | |
| a : Int, | |
| @IntroducedAt("1") b: String = "C1", | |
| ) : A(a, b) { | |
| constructor(@IntroducedAt("1") b: String = "C2") : this(2, b) | |
| constructor(b: Boolean) : this(3) | |
| } | |
| fun box(): String { | |
| val a1 = A() | |
| val a2 = A(2) | |
| val a3 = A(2, "MOO") | |
| if (a1.b != "A1") return "FAIL-A1" | |
| if (a2.b != "A1") return "FAIL-A2" | |
| if (a3.b != "MOO") return "FAIL-A3" | |
| val b1 = B() | |
| val b2 = B(2) | |
| val b3 = B(2, "MOO") | |
| val b4 = B("MOO") | |
| val b5 = B(true) | |
| if (b1.b != "B2") return "FAIL-B1" | |
| if (b2.b != "B1") return "FAIL-B2" | |
| if (b3.b != "MOO") return "FAIL-B3" | |
| if (b4.b != "MOO") return "FAIL-B4" | |
| if (b5.b != "A1") return "FAIL-B5" | |
| val c1 = C() | |
| val c2 = C(2) | |
| val c3 = C(2, "MOO") | |
| val c4 = C("MOO") | |
| val c5 = C(true) | |
| if (c1.b != "C2") return "FAIL-C1" | |
| if (c2.b != "C1") return "FAIL-C2" | |
| if (c3.b != "MOO") return "FAIL-C3" | |
| if (c4.b != "MOO") return "FAIL-C4" | |
| if (c5.b != "C1") return "FAIL-C5" | |
| return "OK" | |
| } |