diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index cbb63b930f1..08a730211ba 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -12078,6 +12078,24 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/defaultArguments/inheritedFromInterfaceViaAbstractSuperclass.kt"); } + @Test + @TestMetadata("kt36853.kt") + public void testKt36853() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853.kt"); + } + + @Test + @TestMetadata("kt36853_nestedObject.kt") + public void testKt36853_nestedObject() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853_nestedObject.kt"); + } + + @Test + @TestMetadata("kt36853a.kt") + public void testKt36853a() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853a.kt"); + } + @Test @TestMetadata("kt36972_companion.kt") public void testKt36972_companion() throws Exception { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt index 82b54f47841..52348a947ee 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt @@ -344,6 +344,7 @@ private val jvmFilePhases = listOf( remapObjectFieldAccesses, anonymousObjectSuperConstructorPhase, tailrecPhase, + makePatchParentsPhase(1), jvmStandardLibraryBuiltInsPhase, @@ -352,7 +353,7 @@ private val jvmFilePhases = listOf( collectionStubMethodLowering, jvmInlineClassPhase, - makePatchParentsPhase(1), + makePatchParentsPhase(2), enumWhenPhase, singletonReferencesPhase, @@ -390,7 +391,7 @@ private val jvmFilePhases = listOf( innerClassesMemberBodyPhase, innerClassConstructorCallsPhase, - makePatchParentsPhase(2), + makePatchParentsPhase(3), enumClassPhase, objectClassPhase, @@ -415,7 +416,7 @@ private val jvmFilePhases = listOf( renameFieldsPhase, fakeInliningLocalVariablesLowering, - makePatchParentsPhase(3) + makePatchParentsPhase(4) ) private val jvmLoweringPhases = NamedCompilerPhase( diff --git a/compiler/testData/codegen/box/defaultArguments/kt36853.kt b/compiler/testData/codegen/box/defaultArguments/kt36853.kt new file mode 100644 index 00000000000..464cf736792 --- /dev/null +++ b/compiler/testData/codegen/box/defaultArguments/kt36853.kt @@ -0,0 +1,19 @@ +// IGNORE_BACKEND: JS_IR, WASM + +interface IFoo { + fun foo(): String +} + +tailrec fun tailrecDefault( + fake: Int, + x: IFoo = object : IFoo { + override fun foo(): String = "OK" + } +): String { + return if (fake == 0) + tailrecDefault(1) + else + x.foo() +} + +fun box(): String = tailrecDefault(0) diff --git a/compiler/testData/codegen/box/defaultArguments/kt36853_nestedObject.kt b/compiler/testData/codegen/box/defaultArguments/kt36853_nestedObject.kt new file mode 100644 index 00000000000..bfb2e57260a --- /dev/null +++ b/compiler/testData/codegen/box/defaultArguments/kt36853_nestedObject.kt @@ -0,0 +1,33 @@ +// IGNORE_BACKEND: JS_IR, WASM + +interface IFoo { + fun foo(): String +} + +tailrec fun tailrecDefault( + fake: Int, + x: IFoo = object : IFoo { + tailrec fun tailrecDefaultNested( + b: Boolean, + y: IFoo = object: IFoo { + override fun foo() = "OK" + } + ): String { + return if (b) + tailrecDefaultNested(false) + else + y.foo() + } + + override fun foo(): String { + return tailrecDefaultNested(true) + } + } +): String { + return if (fake == 0) + tailrecDefault(1) + else + x.foo() +} + +fun box(): String = tailrecDefault(0) diff --git a/compiler/testData/codegen/box/defaultArguments/kt36853a.kt b/compiler/testData/codegen/box/defaultArguments/kt36853a.kt new file mode 100644 index 00000000000..ccf8259fac3 --- /dev/null +++ b/compiler/testData/codegen/box/defaultArguments/kt36853a.kt @@ -0,0 +1,10 @@ +// IGNORE_BACKEND: JS_IR + +tailrec fun tailrecDefault(fake: Int, fn: () -> String = { "OK" }): String { + return if (fake == 0) + tailrecDefault(1) + else + fn() +} + +fun box(): String = tailrecDefault(0) diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index 5de0698a2a1..353800037c0 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -12078,6 +12078,24 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/defaultArguments/inheritedFromInterfaceViaAbstractSuperclass.kt"); } + @Test + @TestMetadata("kt36853.kt") + public void testKt36853() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853.kt"); + } + + @Test + @TestMetadata("kt36853_nestedObject.kt") + public void testKt36853_nestedObject() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853_nestedObject.kt"); + } + + @Test + @TestMetadata("kt36853a.kt") + public void testKt36853a() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853a.kt"); + } + @Test @TestMetadata("kt36972_companion.kt") public void testKt36972_companion() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 0a1909a3219..fd088e205e0 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -12078,6 +12078,24 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/defaultArguments/inheritedFromInterfaceViaAbstractSuperclass.kt"); } + @Test + @TestMetadata("kt36853.kt") + public void testKt36853() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853.kt"); + } + + @Test + @TestMetadata("kt36853_nestedObject.kt") + public void testKt36853_nestedObject() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853_nestedObject.kt"); + } + + @Test + @TestMetadata("kt36853a.kt") + public void testKt36853a() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853a.kt"); + } + @Test @TestMetadata("kt36972_companion.kt") public void testKt36972_companion() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index d77278c26d4..44e26173c3c 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -9803,6 +9803,21 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/defaultArguments/inheritedFromInterfaceViaAbstractSuperclass.kt"); } + @TestMetadata("kt36853.kt") + public void testKt36853() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853.kt"); + } + + @TestMetadata("kt36853_nestedObject.kt") + public void testKt36853_nestedObject() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853_nestedObject.kt"); + } + + @TestMetadata("kt36853a.kt") + public void testKt36853a() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853a.kt"); + } + @TestMetadata("kt36972_companion.kt") public void testKt36972_companion() throws Exception { runTest("compiler/testData/codegen/box/defaultArguments/kt36972_companion.kt"); @@ -15548,6 +15563,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/inlineClasses/funInterface/argumentResult.kt"); } + @TestMetadata("returnIC.kt") + public void ignoreReturnIC() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/funInterface/returnIC.kt"); + } + @TestMetadata("returnResult.kt") public void ignoreReturnResult() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/funInterface/returnResult.kt"); @@ -15575,11 +15595,6 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes public void testJavaSamReturnResult() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/funInterface/javaSamReturnResult.kt"); } - - @TestMetadata("returnIC.kt") - public void testReturnIC() throws Exception { - runTest("compiler/testData/codegen/box/inlineClasses/funInterface/returnIC.kt"); - } } @TestMetadata("compiler/testData/codegen/box/inlineClasses/functionNameMangling") diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java index 067e7ac0a2f..58ec2735fed 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java @@ -8726,6 +8726,21 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/defaultArguments/inheritedFromInterfaceViaAbstractSuperclass.kt"); } + @TestMetadata("kt36853.kt") + public void testKt36853() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853.kt"); + } + + @TestMetadata("kt36853_nestedObject.kt") + public void testKt36853_nestedObject() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853_nestedObject.kt"); + } + + @TestMetadata("kt36853a.kt") + public void testKt36853a() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853a.kt"); + } + @TestMetadata("kt6382.kt") public void testKt6382() throws Exception { runTest("compiler/testData/codegen/box/defaultArguments/kt6382.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index 199478175a4..92bbcd047cc 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -8183,6 +8183,21 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/defaultArguments/inheritedFromInterfaceViaAbstractSuperclass.kt"); } + @TestMetadata("kt36853.kt") + public void testKt36853() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853.kt"); + } + + @TestMetadata("kt36853_nestedObject.kt") + public void testKt36853_nestedObject() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853_nestedObject.kt"); + } + + @TestMetadata("kt36853a.kt") + public void testKt36853a() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853a.kt"); + } + @TestMetadata("kt6382.kt") public void testKt6382() throws Exception { runTest("compiler/testData/codegen/box/defaultArguments/kt6382.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index 065703803c1..c74644cb185 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -8183,6 +8183,21 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/defaultArguments/inheritedFromInterfaceViaAbstractSuperclass.kt"); } + @TestMetadata("kt36853.kt") + public void testKt36853() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853.kt"); + } + + @TestMetadata("kt36853_nestedObject.kt") + public void testKt36853_nestedObject() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853_nestedObject.kt"); + } + + @TestMetadata("kt36853a.kt") + public void testKt36853a() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853a.kt"); + } + @TestMetadata("kt6382.kt") public void testKt6382() throws Exception { runTest("compiler/testData/codegen/box/defaultArguments/kt6382.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java index 9f610bc7e35..0ea67c9e4e0 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java @@ -3884,6 +3884,21 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest runTest("compiler/testData/codegen/box/defaultArguments/inheritedFromInterfaceViaAbstractSuperclass.kt"); } + @TestMetadata("kt36853.kt") + public void testKt36853() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853.kt"); + } + + @TestMetadata("kt36853_nestedObject.kt") + public void testKt36853_nestedObject() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853_nestedObject.kt"); + } + + @TestMetadata("kt36853a.kt") + public void testKt36853a() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/kt36853a.kt"); + } + @TestMetadata("kt6382.kt") public void testKt6382() throws Exception { runTest("compiler/testData/codegen/box/defaultArguments/kt6382.kt");