diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt index dcb27fa4ade..38fa69a1d12 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt @@ -123,7 +123,7 @@ class Fir2IrConverter( irClass: IrClass = classifierStorage.getCachedIrClass(regularClass)!! ): IrClass { val irConstructor = regularClass.getPrimaryConstructorIfAny()?.let { - declarationStorage.createIrConstructor(it, irClass, isLocal = regularClass.isLocal) + declarationStorage.getOrCreateIrConstructor(it, irClass, isLocal = regularClass.isLocal) } if (irConstructor != null) { irClass.declarations += irConstructor @@ -219,7 +219,7 @@ class Fir2IrConverter( } } is FirConstructor -> if (!declaration.isPrimary) { - declarationStorage.createIrConstructor( + declarationStorage.getOrCreateIrConstructor( declaration, parent as IrClass, isLocal = isLocal ) } else { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index 14cff99b06a..13f55300f78 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -544,6 +544,16 @@ class Fir2IrDeclarationStorage( return created } + fun getOrCreateIrConstructor( + constructor: FirConstructor, + irParent: IrClass, + origin: IrDeclarationOrigin = IrDeclarationOrigin.DEFINED, + isLocal: Boolean = false + ): IrConstructor { + getCachedIrConstructor(constructor)?.let { return it } + return createIrConstructor(constructor, irParent, origin, isLocal) + } + private fun declareIrAccessor( signature: IdSignature?, containerSource: DeserializedContainerSource?,