[JS IR] fix name clashes for imported external declarations

This commit is contained in:
Anton Bannykh
2020-09-29 14:00:38 +03:00
committed by TeamCityServer
parent 6e40c814c8
commit 0182c09318
6 changed files with 130 additions and 3 deletions
@@ -0,0 +1,29 @@
define("a", [], function() {
function A() {}
A.prototype.foo = function () {
return "O";
};
return {
A: A,
bar: function() { return 1; },
prop: 10
};
});
define("b", [], function() {
function A() {}
A.prototype.foo = function () {
return "K";
};
return {
A: A,
bar: function() { return 2; },
prop: 20
};
});
@@ -0,0 +1,40 @@
// EXPECTED_REACHABLE_NODES: 1284
// FILE: a.kt
// MODULE_KIND: AMD
@file:JsModule("a")
package a
external class A {
fun foo(): String
}
external fun bar(): Int
external val prop: Int
// FILE: b.kt
// MODULE_KIND: AMD
@file:JsModule("b")
package b
external class A {
fun foo(): String
}
external fun bar(): Int
external var prop: Int
// FILE: main.kt
import a.A as O
import b.A as K
fun box(): String {
if (a.bar() != 1) return "fail 1"
if (a.prop != 10) return "fail 2"
if (b.bar() != 2) return "fail 3"
if (b.prop != 20) return "fail 4"
return O().foo() + K().foo()
}