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