Javier
04/14/2024, 11:25 AMit
value parameter being used in its body.
foo.increase {
it + 42
}
I want to create a different lambda, and replace increase
with it, but reusing its body
foo.newLambda {
it + 42
}
The problem is the it
is not in the mapper so it fails. Indeed I got issues related to the parent in the IrReturn
when I tested it without using it
and I did the next workaround:
this.body = declarationIrBuilder(this).irBlockBody {
for (original in originalStatements) {
val statement: IrStatement =
if (original is IrReturn) irReturn(original.value)
else original
+statement
}
}
Is there a simple way to just copy the body
an map the parent and the value parameters? I tried deepCopyWithSymbols
and indicating a parent but it did not work.Javier
04/14/2024, 11:34 AMbody
I am copying the whole function and it worksJavier
04/14/2024, 11:34 AMval expressionLambdaFunction: IrSimpleFunction =
expressionLambda?.deepCopyWithSymbols(updateCallParent)?.function