[JS IR BE] Do not create $default stub for external function and any its fake override

This commit is contained in:
Roman Artemev
2019-07-04 18:10:43 +03:00
committed by romanart
parent 28a108a205
commit 8a569cc698
8 changed files with 82 additions and 5 deletions
@@ -0,0 +1,13 @@
define("lib", [], function() {
function A(ss) {
this.s = ss || "A"
}
A.prototype.foo = function (y) {
return y || "K";
};
A.prototype.bar = function (y) {
return y || "O";
};
return A;
});
@@ -0,0 +1,44 @@
// EXPECTED_REACHABLE_NODES: 1284
// MODULE_KIND: AMD
package foo
@JsModule("lib")
external open class A(ss: String = definedExternally) {
val s: String
fun foo(y: String = definedExternally): String = definedExternally
fun bar(y: String = definedExternally): String = definedExternally
}
class C: A {
constructor(ss: String) : super(ss) {}
constructor() : super() {}
fun qux(s: String = "O") = s
}
fun box(): String {
val a = A()
val c = C()
val r1 = a.foo("O") + c.foo()
if (r1 != "OK") return "Fail1: $r1"
val r2 = a.bar() + c.bar("K")
if (r2 != "OK") return "Fail2: $r2"
val r3 = c.qux() + c.qux("K")
if (r3 != "OK") return "Fail3: $r3"
if (a.s != "A") return "Fail4: ${a.s}"
if (c.s != "A") return "Fail5: ${c.s}"
val a2 = A("A2")
val c2 = C("C2")
val r6 = a2.s + c2.s
if (r6 != "A2C2") return "Fail6: $r6"
return "OK"
}