diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt index a34a16618ac..0c4bfc00b36 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt @@ -251,15 +251,13 @@ class FunctionGenerator(declarationGenerator: DeclarationGenerator) : Declaratio val startOffset = ktConstructorElement.getStartOffsetOfConstructorDeclarationKeywordOrNull() ?: ktConstructorElement.pureStartOffset val endOffset = ktConstructorElement.pureEndOffset val origin = IrDeclarationOrigin.DEFINED - return context.symbolTable.declareConstructor( - constructorDescriptor - ) { - IrConstructorImpl( - startOffset, endOffset, origin, it, - returnType = IrUninitializedType, - descriptor = constructorDescriptor, - name = context.symbolTable.nameProvider.nameForDeclaration(constructorDescriptor), - ).apply { + return context.symbolTable.declareConstructor(constructorDescriptor) { + with(constructorDescriptor) { + IrConstructorImpl( + startOffset, endOffset, origin, it, context.symbolTable.nameProvider.nameForDeclaration(this), + visibility, IrUninitializedType, isInline, isEffectivelyExternal(), isPrimary, isExpect + ) + }.apply { metadata = MetadataSource.Function(it.descriptor) } }.buildWithScope { irConstructor -> diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt index 113162bf534..9e5bf372050 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt @@ -155,7 +155,12 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) { startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassConstructorDescriptor, symbol: IrConstructorSymbol, defaultArgumentFactory: IrFunction.(IrValueParameter) -> IrExpressionBody? = { null } ): IrConstructor { - val irConstructor = IrConstructorImpl(startOffset, endOffset, origin, symbol, IrUninitializedType, descriptor) + val irConstructor = with(descriptor) { + IrConstructorImpl( + startOffset, endOffset, origin, symbol, name, visibility, IrUninitializedType, isInline, + isEffectivelyExternal(), isPrimary, isExpect + ) + } irConstructor.metadata = MetadataSource.Function(descriptor) symbolTable.withScope(irConstructor) { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrConstructorImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrConstructorImpl.kt index e119ff74d63..d4d8c41a54b 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrConstructorImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrConstructorImpl.kt @@ -19,13 +19,13 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.declarations.IrConstructor +import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.impl.carriers.ConstructorCarrier import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyExternal class IrConstructorImpl( startOffset: Int, @@ -49,24 +49,6 @@ class IrConstructorImpl( IrConstructor, ConstructorCarrier { - constructor( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - symbol: IrConstructorSymbol, - returnType: IrType, - descriptor: ClassConstructorDescriptor, - name: Name = descriptor.name - ) : this( - startOffset, endOffset, origin, symbol, - name = name, visibility = descriptor.visibility, - returnType = returnType, - isInline = descriptor.isInline, - isExternal = descriptor.isEffectivelyExternal(), - isPrimary = descriptor.isPrimary, - isExpect = descriptor.isExpect - ) - init { symbol.bind(this) }