[FIR2IR] Extract logic of IR declarations generation into separate component. Part 11

Move creation of IrScript into Fir2IrCallableDeclarationsGenerator
This commit is contained in:
Dmitriy Novozhilov
2023-08-29 12:36:06 +03:00
committed by Space Team
parent 771b44fd02
commit e2e8a9eb8f
2 changed files with 19 additions and 12 deletions
@@ -1040,18 +1040,9 @@ class Fir2IrDeclarationStorage(
}
fun getOrCreateIrScript(script: FirScript): IrScript {
return getCachedIrScript(script) ?: script.convertWithOffsets { startOffset, endOffset ->
val signature = signatureComposer.composeSignature(script)!!
symbolTable.declareScript(signature, { Fir2IrScriptSymbol(signature) }) { symbol ->
IrScriptImpl(symbol, script.name, irFactory, startOffset, endOffset).also { irScript ->
irScript.origin = SCRIPT_K2_ORIGIN
irScript.metadata = FirMetadataSource.Script(script)
irScript.implicitReceiversParameters = emptyList()
irScript.providedProperties = emptyList()
irScript.providedPropertiesParameters = emptyList()
scriptCache[script] = irScript
}
}
getCachedIrScript(script)?.let { return it }
return callablesGenerator.createIrScript(script).also {
scriptCache[script] = it
}
}
@@ -32,7 +32,9 @@ import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.builders.declarations.UNDEFINED_PARAMETER_INDEX
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrScriptImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl
import org.jetbrains.kotlin.ir.declarations.impl.SCRIPT_K2_ORIGIN
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.impl.IrErrorExpressionImpl
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
@@ -924,6 +926,20 @@ class Fir2IrCallableDeclarationsGenerator(val components: Fir2IrComponents) : Fi
}
// ------------------------------------ scripts ------------------------------------
fun createIrScript(script: FirScript): IrScript = script.convertWithOffsets { startOffset, endOffset ->
val signature = signatureComposer.composeSignature(script)!!
symbolTable.declareScript(signature, { Fir2IrScriptSymbol(signature) }) { symbol ->
IrScriptImpl(symbol, script.name, irFactory, startOffset, endOffset).also { irScript ->
irScript.origin = SCRIPT_K2_ORIGIN
irScript.metadata = FirMetadataSource.Script(script)
irScript.implicitReceiversParameters = emptyList()
irScript.providedProperties = emptyList()
irScript.providedPropertiesParameters = emptyList()
}
}
}
// ------------------------------------ utilities ------------------------------------
/**