Skip to content

Commit f603c0e

Browse files
ligeeSpace Team
authored and
Space Team
committed
Scripting, IR: fix capturing of implicit receiver
#KT-55068 fixed
1 parent 06cbf8f commit f603c0e

File tree

4 files changed

+27
-2
lines changed

4 files changed

+27
-2
lines changed

compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/ScriptLowering.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -442,18 +442,22 @@ private class ScriptToClassTransformer(
442442
transformAnnotations(data)
443443
typeRemapper.withinScope(this) {
444444
val newDispatchReceiverParameter = dispatchReceiverParameter?.transform(data)
445+
val isInScriptConstructor = this@transformFunctionChildren is IrConstructor && parent == irScript
445446
val dataForChildren =
446447
when {
447448
newDispatchReceiverParameter == null -> data
449+
448450
newDispatchReceiverParameter.type == scriptClassReceiver.type ->
449-
ScriptToClassTransformerContext(newDispatchReceiverParameter.symbol, null, null, this is IrConstructor)
451+
ScriptToClassTransformerContext(newDispatchReceiverParameter.symbol, null, null, isInScriptConstructor)
452+
450453
newDispatchReceiverParameter.type == data.valueParameterForFieldReceiver?.owner?.type ->
451454
ScriptToClassTransformerContext(
452455
null,
453456
data.fieldForScriptThis,
454457
newDispatchReceiverParameter.symbol,
455-
this is IrConstructor
458+
isInScriptConstructor
456459
)
460+
457461
else -> data
458462
}
459463
dispatchReceiverParameter = newDispatchReceiverParameter
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM, JVM_OLD
2+
// KOTLIN_SCRIPT_DEFINITION: org.jetbrains.kotlin.codegen.TestScriptWithReceivers
3+
4+
// receiver: abracadabra
5+
// expected: rv=cadabra
6+
7+
// KT-55068
8+
9+
class User(var property: String = drop(4))
10+
11+
val rv = User().property

compiler/tests-gen/org/jetbrains/kotlin/codegen/CustomScriptCodegenTestGenerated.java

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/tests-gen/org/jetbrains/kotlin/codegen/IrCustomScriptCodegenTestGenerated.java

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)