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 49b45cfc132..90e632f204c 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 @@ -178,8 +178,8 @@ class MemoizedInlineClassReplacements { for ((index, parameter) in function.explicitParameters.withIndex()) { val name = when (parameter) { - function.dispatchReceiverParameter -> Name.identifier("\$this") - function.extensionReceiverParameter -> Name.identifier("\$receiver") + function.dispatchReceiverParameter -> Name.identifier("arg$index") + function.extensionReceiverParameter -> Name.identifier("\$this\$${function.name}") else -> parameter.name } val parameterOrigin = when (parameter) { diff --git a/compiler/testData/codegen/box/parametersMetadata/inlineClassMethodParameterNames.kt b/compiler/testData/codegen/box/parametersMetadata/inlineClassMethodParameterNames.kt index d98a66dd97e..6310b7f431a 100644 --- a/compiler/testData/codegen/box/parametersMetadata/inlineClassMethodParameterNames.kt +++ b/compiler/testData/codegen/box/parametersMetadata/inlineClassMethodParameterNames.kt @@ -1,5 +1,4 @@ // IGNORE_BACKEND_FIR: JVM_IR -// IGNORE_BACKEND: JVM_IR // SKIP_JDK6 // TARGET_BACKEND: JVM // WITH_RUNTIME @@ -9,19 +8,20 @@ // FILE: A.kt inline class A(val i: Int) { - fun f() = i + fun foo(v: Int) = i + v } -fun A.extension() = this.i +fun A.bar() = this.i fun box(): String { - val method = Class.forName("A").declaredMethods.single { it.name == "f-impl" } + val method = Class.forName("A").declaredMethods.single { it.name == "foo-impl" } val parameters = method.getParameters() if (parameters[0].name != "arg0") return "wrong name on receiver parameter: ${parameters[0].name}" + if (parameters[1].name != "v") return "wrong name on actual parameter: ${parameters[1].name}" - val extensionMethod = Class.forName("AKt").declaredMethods.single { it.name.contains("extension") } + val extensionMethod = Class.forName("AKt").declaredMethods.single { it.name.startsWith("bar") } val extensionMethodParameters = extensionMethod.getParameters() - if (extensionMethodParameters[0].name != "\$this\$extension") + if (extensionMethodParameters[0].name != "\$this\$bar") return "wrong name on extension receiver parameter: ${extensionMethodParameters[0].name}" return "OK"