EnumConstructorCall.fromSymbolDescriptor
This commit is contained in:
@@ -269,7 +269,7 @@ class BodyGenerator(
|
|||||||
private fun generateEnumSuperConstructorCall(body: IrBlockBody, ktElement: KtElement, classDescriptor: ClassDescriptor) {
|
private fun generateEnumSuperConstructorCall(body: IrBlockBody, ktElement: KtElement, classDescriptor: ClassDescriptor) {
|
||||||
val enumConstructor = context.builtIns.enum.constructors.single()
|
val enumConstructor = context.builtIns.enum.constructors.single()
|
||||||
body.statements.add(
|
body.statements.add(
|
||||||
IrEnumConstructorCallImpl(
|
IrEnumConstructorCallImpl.fromSymbolDescriptor(
|
||||||
ktElement.startOffsetSkippingComments, ktElement.endOffset,
|
ktElement.startOffsetSkippingComments, ktElement.endOffset,
|
||||||
context.irBuiltIns.unitType,
|
context.irBuiltIns.unitType,
|
||||||
context.symbolTable.referenceConstructor(enumConstructor),
|
context.symbolTable.referenceConstructor(enumConstructor),
|
||||||
@@ -287,7 +287,7 @@ class BodyGenerator(
|
|||||||
fun generateEnumEntryInitializer(ktEnumEntry: KtEnumEntry, enumEntryDescriptor: ClassDescriptor): IrExpression {
|
fun generateEnumEntryInitializer(ktEnumEntry: KtEnumEntry, enumEntryDescriptor: ClassDescriptor): IrExpression {
|
||||||
if (ktEnumEntry.declarations.isNotEmpty()) {
|
if (ktEnumEntry.declarations.isNotEmpty()) {
|
||||||
val enumEntryConstructor = enumEntryDescriptor.unsubstitutedPrimaryConstructor!!
|
val enumEntryConstructor = enumEntryDescriptor.unsubstitutedPrimaryConstructor!!
|
||||||
return IrEnumConstructorCallImpl(
|
return IrEnumConstructorCallImpl.fromSymbolDescriptor(
|
||||||
ktEnumEntry.startOffsetSkippingComments, ktEnumEntry.endOffset,
|
ktEnumEntry.startOffsetSkippingComments, ktEnumEntry.endOffset,
|
||||||
context.irBuiltIns.unitType,
|
context.irBuiltIns.unitType,
|
||||||
context.symbolTable.referenceConstructor(enumEntryConstructor),
|
context.symbolTable.referenceConstructor(enumEntryConstructor),
|
||||||
|
|||||||
+11
-9
@@ -34,16 +34,18 @@ class IrEnumConstructorCallImpl(
|
|||||||
override val origin: IrStatementOrigin?
|
override val origin: IrStatementOrigin?
|
||||||
get() = null
|
get() = null
|
||||||
|
|
||||||
@ObsoleteDescriptorBasedAPI
|
|
||||||
constructor(
|
|
||||||
startOffset: Int,
|
|
||||||
endOffset: Int,
|
|
||||||
type: IrType,
|
|
||||||
symbol: IrConstructorSymbol,
|
|
||||||
typeArgumentsCount: Int
|
|
||||||
) : this(startOffset, endOffset, type, symbol, typeArgumentsCount, symbol.descriptor.valueParameters.size)
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||||
return visitor.visitEnumConstructorCall(this, data)
|
return visitor.visitEnumConstructorCall(this, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
@ObsoleteDescriptorBasedAPI
|
||||||
|
fun fromSymbolDescriptor(
|
||||||
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
type: IrType,
|
||||||
|
symbol: IrConstructorSymbol,
|
||||||
|
typeArgumentsCount: Int
|
||||||
|
) = IrEnumConstructorCallImpl(startOffset, endOffset, type, symbol, typeArgumentsCount, symbol.descriptor.valueParameters.size)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -567,7 +567,8 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
newConstructor,
|
newConstructor,
|
||||||
expression.typeArgumentsCount
|
expression.typeArgumentsCount,
|
||||||
|
expression.valueArgumentsCount
|
||||||
).apply {
|
).apply {
|
||||||
copyRemappedTypeArgumentsFrom(expression)
|
copyRemappedTypeArgumentsFrom(expression)
|
||||||
transformValueArguments(expression)
|
transformValueArguments(expression)
|
||||||
|
|||||||
Reference in New Issue
Block a user