Add outer object to stack when interpreting constructor of inner class

This commit is contained in:
Ivan Kylchik
2020-09-02 18:56:26 +03:00
committed by TeamCityServer
parent b570d3f7fd
commit a9d686b9f9
@@ -398,6 +398,10 @@ class IrInterpreter(private val irBuiltIns: IrBuiltIns, private val bodyMap: Map
if (irClass.isInner) {
constructorCall.dispatchReceiver!!.interpret().check { return it }
state.outerClass = Variable(irClass.parentAsClass.thisReceiver!!.symbol, stack.popReturnValue())
// used in case when inner class has inner super class
valueArguments.add(Variable(owner.dispatchReceiverParameter!!.symbol, state.outerClass!!.state))
// used to get information from outer class
valueArguments.add(state.outerClass!!)
}
valueArguments.add(Variable(irClass.thisReceiver!!.symbol, state)) //used to set up fields in body
return stack.newFrame(initPool = valueArguments + state.typeArguments) {