diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/BodyGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/BodyGenerator.kt index 849314096ee..3305347b82e 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/BodyGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/BodyGenerator.kt @@ -269,7 +269,7 @@ class BodyGenerator( private fun generateEnumSuperConstructorCall(body: IrBlockBody, ktElement: KtElement, classDescriptor: ClassDescriptor) { val enumConstructor = context.builtIns.enum.constructors.single() body.statements.add( - IrEnumConstructorCallImpl( + IrEnumConstructorCallImpl.fromSymbolDescriptor( ktElement.startOffsetSkippingComments, ktElement.endOffset, context.irBuiltIns.unitType, context.symbolTable.referenceConstructor(enumConstructor), @@ -287,7 +287,7 @@ class BodyGenerator( fun generateEnumEntryInitializer(ktEnumEntry: KtEnumEntry, enumEntryDescriptor: ClassDescriptor): IrExpression { if (ktEnumEntry.declarations.isNotEmpty()) { val enumEntryConstructor = enumEntryDescriptor.unsubstitutedPrimaryConstructor!! - return IrEnumConstructorCallImpl( + return IrEnumConstructorCallImpl.fromSymbolDescriptor( ktEnumEntry.startOffsetSkippingComments, ktEnumEntry.endOffset, context.irBuiltIns.unitType, context.symbolTable.referenceConstructor(enumEntryConstructor), diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrEnumConstructorCallImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrEnumConstructorCallImpl.kt index f5ad2bd72aa..07eddc0cb2d 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrEnumConstructorCallImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrEnumConstructorCallImpl.kt @@ -34,16 +34,18 @@ class IrEnumConstructorCallImpl( override val origin: IrStatementOrigin? 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 accept(visitor: IrElementVisitor, data: D): R { 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) + } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt index 115b0ff3c3f..2a1bc1313d4 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt @@ -567,7 +567,8 @@ open class DeepCopyIrTreeWithSymbols( expression.startOffset, expression.endOffset, expression.type.remapType(), newConstructor, - expression.typeArgumentsCount + expression.typeArgumentsCount, + expression.valueArgumentsCount ).apply { copyRemappedTypeArgumentsFrom(expression) transformValueArguments(expression)