[K/JS] Support companion objects in external and exported declarations
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
// SKIP_MINIFICATION
|
||||
// ES_MODULES
|
||||
|
||||
// FILE: api.kt
|
||||
package api
|
||||
|
||||
@JsExport
|
||||
interface A {
|
||||
companion object {
|
||||
fun ok() = "OK"
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
external interface JsResult {
|
||||
val res: String
|
||||
}
|
||||
|
||||
@JsModule("./interfaceWithCompanion.mjs")
|
||||
external fun jsBox(): JsResult
|
||||
|
||||
fun box(): String {
|
||||
return jsBox().res
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import * as api from "./interfaceWithCompanion_v5.mjs";
|
||||
|
||||
export default function() {
|
||||
return {
|
||||
"res": api.A.getInstance().ok()
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,20 @@
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// TARGET_BACKEND: JS_IR_ES6
|
||||
// EXPECTED_REACHABLE_NODES: 1238
|
||||
// ES_MODULES
|
||||
// FILE: bar.kt
|
||||
@file:JsModule("./interfacesWithCompanion.mjs")
|
||||
package bar
|
||||
|
||||
external interface Bar {
|
||||
companion object {
|
||||
fun ok(): String
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
import bar.Bar
|
||||
|
||||
fun box(): String {
|
||||
return Bar.ok()
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
export const Bar = {
|
||||
ok() { return "OK" }
|
||||
};
|
||||
@@ -0,0 +1,12 @@
|
||||
$kotlin_test_internal$.beginModule();
|
||||
|
||||
module.exports = function() {
|
||||
var { A } = require("main").api
|
||||
|
||||
return {
|
||||
"res": A.ok()
|
||||
};
|
||||
};
|
||||
|
||||
$kotlin_test_internal$.endModule("lib");
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
// MODULE_KIND: COMMON_JS
|
||||
// SKIP_MINIFICATION
|
||||
|
||||
// FILE: api.kt
|
||||
package api
|
||||
|
||||
@JsExport
|
||||
interface A {
|
||||
companion object {
|
||||
fun ok() = "OK"
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
external interface JsResult {
|
||||
val res: String
|
||||
}
|
||||
|
||||
@JsModule("lib")
|
||||
external fun jsBox(): JsResult
|
||||
|
||||
fun box(): String {
|
||||
return jsBox().res
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
define("bar", [], function() {
|
||||
return {
|
||||
Bar: {
|
||||
ok() { return "OK" }
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -0,0 +1,23 @@
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// TARGET_BACKEND: JS_IR_ES6
|
||||
// EXPECTED_REACHABLE_NODES: 1238
|
||||
// MODULE_KIND: AMD
|
||||
// FILE: bar.kt
|
||||
@file:JsModule("bar")
|
||||
package bar
|
||||
|
||||
external interface Bar {
|
||||
companion object {
|
||||
fun ok(): String
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
import bar.Bar
|
||||
|
||||
inline fun Bar.Companion.test() = "CHECK"
|
||||
|
||||
fun box(): String {
|
||||
Bar.test()
|
||||
return Bar.ok()
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// TARGET_BACKEND: JS_IR_ES6
|
||||
// EXPECTED_REACHABLE_NODES: 1238
|
||||
// FILE: bar.kt
|
||||
@file:JsQualifier("bar")
|
||||
package bar
|
||||
|
||||
external interface Bar {
|
||||
companion object {
|
||||
fun ok(): String
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
import bar.Bar
|
||||
|
||||
fun box(): String {
|
||||
return Bar.ok()
|
||||
}
|
||||
|
||||
// FILE: test.js
|
||||
var bar = function() {
|
||||
var Bar = {
|
||||
ok() {
|
||||
return "OK"
|
||||
}
|
||||
};
|
||||
return {
|
||||
Bar: Bar
|
||||
}
|
||||
}();
|
||||
Reference in New Issue
Block a user