IrDelegatingConstructorCall should have substituted descriptor

This commit is contained in:
Dmitry Petrov
2017-04-21 12:10:38 +03:00
parent 6e79709ef1
commit 6f2c8140cf
5 changed files with 13 additions and 4 deletions
@@ -239,6 +239,7 @@ class BodyGenerator(
IrDelegatingConstructorCallImpl(
ktElement.startOffset, ktElement.endOffset,
context.symbolTable.referenceConstructor(anyConstructor),
anyConstructor,
null
)
)
@@ -103,7 +103,7 @@ class CallGenerator(statementGenerator: StatementGenerator): StatementGeneratorE
val descriptor = call.descriptor as? ClassConstructorDescriptor
?: throw AssertionError("Class constructor expected: ${call.descriptor}")
val constructorSymbol = context.symbolTable.referenceConstructor(descriptor.original)
val irCall = IrDelegatingConstructorCallImpl(startOffset, endOffset, constructorSymbol, getTypeArguments(call.original))
val irCall = IrDelegatingConstructorCallImpl(startOffset, endOffset, constructorSymbol, descriptor, getTypeArguments(call.original))
irCall.dispatchReceiver = dispatchReceiver?.load()
irCall.extensionReceiver = extensionReceiver?.load()
addParametersToCall(startOffset, endOffset, call, irCall, descriptor.builtIns.unitType)
@@ -29,6 +29,7 @@ class IrDelegatingConstructorCallImpl(
startOffset: Int,
endOffset: Int,
override val symbol: IrConstructorSymbol,
override val descriptor: ClassConstructorDescriptor,
typeArguments: Map<TypeParameterDescriptor, KotlinType>? = null
) : IrDelegatingConstructorCall,
IrCallWithIndexedArgumentsBase(
@@ -46,10 +47,9 @@ class IrDelegatingConstructorCallImpl(
typeArguments: Map<TypeParameterDescriptor, KotlinType>? = null
) : this(startOffset, endOffset,
IrConstructorSymbolImpl(constructorDescriptor),
constructorDescriptor,
typeArguments)
override val descriptor: ClassConstructorDescriptor get() = symbol.descriptor
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
return visitor.visitDelegatingConstructorCall(this, data)
}
@@ -356,6 +356,7 @@ class DeepCopyIrTree(private val symbolsRemapper: DeepCopySymbolsRemapper) : IrE
IrDelegatingConstructorCallImpl(
expression.startOffset, expression.endOffset,
symbolsRemapper.getReferencedConstructor(expression.symbol),
expression.descriptor,
expression.getTypeArgumentsMap()
).transformValueArguments(expression)