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 63619edb647..fa5f3821021 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 @@ -18606,6 +18606,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/inlineClasses/fieldNameClash.kt"); } + @Test + @TestMetadata("functionExpression.kt") + public void testFunctionExpression() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/functionExpression.kt"); + } + @Test @TestMetadata("genericInlineClassSynthMembers.kt") public void testGenericInlineClassSynthMembers() throws Exception { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/inlineclasses/MemoizedInlineClassReplacements.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/inlineclasses/MemoizedInlineClassReplacements.kt index 1c9b9acf730..fb03018cd91 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/inlineclasses/MemoizedInlineClassReplacements.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/inlineclasses/MemoizedInlineClassReplacements.kt @@ -57,11 +57,10 @@ class MemoizedInlineClassReplacements( storageManager.createMemoizedFunctionWithNullableValues { when { // Don't mangle anonymous or synthetic functions - it.origin == IrDeclarationOrigin.LOCAL_FUNCTION_FOR_LAMBDA || + (it.isLocal && it is IrSimpleFunction && it.overriddenSymbols.isEmpty()) || (it.origin == IrDeclarationOrigin.DELEGATED_PROPERTY_ACCESSOR && it.visibility == DescriptorVisibilities.LOCAL) || it.isStaticInlineClassReplacement || - it.origin.isSynthetic || - it.origin == IrDeclarationOrigin.ADAPTER_FOR_CALLABLE_REFERENCE -> + it.origin.isSynthetic -> null it.isInlineClassFieldGetter -> diff --git a/compiler/testData/codegen/box/inlineClasses/functionExpression.kt b/compiler/testData/codegen/box/inlineClasses/functionExpression.kt new file mode 100644 index 00000000000..7c25bf4f986 --- /dev/null +++ b/compiler/testData/codegen/box/inlineClasses/functionExpression.kt @@ -0,0 +1,6 @@ +inline fun new(init: (Z) -> Unit): Z = Z(42) + +inline class Z(val value: Int) + +fun box(): String = + if (new(fun(z: Z) {}).value == 42) "OK" else "Fail" 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 6c63d0e1da8..c53e030adbf 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 @@ -18474,6 +18474,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/inlineClasses/fieldNameClash.kt"); } + @Test + @TestMetadata("functionExpression.kt") + public void testFunctionExpression() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/functionExpression.kt"); + } + @Test @TestMetadata("genericInlineClassSynthMembers.kt") public void testGenericInlineClassSynthMembers() 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 1d6bdb3ae02..a4f7bb0060a 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 @@ -18606,6 +18606,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/inlineClasses/fieldNameClash.kt"); } + @Test + @TestMetadata("functionExpression.kt") + public void testFunctionExpression() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/functionExpression.kt"); + } + @Test @TestMetadata("genericInlineClassSynthMembers.kt") public void testGenericInlineClassSynthMembers() 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 9d7b8fb78f7..125aa5f894b 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -15364,6 +15364,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/inlineClasses/fieldNameClash.kt"); } + @TestMetadata("functionExpression.kt") + public void testFunctionExpression() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/functionExpression.kt"); + } + @TestMetadata("genericInlineClassSynthMembers.kt") public void testGenericInlineClassSynthMembers() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/genericInlineClassSynthMembers.kt"); 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 fac73c8d67b..04825cc2336 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 @@ -13383,6 +13383,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/inlineClasses/fieldNameClash.kt"); } + @TestMetadata("functionExpression.kt") + public void testFunctionExpression() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/functionExpression.kt"); + } + @TestMetadata("genericInlineClassSynthMembers.kt") public void testGenericInlineClassSynthMembers() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/genericInlineClassSynthMembers.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 d03c2b67a21..dba2bb7227e 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 @@ -12789,6 +12789,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inlineClasses/fieldNameClash.kt"); } + @TestMetadata("functionExpression.kt") + public void testFunctionExpression() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/functionExpression.kt"); + } + @TestMetadata("genericInlineClassSynthMembers.kt") public void testGenericInlineClassSynthMembers() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/genericInlineClassSynthMembers.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 6352440e8b8..d7de67abab0 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 @@ -12854,6 +12854,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inlineClasses/fieldNameClash.kt"); } + @TestMetadata("functionExpression.kt") + public void testFunctionExpression() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/functionExpression.kt"); + } + @TestMetadata("genericInlineClassSynthMembers.kt") public void testGenericInlineClassSynthMembers() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/genericInlineClassSynthMembers.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 e74b2a51654..89f7738b314 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 @@ -6899,6 +6899,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest runTest("compiler/testData/codegen/box/inlineClasses/fieldNameClash.kt"); } + @TestMetadata("functionExpression.kt") + public void testFunctionExpression() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/functionExpression.kt"); + } + @TestMetadata("genericInlineClassSynthMembers.kt") public void testGenericInlineClassSynthMembers() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/genericInlineClassSynthMembers.kt");