| open class A1(y: String) { | |
| val x = "A1.x,$y" | |
| } | |
| open class A2(y: String) { | |
| val x = "A2.x,$y" | |
| inner open class B1 : A1 { | |
| constructor(p: String) : super("B1.param,$p") | |
| } | |
| inner open class B2 : A2 { | |
| constructor(p: String) : super("B2.param,$p") | |
| } | |
| inner class B3 : B1 { | |
| constructor(p: String) : super("B3.param,$p") | |
| } | |
| fun foo(): String { | |
| return B1("q").x + ";" + B2("w").x + ";" + B3("e").x + ";" + x | |
| } | |
| } | |
| open class A3(y: String) { | |
| val x = "A3.x,$y" | |
| inner open class B1(p: String) : A1("B1.param,$p") | |
| inner open class B2(p: String) : A3("B2.param,$p") | |
| inner class B3(p: String) : B1("B3.param,$p") | |
| fun foo(): String { | |
| return B1("q").x + ";" + B2("w").x + ";" + B3("e").x + ";" + x | |
| } | |
| } | |
| fun box(): String { | |
| val r1 = A2("c").foo() | |
| if (r1 != "A1.x,B1.param,q;A2.x,B2.param,w;A1.x,B1.param,B3.param,e;A2.x,c") return "fail1: $r1" | |
| val r2 = A3("d").foo() | |
| if (r2 != "A1.x,B1.param,q;A3.x,B2.param,w;A1.x,B1.param,B3.param,e;A3.x,d") return "fail2: $r2" | |
| return "OK" | |
| } |