From 451fa245b83f31d04066ff8a6286ce1aa48f71cd Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Tue, 28 Jan 2020 22:06:04 -0800 Subject: [PATCH] JVM_IR: Change name for (dispatch|extension) receiver of inline class according to naming convention. --- .../inlineclasses/MemoizedInlineClassReplacements.kt | 4 ++-- .../inlineClassMethodParameterNames.kt | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) 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"