IrDelegatingConstructorCall should have substituted descriptor
This commit is contained in:
@@ -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)
|
||||
|
||||
+2
-2
@@ -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)
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
FILE /typeAliasCtorForGenericClass.kt
|
||||
CLASS CLASS A
|
||||
$new: VALUE_PARAMETER this@A: A<Q>
|
||||
TYPE_PARAMETER <Q>
|
||||
CONSTRUCTOR public constructor A<Q>(q: Q)
|
||||
VALUE_PARAMETER value-parameter q: Q
|
||||
BLOCK_BODY
|
||||
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
|
||||
INSTANCE_INITIALIZER_CALL classDescriptor='A'
|
||||
@@ -9,10 +12,14 @@ FILE /typeAliasCtorForGenericClass.kt
|
||||
EXPRESSION_BODY
|
||||
GET_VAR 'value-parameter q: Q' type=Q origin=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-q>(): Q
|
||||
$this: VALUE_PARAMETER this@A: A<Q>
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='<get-q>(): Q'
|
||||
GET_FIELD 'q: Q' type=Q origin=null
|
||||
receiver: GET_VAR '<receiver: A>' type=A<Q> origin=null
|
||||
receiver: GET_VAR 'this@A: A<Q>' type=A<Q> origin=null
|
||||
FUN FAKE_OVERRIDE public open override fun equals(other: kotlin.Any?): kotlin.Boolean
|
||||
FUN FAKE_OVERRIDE public open override fun hashCode(): kotlin.Int
|
||||
FUN FAKE_OVERRIDE public open override fun toString(): kotlin.String
|
||||
TYPEALIAS typealias B = A<X> type=A<X>
|
||||
TYPEALIAS typealias B2 = A<A<T>> type=A<A<T>>
|
||||
FUN public fun bar(): kotlin.Unit
|
||||
|
||||
Reference in New Issue
Block a user