[FIR2IR] Extract logic of IR declarations generation into separate component. Part 11
Move creation of IrScript into Fir2IrCallableDeclarationsGenerator
This commit is contained in:
committed by
Space Team
parent
771b44fd02
commit
e2e8a9eb8f
+3
-12
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+16
@@ -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 ------------------------------------
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user