JVM_IR: Change name for (dispatch|extension) receiver of inline class according to naming convention.
This commit is contained in:
committed by
Alexander Udalov
parent
19b516cbf4
commit
451fa245b8
+2
-2
@@ -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) {
|
||||||
|
|||||||
+6
-6
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user