[JVM IR] Properly insert dispatch receiver in ScriptsToClassesLowering
diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/ScriptLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/ScriptLowering.kt
index c473fd2..915749a 100644
--- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/ScriptLowering.kt
+++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/ScriptLowering.kt
@@ -803,7 +803,7 @@
is IrProperty -> callee.getter?.dispatchReceiverParameter?.type
else -> null
}
- expression.dispatchReceiver =
+ val dispatchReceiver =
if (memberAccessTargetReceiverType != null && memberAccessTargetReceiverType != scriptClassReceiver.type)
getAccessCallForImplicitReceiver(
data, expression, memberAccessTargetReceiverType, expression.origin, originalReceiverParameter = null
@@ -812,6 +812,7 @@
getAccessCallForScriptInstance(
data, expression.startOffset, expression.endOffset, expression.origin, originalReceiverParameter = null
)
+ expression.insertDispatchReceiver(dispatchReceiver)
}
return super.visitMemberAccess(expression, data) as IrExpression
}
@@ -835,7 +836,7 @@
?: if (capturingClassesConstructors.keys.any { it.symbol == expression.symbol }) scriptClassReceiver.type else null
if (ctorDispatchReceiverType != null) {
getDispatchReceiverExpression(data, expression, ctorDispatchReceiverType, expression.origin, null)?.let {
- expression.dispatchReceiver = it
+ expression.insertDispatchReceiver(it)
}
}
}