[JS IR BE] Fix: patch parents problems
* Patch parents for state machine builder * Patch parents for declarations inside default value of actual parameter
This commit is contained in:
+3
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.ir.expressions.IrGetValue
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
|
||||
import org.jetbrains.kotlin.ir.util.patchDeclarationParents
|
||||
import org.jetbrains.kotlin.ir.util.referenceFunction
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||
@@ -74,6 +75,8 @@ class ExpectDeclarationsRemoving(val context: BackendContext) : FileLoweringPass
|
||||
|
||||
actualParameter.defaultValue = defaultValue.also {
|
||||
it.expression = it.expression.remapExpectValueSymbols()
|
||||
// Default value might have some declarations inside. Patching parents.
|
||||
it.expression.patchDeclarationParents(actualParameter.parent)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
+3
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
|
||||
import org.jetbrains.kotlin.ir.util.explicitParameters
|
||||
import org.jetbrains.kotlin.ir.util.patchDeclarationParents
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -140,6 +141,8 @@ class JsSuspendFunctionsLowering(ctx: JsIrBackendContext) : AbstractSuspendFunct
|
||||
IrBlockBodyImpl(stateMachineFunction.startOffset, stateMachineFunction.endOffset, listOf(suspendResult, rootLoop))
|
||||
|
||||
stateMachineFunction.body = functionBody
|
||||
// TODO: Investigate parent problems
|
||||
stateMachineFunction.patchDeclarationParents(stateMachineFunction.parent)
|
||||
|
||||
val liveLocals = computeLivenessAtSuspensionPoints(functionBody).values.flatten().toSet()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user