IR: Fixed bug with dispatch receiver parameter

When building dispatch receiver for newly created functions
take ReceiverParameter from the parent class rather than create new
This commit is contained in:
Igor Chevdar
2019-01-14 18:42:18 +03:00
parent 22f77134b0
commit 6220291ef8
@@ -211,11 +211,10 @@ fun IrClass.createParameterDeclarations() {
fun IrFunction.createDispatchReceiverParameter(origin: IrDeclarationOrigin? = null) { fun IrFunction.createDispatchReceiverParameter(origin: IrDeclarationOrigin? = null) {
assert(dispatchReceiverParameter == null) assert(dispatchReceiverParameter == null)
dispatchReceiverParameter = WrappedReceiverParameterDescriptor().let { dispatchReceiverParameter = IrValueParameterImpl(
IrValueParameterImpl(
startOffset, endOffset, startOffset, endOffset,
origin ?: parentAsClass.origin, origin ?: parentAsClass.origin,
IrValueParameterSymbolImpl(it), IrValueParameterSymbolImpl(parentAsClass.thisReceiver!!.descriptor),
Name.special("<this>"), Name.special("<this>"),
0, 0,
parentAsClass.defaultType, parentAsClass.defaultType,
@@ -223,10 +222,8 @@ fun IrFunction.createDispatchReceiverParameter(origin: IrDeclarationOrigin? = nu
false, false,
false false
).apply { ).apply {
it.bind(this)
parent = this@createDispatchReceiverParameter parent = this@createDispatchReceiverParameter
} }
}
} }
fun IrClass.addFakeOverrides() { fun IrClass.addFakeOverrides() {