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 def0f3d19e4..fee84c47cce 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 @@ -352,6 +352,10 @@ class Fir2IrDeclarationStorage( delegatedReverseCache[irFunction] = function } + internal fun cacheGeneratedFunction(firFunction: FirSimpleFunction, irFunction: IrSimpleFunction) { + functionCache[firFunction] = irFunction + } + // ------------------------------------ constructors ------------------------------------ @OptIn(IrSymbolInternals::class) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt index 6a4159e44df..f137dc0d8f2 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt @@ -198,6 +198,7 @@ class DataClassMembersGenerator(val components: Fir2IrComponents) : Fir2IrCompon components.irBuiltIns.stringType, ) irClass.declarations.add(toStringFunction) + declarationStorage.cacheGeneratedFunction(toStringContributedFunction, toStringFunction) } val hashcodeNameContributedFunction = contributedSyntheticFunctions[HASHCODE_NAME] @@ -209,6 +210,7 @@ class DataClassMembersGenerator(val components: Fir2IrComponents) : Fir2IrCompon components.irBuiltIns.intType, ) irClass.declarations.add(hashCodeFunction) + declarationStorage.cacheGeneratedFunction(hashcodeNameContributedFunction, hashCodeFunction) } val equalsContributedFunction = contributedSyntheticFunctions[EQUALS] @@ -222,6 +224,7 @@ class DataClassMembersGenerator(val components: Fir2IrComponents) : Fir2IrCompon isOperator = true ) irClass.declarations.add(equalsFunction) + declarationStorage.cacheGeneratedFunction(equalsContributedFunction, equalsFunction) } return result @@ -291,7 +294,7 @@ class DataClassMembersGenerator(val components: Fir2IrComponents) : Fir2IrCompon returnType: IrType, otherParameterNeeded: Boolean = false, isOperator: Boolean = false, - ): IrFunction { + ): IrSimpleFunction { val signature = if (klass.symbol.classId.isLocal) null else components.signatureComposer.composeSignature(syntheticCounterpart) return components.callablesGenerator.declareIrSimpleFunction(signature) { symbol -> components.irFactory.createSimpleFunction(