| // FILE: jsQualifier.js |
| let a = { |
| b: { |
| c: { |
| d: { |
| x: 10, |
| f() { return 10; }, |
| C: class C { |
| constructor(x) { |
| this.x = x; |
| } |
| } |
| } |
| } |
| } |
| }; |
| |
| // FILE: lib1.kt |
| @file:JsQualifier("a.b.c.d") |
| package abcd |
| |
| external var x: Int |
| external fun f(): Int |
| external class C { |
| constructor(x: String) |
| val x: String |
| } |
| |
| @JsName("x") |
| external var x2: Int |
| |
| @JsName("f") |
| external fun f2(): Int |
| |
| @JsName("C") |
| external class C2 { |
| constructor(x: String) |
| @JsName("x") |
| val x2: String |
| } |
| |
| // FILE: lib2.kt |
| @file:JsQualifier("a") |
| package a |
| |
| external object b { |
| class c { |
| companion object { |
| @JsName("d") |
| object d2 { |
| var x: Int |
| fun f(): Int |
| class C { |
| constructor(x: String) |
| val x: String |
| } |
| |
| @JsName("x") |
| var x2: Int |
| |
| @JsName("f") |
| fun f2(): Int |
| |
| @JsName("C") |
| class C2 { |
| constructor(x: String) |
| @JsName("x") |
| val x2: String |
| } |
| } |
| } |
| } |
| } |
| |
| |
| // FILE: main.kt |
| fun box(): String { |
| if (abcd.x != 10) return "Fail1" |
| if (abcd.f() != 10) return "Fail2" |
| if (abcd.C("10").x != "10") return "Fail3" |
| |
| if (abcd.x2 != 10) return "Fail4" |
| if (abcd.f2() != 10) return "Fail5" |
| if (abcd.C2("10").x2 != "10") return "Fail6" |
| |
| if (a.b.c.Companion.d2.x != 10) return "Fail7" |
| if (a.b.c.Companion.d2.f() != 10) return "Fail8" |
| if (a.b.c.Companion.d2.C("10").x != "10") return "Fail9" |
| |
| if (a.b.c.Companion.d2.x2 != 10) return "Fail10" |
| if (a.b.c.Companion.d2.f2() != 10) return "Fail11" |
| if (a.b.c.Companion.d2.C2("10").x2 != "10") return "Fail12" |
| |
| return "OK" |
| } |