| 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" |
| } |