[LL API] Replace 'FirScript.containingFileSymbol' with 'FirProvider' API
This commit is contained in:
+2
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirScriptSymbol
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -22,6 +23,7 @@ internal class LLFirBuiltinsAndCloneableSessionProvider(override val symbolProvi
|
||||
|
||||
override fun getFirClassifierContainerFileIfAny(fqName: ClassId): FirFile? = null
|
||||
override fun getFirCallableContainerFile(symbol: FirCallableSymbol<*>): FirFile? = null
|
||||
override fun getFirScriptContainerFile(symbol: FirScriptSymbol): FirFile? = null
|
||||
override fun getFirFilesByPackage(fqName: FqName): List<FirFile> = emptyList()
|
||||
|
||||
override fun getClassNamesInPackage(fqName: FqName): Set<Name> = shouldNotBeCalled()
|
||||
|
||||
+2
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirScriptSymbol
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -27,6 +28,7 @@ internal class LLFirLibrarySessionProvider(
|
||||
|
||||
override fun getFirClassifierContainerFileIfAny(fqName: ClassId): FirFile? = null
|
||||
override fun getFirCallableContainerFile(symbol: FirCallableSymbol<*>): FirFile? = null
|
||||
override fun getFirScriptContainerFile(symbol: FirScriptSymbol): FirFile? = null
|
||||
override fun getFirFilesByPackage(fqName: FqName): List<FirFile> = emptyList()
|
||||
|
||||
override fun getClassNamesInPackage(fqName: FqName): Set<Name> = shouldNotBeCalled()
|
||||
|
||||
+4
@@ -92,6 +92,10 @@ internal class LLFirProvider(
|
||||
}
|
||||
}
|
||||
|
||||
override fun getFirScriptContainerFile(symbol: FirScriptSymbol): FirFile? {
|
||||
return moduleComponents.cache.getContainerFirFile(symbol.fir)
|
||||
}
|
||||
|
||||
override fun getFirFilesByPackage(fqName: FqName): List<FirFile> = error("Should not be called in FIR IDE")
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ fun FirElementWithResolvePhase.getContainingFile(): FirFile? {
|
||||
val provider = moduleData.session.firProvider
|
||||
return when (this) {
|
||||
is FirFile -> this
|
||||
is FirScript -> containingFileSymbol.fir
|
||||
is FirScript -> provider.getFirScriptContainerFile(symbol)
|
||||
is FirFileAnnotationsContainer -> containingFileSymbol.fir
|
||||
is FirTypeParameter -> containingDeclarationSymbol.fir.getContainingFile()
|
||||
is FirPropertyAccessor -> propertySymbol.fir.getContainingFile()
|
||||
|
||||
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirScriptSymbol
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -39,6 +40,8 @@ abstract class FirProvider : FirSessionComponent {
|
||||
|
||||
abstract fun getFirCallableContainerFile(symbol: FirCallableSymbol<*>): FirFile?
|
||||
|
||||
abstract fun getFirScriptContainerFile(symbol: FirScriptSymbol): FirFile?
|
||||
|
||||
abstract fun getFirFilesByPackage(fqName: FqName): List<FirFile>
|
||||
|
||||
abstract fun getClassNamesInPackage(fqName: FqName): Set<Name>
|
||||
|
||||
@@ -1079,7 +1079,6 @@ open class RawFirBuilder(
|
||||
origin = FirDeclarationOrigin.Source
|
||||
name = Name.special("<script-${containingFile.name}>")
|
||||
symbol = FirScriptSymbol(context.packageFqName.child(name))
|
||||
containingFileSymbol = containingFile.symbol
|
||||
for (declaration in script.declarations) {
|
||||
when (declaration) {
|
||||
is KtScriptInitializer -> {
|
||||
|
||||
+2
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirScriptSymbol
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -24,6 +25,7 @@ class FirLibrarySessionProvider(
|
||||
|
||||
override fun getFirClassifierContainerFileIfAny(fqName: ClassId): FirFile? = null
|
||||
override fun getFirCallableContainerFile(symbol: FirCallableSymbol<*>): FirFile? = null
|
||||
override fun getFirScriptContainerFile(symbol: FirScriptSymbol): FirFile? = null
|
||||
override fun getFirFilesByPackage(fqName: FqName): List<FirFile> = emptyList()
|
||||
|
||||
override fun getClassNamesInPackage(fqName: FqName): Set<Name> = shouldNotBeCalled()
|
||||
|
||||
+12
@@ -38,6 +38,10 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: FirKotli
|
||||
return state.callableContainerMap[symbol]
|
||||
}
|
||||
|
||||
override fun getFirScriptContainerFile(symbol: FirScriptSymbol): FirFile? {
|
||||
return state.scriptContainerMap[symbol]
|
||||
}
|
||||
|
||||
override fun getFirClassifierContainerFile(fqName: ClassId): FirFile {
|
||||
return state.classifierContainerFileMap[fqName] ?: error("Couldn't find container for $fqName")
|
||||
}
|
||||
@@ -184,6 +188,11 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: FirKotli
|
||||
val symbol = enumEntry.symbol
|
||||
data.state.callableContainerMap[symbol] = data.file
|
||||
}
|
||||
|
||||
override fun visitScript(script: FirScript, data: FirRecorderData) {
|
||||
val symbol = script.symbol
|
||||
data.state.scriptContainerMap[symbol] = data.file
|
||||
}
|
||||
}
|
||||
|
||||
private val state = State()
|
||||
@@ -199,6 +208,7 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: FirKotli
|
||||
val propertyMap = mutableMapOf<CallableId, List<FirPropertySymbol>>()
|
||||
val constructorMap = mutableMapOf<CallableId, List<FirConstructorSymbol>>()
|
||||
val callableContainerMap = mutableMapOf<FirCallableSymbol<*>, FirFile>()
|
||||
val scriptContainerMap = mutableMapOf<FirScriptSymbol, FirFile>()
|
||||
|
||||
fun setFrom(other: State) {
|
||||
fileMap.clear()
|
||||
@@ -209,6 +219,7 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: FirKotli
|
||||
propertyMap.clear()
|
||||
constructorMap.clear()
|
||||
callableContainerMap.clear()
|
||||
scriptContainerMap.clear()
|
||||
|
||||
fileMap.putAll(other.fileMap)
|
||||
allSubPackages.addAll(other.allSubPackages)
|
||||
@@ -218,6 +229,7 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: FirKotli
|
||||
propertyMap.putAll(other.propertyMap)
|
||||
constructorMap.putAll(other.constructorMap)
|
||||
callableContainerMap.putAll(other.callableContainerMap)
|
||||
scriptContainerMap.putAll(other.scriptContainerMap)
|
||||
classesInPackage.putAll(other.classesInPackage)
|
||||
classifierInPackage.putAll(other.classifierInPackage)
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirScriptSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
@@ -30,7 +29,6 @@ abstract class FirScript : FirDeclaration() {
|
||||
abstract val name: Name
|
||||
abstract val statements: List<FirStatement>
|
||||
abstract override val symbol: FirScriptSymbol
|
||||
abstract val containingFileSymbol: FirFileSymbol
|
||||
abstract val parameters: List<FirVariable>
|
||||
abstract val contextReceivers: List<FirContextReceiver>
|
||||
|
||||
|
||||
-3
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.FirVariable
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirScriptImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirScriptSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -43,7 +42,6 @@ class FirScriptBuilder : FirAnnotationContainerBuilder {
|
||||
lateinit var name: Name
|
||||
val statements: MutableList<FirStatement> = mutableListOf()
|
||||
lateinit var symbol: FirScriptSymbol
|
||||
lateinit var containingFileSymbol: FirFileSymbol
|
||||
val parameters: MutableList<FirVariable> = mutableListOf()
|
||||
val contextReceivers: MutableList<FirContextReceiver> = mutableListOf()
|
||||
|
||||
@@ -58,7 +56,6 @@ class FirScriptBuilder : FirAnnotationContainerBuilder {
|
||||
name,
|
||||
statements,
|
||||
symbol,
|
||||
containingFileSymbol,
|
||||
parameters,
|
||||
contextReceivers.toMutableOrEmpty(),
|
||||
)
|
||||
|
||||
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.fir.declarations.FirScript
|
||||
import org.jetbrains.kotlin.fir.declarations.FirVariable
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirScriptSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
@@ -40,7 +39,6 @@ internal class FirScriptImpl(
|
||||
override val name: Name,
|
||||
override val statements: MutableList<FirStatement>,
|
||||
override val symbol: FirScriptSymbol,
|
||||
override val containingFileSymbol: FirFileSymbol,
|
||||
override val parameters: MutableList<FirVariable>,
|
||||
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
|
||||
) : FirScript() {
|
||||
|
||||
-3
@@ -475,9 +475,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
+name
|
||||
+fieldList(statement).withTransform()
|
||||
+symbol("FirScriptSymbol")
|
||||
+field("containingFileSymbol", type("fir.symbols.impl", "FirFileSymbol"), argument = null).apply {
|
||||
withBindThis = false
|
||||
}
|
||||
+FieldList("parameters", variable, withReplace = false)
|
||||
+fieldList(contextReceiver, useMutableOrEmpty = true)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user