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 2a2c9ee4956..c8aaf312270 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 @@ -198,12 +198,12 @@ class Fir2IrConverter( processClassMembers(declaration) } is FirSimpleFunction -> { - declarationStorage.createIrFunction( + declarationStorage.getOrCreateIrFunction( declaration, parent, isLocal = isLocal ) } is FirProperty -> { - declarationStorage.createIrProperty( + declarationStorage.getOrCreateProperty( declaration, parent, isLocal = isLocal ) } 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 3f1fa58a9c1..2dcfcbf1628 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 @@ -7,11 +7,8 @@ package org.jetbrains.kotlin.fir.backend import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.builtins.StandardNames.BUILT_INS_PACKAGE_FQ_NAMES -import org.jetbrains.kotlin.descriptors.Modality -import org.jetbrains.kotlin.descriptors.PropertyDescriptor +import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.fir.FirAnnotationContainer -import org.jetbrains.kotlin.descriptors.Visibilities -import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.backend.generators.AnnotationGenerator import org.jetbrains.kotlin.fir.backend.generators.DelegatedMemberGenerator import org.jetbrains.kotlin.fir.declarations.* @@ -30,6 +27,7 @@ import org.jetbrains.kotlin.fir.lazy.Fir2IrLazySimpleFunction import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.resolve.firProvider import org.jetbrains.kotlin.fir.resolve.firSymbolProvider +import org.jetbrains.kotlin.fir.resolve.inference.isSuspendFunctionType import org.jetbrains.kotlin.fir.resolve.isKFunctionInvoke import org.jetbrains.kotlin.fir.symbols.* import org.jetbrains.kotlin.fir.symbols.impl.* @@ -51,8 +49,6 @@ import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource -import org.jetbrains.kotlin.descriptors.DescriptorVisibility -import org.jetbrains.kotlin.fir.resolve.inference.isSuspendFunctionType @OptIn(ObsoleteDescriptorBasedAPI::class) class Fir2IrDeclarationStorage( @@ -390,6 +386,15 @@ class Fir2IrDeclarationStorage( return symbolTable.declareSimpleFunction(signature, { Fir2IrSimpleFunctionSymbol(signature, containerSource) }, factory) } + fun getOrCreateIrFunction( + function: FirFunction<*>, + irParent: IrDeclarationParent?, + isLocal: Boolean = false, + ): IrSimpleFunction { + getCachedIrFunction(function)?.let { return it } + return createIrFunction(function, irParent, isLocal = isLocal) + } + fun createIrFunction( function: FirFunction<*>, irParent: IrDeclarationParent?, @@ -653,6 +658,15 @@ class Fir2IrDeclarationStorage( return symbolTable.declareProperty(signature, { Fir2IrPropertySymbol(signature, containerSource) }, factory) } + fun getOrCreateProperty( + property: FirProperty, + irParent: IrDeclarationParent?, + isLocal: Boolean = false, + ): IrProperty { + getCachedIrProperty(property)?.let { return it } + return createIrProperty(property, irParent, isLocal = isLocal) + } + fun createIrProperty( property: FirProperty, irParent: IrDeclarationParent?,