diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBytecodeTextTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBytecodeTextTestGenerated.java index c4bd88a01fa..d04eae38ee9 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBytecodeTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBytecodeTextTestGenerated.java @@ -4267,6 +4267,12 @@ public class FirBytecodeTextTestGenerated extends AbstractFirBytecodeTextTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/bytecodeText/invokedynamic"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test + @TestMetadata("extensionReceiversNames.kt") + public void testExtensionReceiversNames() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/invokedynamic/extensionReceiversNames.kt"); + } + @Test @TestMetadata("functionRefToJavaInterface.kt") public void testFunctionRefToJavaInterface() throws Exception { diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt index 864fbe482ff..f38aaeb78dd 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt @@ -446,7 +446,7 @@ internal class LambdaMetafactoryArgumentsBuilder( var newParameterIndex = 0 newValueParameters.add( - oldExtensionReceiver.copy(lambda, newParameterIndex++, Name.identifier("\$receiver")).also { + oldExtensionReceiver.copy(lambda, newParameterIndex++, oldExtensionReceiver.name).also { oldToNew[oldExtensionReceiver] = it } ) diff --git a/compiler/testData/codegen/bytecodeText/invokedynamic/extensionReceiversNames.kt b/compiler/testData/codegen/bytecodeText/invokedynamic/extensionReceiversNames.kt new file mode 100644 index 00000000000..312405bc5c8 --- /dev/null +++ b/compiler/testData/codegen/bytecodeText/invokedynamic/extensionReceiversNames.kt @@ -0,0 +1,28 @@ +// LANGUAGE: +LightweightLambdas +// TARGET_BACKEND: JVM_IR + +fun block(t: T, f: T.() -> Unit) { + f.invoke(t) +} + +fun test() { + block("first") place1@ { + block("second") place2@ { + // Breakpoint here + this@place1 + this@place2 + } + } +} + +// JVM_IR_TEMPLATES +// 2 INVOKEDYNAMIC +// 0 receiver +// 5 LOCALVARIABLE +// 1 LOCALVARIABLE \$this\$place1 +// 1 LOCALVARIABLE \$this\$place2 +// 1 LOCALVARIABLE t +// 1 LOCALVARIABLE f +// 1 LOCALVARIABLE \$this_place1 +// 1 LDC "\$this\$place1" +// 1 LDC "\$this\$place2" diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeTextTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeTextTestGenerated.java index 8050b901bc0..baa71aa5c39 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeTextTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeTextTestGenerated.java @@ -4267,6 +4267,12 @@ public class IrBytecodeTextTestGenerated extends AbstractIrBytecodeTextTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/bytecodeText/invokedynamic"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test + @TestMetadata("extensionReceiversNames.kt") + public void testExtensionReceiversNames() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/invokedynamic/extensionReceiversNames.kt"); + } + @Test @TestMetadata("functionRefToJavaInterface.kt") public void testFunctionRefToJavaInterface() throws Exception {