JVM_IR: Change name for (dispatch|extension) receiver of inline class according to naming convention.

This commit is contained in:
Jinseong Jeon
2020-01-28 22:06:04 -08:00
committed by Alexander Udalov
parent 19b516cbf4
commit 451fa245b8
2 changed files with 8 additions and 8 deletions
@@ -178,8 +178,8 @@ class MemoizedInlineClassReplacements {
for ((index, parameter) in function.explicitParameters.withIndex()) { for ((index, parameter) in function.explicitParameters.withIndex()) {
val name = when (parameter) { val name = when (parameter) {
function.dispatchReceiverParameter -> Name.identifier("\$this") function.dispatchReceiverParameter -> Name.identifier("arg$index")
function.extensionReceiverParameter -> Name.identifier("\$receiver") function.extensionReceiverParameter -> Name.identifier("\$this\$${function.name}")
else -> parameter.name else -> parameter.name
} }
val parameterOrigin = when (parameter) { val parameterOrigin = when (parameter) {
@@ -1,5 +1,4 @@
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// SKIP_JDK6 // SKIP_JDK6
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// WITH_RUNTIME // WITH_RUNTIME
@@ -9,19 +8,20 @@
// FILE: A.kt // FILE: A.kt
inline class A(val i: Int) { 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 { 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() val parameters = method.getParameters()
if (parameters[0].name != "arg0") return "wrong name on receiver parameter: ${parameters[0].name}" 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() 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 "wrong name on extension receiver parameter: ${extensionMethodParameters[0].name}"
return "OK" return "OK"