[LL FIR] remove abstract class LLFirModuleData with only inheritor
This commit is contained in:
+4
-4
@@ -9,8 +9,8 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.KtDeclarationAndFirDeclarationEqualityChecker
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirKtModuleBasedModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.firModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtBuiltinsModule
|
||||
import org.jetbrains.kotlin.analysis.providers.createDeclarationProvider
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
@@ -117,9 +117,9 @@ internal object FirDeserializedDeclarationSourceProvider {
|
||||
is FirCallableDeclaration -> unwrapFakeOverrides()
|
||||
else -> this
|
||||
}
|
||||
val moduleData = original.firModuleData as LLFirKtModuleBasedModuleData
|
||||
val moduleData = original.llFirModuleData
|
||||
return when (val ktModule = moduleData.ktModule) {
|
||||
is KtBuiltinsModule -> GlobalSearchScope.allScope(project)
|
||||
is KtBuiltinsModule -> GlobalSearchScope.allScope(project) // TODO should be some stdlib
|
||||
else -> ktModule.contentScope
|
||||
}
|
||||
}
|
||||
|
||||
+3
-5
@@ -8,8 +8,8 @@ package org.jetbrains.kotlin.analysis.api.fir.utils
|
||||
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirKtModuleBasedModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.firModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.fir.dispatchReceiverClassOrNull
|
||||
import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol
|
||||
@@ -31,9 +31,7 @@ fun FirBasedSymbol<*>.getContainingKtModule(firResolveSession: LLFirResolveSessi
|
||||
}
|
||||
else -> this
|
||||
}
|
||||
return when (val moduleData = target.firModuleData) {
|
||||
is LLFirKtModuleBasedModuleData -> moduleData.ktModule
|
||||
}
|
||||
return target.llFirModuleData.ktModule
|
||||
}
|
||||
|
||||
fun KtSymbol.getContainingKtModule(firResolveSession: LLFirResolveSession): KtModule =
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostics
|
||||
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.firKtModuleBasedModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.analysis.CheckersComponentInternal
|
||||
@@ -48,7 +48,7 @@ private object CheckersFactory {
|
||||
reporter: DiagnosticReporter,
|
||||
useExtendedCheckers: Boolean
|
||||
): DiagnosticCollectorComponents {
|
||||
val module = session.firKtModuleBasedModuleData.ktModule
|
||||
val module = session.llFirModuleData.ktModule
|
||||
val platform = module.platform.componentPlatforms.first()
|
||||
val extensionCheckers = session.extensionService.additionalCheckers
|
||||
val declarationCheckers = createDeclarationCheckers(useExtendedCheckers, platform, extensionCheckers)
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
||||
private fun createBuiltinsAndCloneableSession(platform: TargetPlatform): LLFirBuiltinsAndCloneableSession {
|
||||
val builtinsModule = KtBuiltinsModule(platform, platform.getAnalyzerServices(), project)
|
||||
return LLFirBuiltinsAndCloneableSession(builtinsModule, project, builtInTypes).apply session@{
|
||||
val moduleData = LLFirKtModuleBasedModuleData(builtinsModule).apply {
|
||||
val moduleData = LLFirModuleData(builtinsModule).apply {
|
||||
bindSession(this@session)
|
||||
}
|
||||
registerIdeComponents(project)
|
||||
|
||||
+1
-4
@@ -8,11 +8,8 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirFirClassByPsiClassProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirLibrarySessionProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirLibraryLikeSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirLibrarySession
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.analysis.project.structure.allDirectDependenciesOfType
|
||||
import org.jetbrains.kotlin.analysis.providers.createLibrariesModificationTracker
|
||||
import org.jetbrains.kotlin.analysis.utils.caches.softCachedValue
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
@@ -53,7 +50,7 @@ internal class LLFirLibrarySessionFactory(
|
||||
val platform = ktLibraryModule.platform
|
||||
val builtinsSession = LLFirBuiltinsSessionFactory.getInstance(project).getBuiltinsSession(platform)
|
||||
return LLFirLibrarySession(ktLibraryModule, project, builtinsSession.builtinTypes).apply session@{
|
||||
val moduleData = LLFirKtModuleBasedModuleData(ktLibraryModule).apply { bindSession(this@session) }
|
||||
val moduleData = LLFirModuleData(ktLibraryModule).apply { bindSession(this@session) }
|
||||
registerModuleData(moduleData)
|
||||
registerIdeComponents(project)
|
||||
register(FirPhaseManager::class, FirPhaseCheckingPhaseManager)
|
||||
|
||||
+11
-18
@@ -15,43 +15,36 @@ import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
|
||||
|
||||
sealed class LLFirModuleData : FirModuleData()
|
||||
|
||||
val FirDeclaration.firModuleData: LLFirModuleData
|
||||
val FirDeclaration.llFirModuleData: LLFirModuleData
|
||||
get() {
|
||||
return moduleData as LLFirModuleData
|
||||
}
|
||||
|
||||
val FirSession.firModuleData: LLFirModuleData
|
||||
val FirSession.llFirModuleData: LLFirModuleData
|
||||
get() {
|
||||
return moduleData as LLFirModuleData
|
||||
}
|
||||
|
||||
val FirSession.firKtModuleBasedModuleData: LLFirKtModuleBasedModuleData
|
||||
get() {
|
||||
return moduleData as LLFirKtModuleBasedModuleData
|
||||
}
|
||||
|
||||
val FirBasedSymbol<*>.llFirModuleData: LLFirModuleData
|
||||
get() = fir.llFirModuleData
|
||||
|
||||
|
||||
val FirBasedSymbol<*>.firModuleData: LLFirModuleData
|
||||
get() = fir.firModuleData
|
||||
|
||||
|
||||
class LLFirKtModuleBasedModuleData(
|
||||
class LLFirModuleData(
|
||||
val ktModule: KtModule,
|
||||
) : LLFirModuleData() {
|
||||
) : FirModuleData() {
|
||||
override val name: Name get() = Name.special("<${ktModule.moduleDescription}>")
|
||||
|
||||
override val dependencies: List<FirModuleData> by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||
ktModule.directRegularDependencies.map(::LLFirKtModuleBasedModuleData)
|
||||
ktModule.directRegularDependencies.map(::LLFirModuleData)
|
||||
}
|
||||
|
||||
override val dependsOnDependencies: List<FirModuleData> by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||
ktModule.directRefinementDependencies.map(::LLFirKtModuleBasedModuleData)
|
||||
ktModule.directRefinementDependencies.map(::LLFirModuleData)
|
||||
}
|
||||
|
||||
override val friendDependencies: List<FirModuleData> by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||
ktModule.directRefinementDependencies.map(::LLFirKtModuleBasedModuleData)
|
||||
ktModule.directRefinementDependencies.map(::LLFirModuleData)
|
||||
}
|
||||
|
||||
override val platform: TargetPlatform get() = ktModule.platform
|
||||
@@ -62,7 +55,7 @@ class LLFirKtModuleBasedModuleData(
|
||||
if (this === other) return true
|
||||
if (javaClass != other?.javaClass) return false
|
||||
|
||||
other as LLFirKtModuleBasedModuleData
|
||||
other as LLFirModuleData
|
||||
|
||||
if (ktModule != other.ktModule) return false
|
||||
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@ internal class LLFirNonUnderContentRootSessionFactory(private val project: Proje
|
||||
components.session = session
|
||||
|
||||
return session.apply session@{
|
||||
val moduleData = LLFirKtModuleBasedModuleData(module).apply { bindSession(this@session) }
|
||||
val moduleData = LLFirModuleData(module).apply { bindSession(this@session) }
|
||||
registerModuleData(moduleData)
|
||||
register(FirKotlinScopeProvider::class, scopeProvider)
|
||||
|
||||
|
||||
+1
-1
@@ -82,7 +82,7 @@ internal fun LLFirSourcesSession.registerCompilerPluginServices(
|
||||
|
||||
internal fun createJavaSymbolProvider(
|
||||
firSession: LLFirSession,
|
||||
moduleData: LLFirKtModuleBasedModuleData,
|
||||
moduleData: LLFirModuleData,
|
||||
project: Project,
|
||||
contentScope: GlobalSearchScope
|
||||
): JavaSymbolProvider {
|
||||
|
||||
+2
-2
@@ -83,7 +83,7 @@ internal object LLFirSessionFactory {
|
||||
components.session = session
|
||||
|
||||
return session.apply session@{
|
||||
val moduleData = LLFirKtModuleBasedModuleData(module).apply { bindSession(this@session) }
|
||||
val moduleData = LLFirModuleData(module).apply { bindSession(this@session) }
|
||||
registerModuleData(moduleData)
|
||||
register(FirKotlinScopeProvider::class, scopeProvider)
|
||||
|
||||
@@ -187,7 +187,7 @@ internal object LLFirSessionFactory {
|
||||
components.session = session
|
||||
|
||||
return session.apply session@{
|
||||
val moduleData = LLFirKtModuleBasedModuleData(module).apply { bindSession(this@session) }
|
||||
val moduleData = LLFirModuleData(module).apply { bindSession(this@session) }
|
||||
registerModuleData(moduleData)
|
||||
register(FirKotlinScopeProvider::class, scopeProvider)
|
||||
|
||||
|
||||
+1
-4
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.sessions
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.analysis.api.impl.barebone.annotations.Immutable
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirKtModuleBasedModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirDependentModuleProviders
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
@@ -29,9 +28,7 @@ class LLFirSessionProvider internal constructor(
|
||||
|
||||
override fun getSession(moduleData: FirModuleData): LLFirSession {
|
||||
requireIsInstance<LLFirModuleData>(moduleData)
|
||||
return when (moduleData) {
|
||||
is LLFirKtModuleBasedModuleData -> getResolvableSession(moduleData.ktModule)
|
||||
}
|
||||
return getResolvableSession(moduleData.ktModule)
|
||||
}
|
||||
|
||||
fun getSession(module: KtModule): LLFirSession =
|
||||
|
||||
+4
-5
@@ -14,12 +14,11 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveCompone
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirBuiltinsSessionFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySessionFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirNonUnderContentRootSessionFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.firKtModuleBasedModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.addValueFor
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.executeWithoutPCE
|
||||
import org.jetbrains.kotlin.analysis.project.structure.*
|
||||
import org.jetbrains.kotlin.analysis.providers.createModuleWithoutDependenciesOutOfBlockModificationTracker
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
class LLFirSessionProviderStorage(val project: Project) {
|
||||
private val sessionsCache = LLFirSessionsCache()
|
||||
@@ -81,7 +80,7 @@ private class LLFirSessionsCache {
|
||||
private var mappings: PersistentMap<KtModule, FirSessionWithModificationTracker> = persistentMapOf()
|
||||
|
||||
val sessionInvalidator: LLFirSessionInvalidator = LLFirSessionInvalidator { session ->
|
||||
mappings[session.firKtModuleBasedModuleData.ktModule]?.invalidate()
|
||||
mappings[session.llFirModuleData.ktModule]?.invalidate()
|
||||
}
|
||||
|
||||
|
||||
@@ -121,7 +120,7 @@ private class LLFirSessionsCache {
|
||||
}
|
||||
return wasSessionInvalidated.entries
|
||||
.mapNotNull { (session, wasInvalidated) -> session.takeUnless { wasInvalidated } }
|
||||
.associate { session -> session.firSession.firKtModuleBasedModuleData.ktModule to session.firSession }
|
||||
.associate { session -> session.firSession.llFirModuleData.ktModule to session.firSession }
|
||||
}
|
||||
|
||||
private fun <T> Collection<T>.reversedDependencies(getDependencies: (T) -> List<T>): Map<T, List<T>> {
|
||||
@@ -140,7 +139,7 @@ private class FirSessionWithModificationTracker(
|
||||
val firSession: LLFirResolvableModuleSession,
|
||||
) {
|
||||
private val modificationTracker =
|
||||
when (val ktModule = firSession.firKtModuleBasedModuleData.ktModule) {
|
||||
when (val ktModule = firSession.llFirModuleData.ktModule) {
|
||||
is KtSourceModule -> ktModule.createModuleWithoutDependenciesOutOfBlockModificationTracker(project)
|
||||
else -> ModificationTracker.NEVER_CHANGED
|
||||
}
|
||||
|
||||
+2
-2
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveCompone
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirTowerContextProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.getNonLocalContainingOrThisDeclaration
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.firModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirLibrarySession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirResolvableModuleSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
|
||||
@@ -133,7 +133,7 @@ internal abstract class LLFirResolvableResolveSession(
|
||||
|
||||
override fun resolveFirToPhase(declaration: FirDeclaration, toPhase: FirResolvePhase) {
|
||||
if (toPhase == FirResolvePhase.RAW_FIR) return
|
||||
val llFirResolvableModuleSession = declaration.firModuleData.session as? LLFirResolvableModuleSession ?: return
|
||||
val llFirResolvableModuleSession = declaration.llFirModuleData.session as? LLFirResolvableModuleSession ?: return
|
||||
|
||||
val moduleComponents = llFirResolvableModuleSession.moduleComponents
|
||||
moduleComponents.lazyFirDeclarationsResolver.lazyResolveDeclaration(
|
||||
|
||||
Reference in New Issue
Block a user