diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java index 918ee8edef3..782f7fb5dc8 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java @@ -24744,12 +24744,30 @@ public class LLFirBlackBoxCodegenBasedTestGenerated extends AbstractLLFirBlackBo runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java index b18b0e1256d..08732292f86 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java @@ -24744,12 +24744,30 @@ public class LLFirReversedBlackBoxCodegenBasedTestGenerated extends AbstractLLFi runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java index 4c842b09a52..ef8d472f0c1 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java @@ -24667,12 +24667,30 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithFir2IrFakeOverrideGeneratorTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithFir2IrFakeOverrideGeneratorTestGenerated.java index cc6ec79b479..7b410137d6f 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithFir2IrFakeOverrideGeneratorTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithFir2IrFakeOverrideGeneratorTestGenerated.java @@ -24667,12 +24667,30 @@ public class FirLightTreeBlackBoxCodegenWithFir2IrFakeOverrideGeneratorTestGener runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java index c79446d5879..46ca09015a9 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java @@ -24667,12 +24667,30 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/TailSuspendCallsCollector.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/TailSuspendCallsCollector.kt index 2b98855f353..817e5884dd3 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/TailSuspendCallsCollector.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/TailSuspendCallsCollector.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.ir.types.isUnit import org.jetbrains.kotlin.ir.util.isSuspend import org.jetbrains.kotlin.ir.util.render import org.jetbrains.kotlin.ir.visitors.IrElementVisitor +import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid data class TailSuspendCalls(val callSites: Set, val hasNotTailSuspendCalls: Boolean) @@ -36,6 +37,14 @@ fun collectTailSuspendCalls(context: CommonBackendContext, irFunction: IrSimpleF element.acceptChildren(this, VisitorState(data.insideTryBlock, isTailExpression = false)) } + override fun visitTypeOperator(expression: IrTypeOperatorCall, data: VisitorState) { + if (expression.operator == IrTypeOperator.IMPLICIT_CAST) { + expression.acceptChildren(this, data) + } else { + super.visitTypeOperator(expression, data) + } + } + override fun visitTry(aTry: IrTry, data: VisitorState) { aTry.tryResult.accept(this, VisitorState(insideTryBlock = true, isTailExpression = false)) aTry.catches.forEach { it.result.accept(this, data) } @@ -98,8 +107,12 @@ fun collectTailSuspendCalls(context: CommonBackendContext, irFunction: IrSimpleF expression.acceptChildren(this, VisitorState(data.insideTryBlock, isTailExpression)) } - private fun IrExpression.isUnitRead(): Boolean = - this is IrGetObjectValue && symbol == context.irBuiltIns.unitClass + private fun IrExpression.isUnitRead(): Boolean { + if (this is IrTypeOperatorCall) { + return this.argument.isUnitRead() + } + return this is IrGetObjectValue && symbol == context.irBuiltIns.unitClass + } private fun IrCall.isReturnIfSuspendedCall() = symbol == context.ir.symbols.returnIfSuspended diff --git a/compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt b/compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt new file mode 100644 index 00000000000..56caf996f42 --- /dev/null +++ b/compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt @@ -0,0 +1,15 @@ +class A(val prop: T) + +inline fun A.process(action: (T) -> Unit) { + action(prop) +} + +inline fun acceptInt(p: Int, action: (Int) -> Unit) { + action(p) +} + +fun box(): String { + var x = 0 + A(1).process { acceptInt(it) { p -> x += p } } + return ('N' + x).toString() + "K" +} diff --git a/compiler/testData/codegen/box/inline/kt66017.kt b/compiler/testData/codegen/box/inline/kt66017.kt new file mode 100644 index 00000000000..96018fa97df --- /dev/null +++ b/compiler/testData/codegen/box/inline/kt66017.kt @@ -0,0 +1,10 @@ +// WITH_STDLIB + +fun box(): String { + listOf(1).forEach { size -> + repeat(size) { + return "OK" + } + } + return "Fail" +} diff --git a/compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt b/compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt new file mode 100644 index 00000000000..aefb170b9cb --- /dev/null +++ b/compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt @@ -0,0 +1,20 @@ +// WITH_STDLIB +inline fun Iterable.myForEach(action: (T) -> Unit): Unit { + for (element in this) action(element) +} + +inline fun myRepeat(times: Int, action: (Int) -> Unit) { + for (index in 0 until times) { + action(index) + } +} + + +fun box(): String { + listOf(1).myForEach { size -> + myRepeat(size) { + return "OK" + } + } + return "Fail" +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java index af9f4cf1e8e..632e28649e3 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java @@ -24667,12 +24667,30 @@ public class JvmAbiConsistencyTestBoxGenerated extends AbstractJvmAbiConsistency runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { 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 4af6d546b2f..99a2f9beb4f 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 @@ -23431,6 +23431,24 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { 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 403f457cff8..e0791b133a9 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 @@ -24667,12 +24667,30 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java index 21db76055e4..d9813a65cbd 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java @@ -24667,12 +24667,30 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java index 085ad445e11..00d681eda29 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java @@ -24667,12 +24667,30 @@ public class FirBlackBoxCodegenTestWithInlineScopesGenerated extends AbstractFir runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 71745a679fd..0a368fabbbe 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -20683,11 +20683,26 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java index 03c40395840..0655562a850 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java @@ -18811,12 +18811,30 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java index a8dc0a67161..3dafe7e5e88 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java @@ -18811,12 +18811,30 @@ public class FirJsES6CodegenBoxTestGenerated extends AbstractFirJsES6CodegenBoxT runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java index aa1dda3c5a6..801f7b88fce 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java @@ -18811,12 +18811,30 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java index 20fe16b4b44..12c568c781f 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java @@ -18811,12 +18811,30 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/NativeLoweringPhases.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/NativeLoweringPhases.kt index 8aa8ec847b1..80fca424f37 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/NativeLoweringPhases.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/NativeLoweringPhases.kt @@ -347,7 +347,8 @@ private val inlinePhase = createFileLoweringPhase( FunctionInlining( context.context, NativeInlineFunctionResolver(context.context, context), - alwaysCreateTemporaryVariablesForArguments = context.shouldContainDebugInfo() + alwaysCreateTemporaryVariablesForArguments = true, + insertAdditionalImplicitCasts = true, ).lower(irFile) } } diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VolatileFieldsLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VolatileFieldsLowering.kt index 8779d0bbdff..431ce600a86 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VolatileFieldsLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VolatileFieldsLowering.kt @@ -214,6 +214,7 @@ internal class VolatileFieldsLowering(val context: Context) : FileLoweringPass { expectedReturn == null && expression is IrReturnableBlock -> getConstPropertyReference(expression.singleExpressionOrNull, expression.symbol) expression is IrReturn && expression.returnTargetSymbol == expectedReturn -> getConstPropertyReference(expression.value, null) expression is IrBlock -> getConstPropertyReference(expression.singleExpressionOrNull, expectedReturn) + expression is IrTypeOperatorCall && expression.operator == IrTypeOperator.IMPLICIT_CAST -> getConstPropertyReference(expression.argument, expectedReturn) else -> null } } diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java index 244a72c30e5..002a3f6022a 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java @@ -20100,12 +20100,30 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java index 5342e687b38..2b0e5d3996e 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java @@ -20530,12 +20530,30 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java index 3a91c319eb3..8bcaaf8ac3c 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java @@ -19670,12 +19670,30 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java index d8cf5966ce3..63c5d769a2e 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java @@ -20101,12 +20101,30 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java index 4cfcd0b6fae..b6b14d45166 100644 --- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java +++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java @@ -18841,12 +18841,30 @@ public class FirWasmJsCodegenBoxTestGenerated extends AbstractFirWasmJsCodegenBo runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() { diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java index 59b0c48dc3c..3bc699dd2ae 100644 --- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java +++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java @@ -18841,12 +18841,30 @@ public class K1WasmCodegenBoxTestGenerated extends AbstractK1WasmCodegenBoxTest runTest("compiler/testData/codegen/box/inline/inlineCtor.kt"); } + @Test + @TestMetadata("inlinedLambdaWithErasedParamType.kt") + public void testInlinedLambdaWithErasedParamType() { + runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt"); + } + @Test @TestMetadata("innerInlineFunCapturesOuter.kt") public void testInnerInlineFunCapturesOuter() { runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt"); } + @Test + @TestMetadata("kt66017.kt") + public void testKt66017() { + runTest("compiler/testData/codegen/box/inline/kt66017.kt"); + } + + @Test + @TestMetadata("kt66017_inlineFromTheSameModule.kt") + public void testKt66017_inlineFromTheSameModule() { + runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt"); + } + @Test @TestMetadata("lambdaAsAny.kt") public void testLambdaAsAny() {