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 26ba83bde63..c7c14ea253c 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 @@ -15288,6 +15288,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/extensionProperties/inClassWithSetter.kt"); } + @Test + @TestMetadata("kt46952.kt") + public void testKt46952() throws Exception { + runTest("compiler/testData/codegen/box/extensionProperties/kt46952.kt"); + } + @Test @TestMetadata("kt9897.kt") public void testKt9897() throws Exception { diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt index 29b2aa3cee0..1d2e219acac 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt @@ -785,9 +785,6 @@ class LocalDeclarationsLowering( } } - private fun Name.stripSpecialMarkers(): String = - if (isSpecial) asString().substring(1, asString().length - 1) else asString() - private fun suggestNameForCapturedValue(declaration: IrValueDeclaration, usedNames: MutableSet, isExplicitLocalFunction: Boolean = false): Name { if (declaration is IrValueParameter) { if (declaration.name.asString() == "" && declaration.isDispatchReceiver()) { @@ -808,7 +805,7 @@ class LocalDeclarationsLowering( } val base = if (declaration.name.isSpecial) { - declaration.name.stripSpecialMarkers() + declaration.name.asStringStripSpecialMarkers() } else { declaration.name.asString() } @@ -859,9 +856,9 @@ class LocalDeclarationsLowering( val correspondingProperty = parentFun.safeAs()?.correspondingPropertySymbol?.owner return when { correspondingProperty != null -> - correspondingProperty.name.stripSpecialMarkers() + correspondingProperty.name.asStringStripSpecialMarkers() else -> - parentFun.name.stripSpecialMarkers() + parentFun.name.asStringStripSpecialMarkers() } } 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 725f6347302..c515e4d2de5 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 @@ -206,8 +206,11 @@ class MemoizedInlineClassReplacements( ) } function.extensionReceiverParameter?.let { + val baseName = + (function as? IrSimpleFunction)?.correspondingPropertySymbol?.owner?.name?.asStringStripSpecialMarkers() + ?: function.name newValueParameters += it.copyTo( - this, index = newValueParameters.size, name = Name.identifier("\$this\$${function.name}"), + this, index = newValueParameters.size, name = Name.identifier("\$this\$$baseName"), origin = IrDeclarationOrigin.MOVED_EXTENSION_RECEIVER ) } diff --git a/compiler/testData/codegen/box/extensionProperties/kt46952.kt b/compiler/testData/codegen/box/extensionProperties/kt46952.kt new file mode 100644 index 00000000000..209ea660dc3 --- /dev/null +++ b/compiler/testData/codegen/box/extensionProperties/kt46952.kt @@ -0,0 +1,8 @@ +inline class C(val s: String) + +fun f(g: () -> C): C = g() + +val C.foo: C + get() = f { this } + +fun box() = C("OK").foo.s 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 4ba9987f9b3..98767038719 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 @@ -15288,6 +15288,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/extensionProperties/inClassWithSetter.kt"); } + @Test + @TestMetadata("kt46952.kt") + public void testKt46952() throws Exception { + runTest("compiler/testData/codegen/box/extensionProperties/kt46952.kt"); + } + @Test @TestMetadata("kt9897.kt") public void testKt9897() 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 661b41a3f9a..f4b8e7f1590 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 @@ -15288,6 +15288,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/extensionProperties/inClassWithSetter.kt"); } + @Test + @TestMetadata("kt46952.kt") + public void testKt46952() throws Exception { + runTest("compiler/testData/codegen/box/extensionProperties/kt46952.kt"); + } + @Test @TestMetadata("kt9897.kt") public void testKt9897() 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 936133e31dd..86da0f80cdb 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -12552,6 +12552,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/extensionProperties/inClassWithSetter.kt"); } + @TestMetadata("kt46952.kt") + public void testKt46952() throws Exception { + runTest("compiler/testData/codegen/box/extensionProperties/kt46952.kt"); + } + @TestMetadata("kt9897.kt") public void testKt9897() throws Exception { runTest("compiler/testData/codegen/box/extensionProperties/kt9897.kt"); diff --git a/core/compiler.common/src/org/jetbrains/kotlin/name/Name.java b/core/compiler.common/src/org/jetbrains/kotlin/name/Name.java index 17146e6f129..a98032b1f62 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/name/Name.java +++ b/core/compiler.common/src/org/jetbrains/kotlin/name/Name.java @@ -46,6 +46,12 @@ public final class Name implements Comparable { return special; } + @NotNull + public String asStringStripSpecialMarkers() { + if (isSpecial()) return asString().substring(1, asString().length() - 1); + return asString(); + } + @Override public int compareTo(Name that) { return this.name.compareTo(that.name); 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 bd5a4d0a625..3315fc849ec 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 @@ -11141,6 +11141,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/extensionProperties/inClassWithSetter.kt"); } + @TestMetadata("kt46952.kt") + public void testKt46952() throws Exception { + runTest("compiler/testData/codegen/box/extensionProperties/kt46952.kt"); + } + @TestMetadata("kt9897.kt") public void testKt9897() throws Exception { runTest("compiler/testData/codegen/box/extensionProperties/kt9897.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 992109e33ef..0d769fdc624 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 @@ -10547,6 +10547,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/extensionProperties/inClassWithSetter.kt"); } + @TestMetadata("kt46952.kt") + public void testKt46952() throws Exception { + runTest("compiler/testData/codegen/box/extensionProperties/kt46952.kt"); + } + @TestMetadata("kt9897.kt") public void testKt9897() throws Exception { runTest("compiler/testData/codegen/box/extensionProperties/kt9897.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 7abb91bb6ba..e1feb59946a 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 @@ -10547,6 +10547,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/extensionProperties/inClassWithSetter.kt"); } + @TestMetadata("kt46952.kt") + public void testKt46952() throws Exception { + runTest("compiler/testData/codegen/box/extensionProperties/kt46952.kt"); + } + @TestMetadata("kt9897.kt") public void testKt9897() throws Exception { runTest("compiler/testData/codegen/box/extensionProperties/kt9897.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 d8154cf2c67..084f7ebaa64 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 @@ -5340,6 +5340,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest runTest("compiler/testData/codegen/box/extensionProperties/inClassWithSetter.kt"); } + @TestMetadata("kt46952.kt") + public void testKt46952() throws Exception { + runTest("compiler/testData/codegen/box/extensionProperties/kt46952.kt"); + } + @TestMetadata("kt9897.kt") public void testKt9897() throws Exception { runTest("compiler/testData/codegen/box/extensionProperties/kt9897.kt");