From 55f62834cbbcf7b8c472e542fc79fcc7702d0abc Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Tue, 14 Nov 2023 15:58:16 +0200 Subject: [PATCH] [FIR2IR] Replace `getOrCreateIrScript` with `createIrScript` Fir2IrDeclarationStorage should not sometimes create IR declarations during lookup requests --- .../src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt | 2 +- .../jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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 92536f30fe4..0f97a3fbe3c 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 @@ -509,7 +509,7 @@ class Fir2IrConverter( } is FirScript -> { require(parent is IrFile) - val irScript = declarationStorage.getOrCreateIrScript(declaration) + val irScript = declarationStorage.createIrScript(declaration) addDeclarationToParentIfNeeded(irScript) declarationStorage.withScope(irScript.symbol) { irScript.parent = parent 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 3d644cabbc7..517fb02de4e 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 @@ -1158,8 +1158,8 @@ class Fir2IrDeclarationStorage( return scriptCache[script] } - fun getOrCreateIrScript(script: FirScript): IrScript { - getCachedIrScript(script)?.let { return it } + fun createIrScript(script: FirScript): IrScript { + getCachedIrScript(script)?.let { error("IrScript already created: ${script.render()}") } val symbol = createScriptSymbol(signatureComposer.composeSignature(script)) return callablesGenerator.createIrScript(script, symbol).also { scriptCache[script] = it