[JS IR] Override method are not exported

[JS IR] Add test with jsexport overrides not js export method with stable name

^KT-44616 fixed
This commit is contained in:
Ilya Goncharov
2021-02-03 19:24:26 +03:00
parent a9322a01ce
commit 6c051b2be4
6 changed files with 130 additions and 5 deletions
@@ -0,0 +1,41 @@
// IGNORE_BACKEND: JS
// RUN_PLAIN_BOX_FUNCTION
// INFER_MAIN_MODULE
// MODULE: overriden-external-method-with-same-stable-name-method
// FILE: lib.kt
external abstract class Foo {
abstract fun o(): String
}
abstract class Bar : Foo() {
@JsName("oStable")
abstract fun String.o(): String
override fun o(): String {
return "O".o()
}
}
@JsExport
class Baz : Bar() {
override fun String.o(): String {
return this
}
}
// FILE: test.js
function Foo() {}
Foo.prototype.k = function() {
return "K"
}
function box() {
return test(new this["overriden-external-method-with-same-stable-name-method"].Baz());
}
function test(foo) {
const oStable = foo.oStable("OK")
if (oStable !== "OK") return "false: " + oStable
return foo.o() + foo.k()
}