diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java index 71e8514458a..68078bd2f2a 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java @@ -3880,6 +3880,11 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest { runTest("js/js.translator/testData/box/inline/fakeOverrideInlining.kt"); } + @TestMetadata("fakeOverrideInliningCrossModule.kt") + public void testFakeOverrideInliningCrossModule() throws Exception { + runTest("js/js.translator/testData/box/inline/fakeOverrideInliningCrossModule.kt"); + } + @TestMetadata("faultyRedundantCallElimination.kt") public void testFaultyRedundantCallElimination() throws Exception { runTest("js/js.translator/testData/box/inline/faultyRedundantCallElimination.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrBoxJsTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrBoxJsTestGenerated.java index c881615ce19..b7051ddb64b 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrBoxJsTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrBoxJsTestGenerated.java @@ -3880,6 +3880,11 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest { runTest("js/js.translator/testData/box/inline/fakeOverrideInlining.kt"); } + @TestMetadata("fakeOverrideInliningCrossModule.kt") + public void testFakeOverrideInliningCrossModule() throws Exception { + runTest("js/js.translator/testData/box/inline/fakeOverrideInliningCrossModule.kt"); + } + @TestMetadata("faultyRedundantCallElimination.kt") public void testFaultyRedundantCallElimination() throws Exception { runTest("js/js.translator/testData/box/inline/faultyRedundantCallElimination.kt"); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/Merger.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/Merger.kt index 049799c3acd..ab92d65bdc7 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/Merger.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/Merger.kt @@ -218,6 +218,8 @@ class Merger( } } + // TODO consider using metadata to determine current-module fake override statements + // The approach could be similar to JsName.alias which is used to avoid re-importing current module declarations private fun JsStatement?.isFakeOverrideAssignment(): Boolean { fun JsExpression?.isMemberReference(): Boolean { val qualifier = (this as? JsNameRef)?.qualifier as? JsNameRef ?: return false diff --git a/js/js.translator/testData/box/inline/fakeOverrideInliningCrossModule.kt b/js/js.translator/testData/box/inline/fakeOverrideInliningCrossModule.kt new file mode 100644 index 00000000000..4de6b91326a --- /dev/null +++ b/js/js.translator/testData/box/inline/fakeOverrideInliningCrossModule.kt @@ -0,0 +1,21 @@ +// EXPECTED_REACHABLE_NODES: 1300 +// MODULE: libA +// FILE: libA.kt +inline fun foo() = (object : II {}).ok() + +interface I { + fun ok() = "OK" +} + +interface II: I + +// MODULE: libB(libA) +// FILE: libB.kt + +inline fun bar() = foo() + +// MODULE: main(libB) +// FILE: main.kt +fun box() = bar() + +