blob: 88480f177a32623bbb69dba4db1fbc41fc0130c1 [file]
// TARGET_BACKEND: JS_IR, JS_IR_ES6
// LANGUAGE: +MultiPlatformProjects
// MODULE: lib-common
// FILE: lib-common.kt
expect open class PotentiallyRegularClass() {
fun foo(): String
}
expect open class PotentiallyExternalClass() {
fun bar(): String
}
class Parent {
class FirstNested : PotentiallyRegularClass()
class SecondNested : PotentiallyExternalClass()
}
// MODULE: lib-platform()()(lib-common)
// FILE: lib-platform.kt
actual open class PotentiallyRegularClass {
actual fun foo(): String = "Just A Regular Class"
}
actual external open class PotentiallyExternalClass {
actual fun bar(): String
}
// FILE: PotentiallyExternalClass.js
function PotentiallyExternalClass() {}
PotentiallyExternalClass.prototype.bar = function () {
return "External Class";
};
// MODULE: app-platform(lib-platform)()()
// FILE: app-platform.kt
fun box(): String {
val firstNested = Parent.FirstNested()
if (firstNested.foo() != "Just A Regular Class") return "Fail: foo is called wrongly"
val secondNested = Parent.SecondNested()
if (secondNested.bar() != "External Class") return "Fail: bar is called wrongly"
return "OK"
}