[Scripting] fix receiver substitution in script JVM IR lowering

This commit is contained in:
Ilya Chernikov
2021-05-31 12:19:10 +02:00
committed by teamcityserver
parent a7b94b398a
commit 32b6cfe2ea
2 changed files with 17 additions and 7 deletions
@@ -494,15 +494,10 @@ private class ScriptToClassTransformer(
if (irScript.earlierScripts != null) {
val target = expression.symbol.owner
val receiver: IrValueParameter? = target.dispatchReceiverParameter
if (target.origin == IrDeclarationOrigin.DEFAULT_PROPERTY_ACCESSOR && receiver?.name == Name.special("<this>")) {
if (receiver?.name == Name.special("<this>")) {
val newReceiver = getAccessCallForEarlierScript(expression, receiver.type)
if (newReceiver != null) {
val builder = context.createIrBuilder(expression.symbol)
val newCall = builder.irCall(expression.symbol, target.returnType, origin = expression.origin).also {
it.copyTypeAndValueArgumentsFrom(expression)
it.dispatchReceiver = newReceiver
}
return super.visitCall(newCall)
expression.dispatchReceiver = newReceiver
}
}
}