[LL API] Move LLModuleProvider and LLSessionProvider instantiation out

This commit is contained in:
Yan Zhulanow
2023-09-01 17:52:11 +09:00
committed by Space Team
parent 147712975f
commit b18856dc0a
6 changed files with 32 additions and 32 deletions
@@ -15,6 +15,8 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirNotUnderConten
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirResolvableResolveSession import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirResolvableResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirScriptResolveSession import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirScriptResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirSourceResolveSession import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirSourceResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLModuleProvider
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLSessionProvider
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries
import org.jetbrains.kotlin.analysis.project.structure.* import org.jetbrains.kotlin.analysis.project.structure.*
@@ -35,11 +37,14 @@ class LLFirResolveSessionService(project: Project) {
} }
private fun create(module: KtModule, factory: (KtModule) -> LLFirSession): LLFirResolvableResolveSession { private fun create(module: KtModule, factory: (KtModule) -> LLFirSession): LLFirResolvableResolveSession {
val moduleProvider = LLModuleProvider(module)
val sessionProvider = LLSessionProvider(module, factory)
return when (module) { return when (module) {
is KtSourceModule -> LLFirSourceResolveSession(module, factory) is KtSourceModule -> LLFirSourceResolveSession(moduleProvider, sessionProvider)
is KtLibraryModule, is KtLibrarySourceModule -> LLFirLibraryOrLibrarySourceResolvableResolveSession(module, factory) is KtLibraryModule, is KtLibrarySourceModule -> LLFirLibraryOrLibrarySourceResolvableResolveSession(moduleProvider, sessionProvider)
is KtScriptModule -> LLFirScriptResolveSession(module, factory) is KtScriptModule -> LLFirScriptResolveSession(moduleProvider, sessionProvider)
is KtNotUnderContentRootModule -> LLFirNotUnderContentRootResolveSession(module, factory) is KtNotUnderContentRootModule -> LLFirNotUnderContentRootResolveSession(moduleProvider, sessionProvider)
else -> { else -> {
errorWithFirSpecificEntries("Unexpected ${module::class.java}") { errorWithFirSpecificEntries("Unexpected ${module::class.java}") {
withEntry("module", module) { it.moduleDescription } withEntry("module", module) { it.moduleDescription }
@@ -6,16 +6,15 @@
package org.jetbrains.kotlin.analysis.low.level.api.fir.state package org.jetbrains.kotlin.analysis.low.level.api.fir.state
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirLibraryOrLibrarySourceResolvableModuleSession import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirLibraryOrLibrarySourceResolvableModuleSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.analysis.project.structure.KtModule
internal class LLFirLibraryOrLibrarySourceResolvableResolveSession( internal class LLFirLibraryOrLibrarySourceResolvableResolveSession(
useSiteKtModule: KtModule, moduleProvider: LLModuleProvider,
useSiteSessionFactory: (KtModule) -> LLFirSession sessionProvider: LLSessionProvider
) : LLFirResolvableResolveSession( ) : LLFirResolvableResolveSession(
useSiteKtModule = useSiteKtModule, moduleProvider = moduleProvider,
moduleKindProvider = LLLibraryModuleKindProvider(useSiteKtModule), moduleKindProvider = LLLibraryModuleKindProvider(moduleProvider.useSiteModule),
useSiteSessionFactory = useSiteSessionFactory sessionProvider = sessionProvider
) { ) {
override val diagnosticProvider: LLDiagnosticProvider override val diagnosticProvider: LLDiagnosticProvider
get() = LLEmptyDiagnosticProvider get() = LLEmptyDiagnosticProvider
@@ -5,16 +5,15 @@
package org.jetbrains.kotlin.analysis.low.level.api.fir.state package org.jetbrains.kotlin.analysis.low.level.api.fir.state
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.analysis.project.structure.KtModule
internal class LLFirNotUnderContentRootResolveSession( internal class LLFirNotUnderContentRootResolveSession(
useSiteKtModule: KtModule, moduleProvider: LLModuleProvider,
useSiteSessionFactory: (KtModule) -> LLFirSession sessionProvider: LLSessionProvider
) : LLFirResolvableResolveSession( ) : LLFirResolvableResolveSession(
useSiteKtModule = useSiteKtModule, moduleProvider = moduleProvider,
moduleKindProvider = LLNotUnderContentRootModuleKindProvider(useSiteKtModule), moduleKindProvider = LLNotUnderContentRootModuleKindProvider(moduleProvider.useSiteModule),
useSiteSessionFactory = useSiteSessionFactory sessionProvider = sessionProvider
) { ) {
override val diagnosticProvider: LLDiagnosticProvider override val diagnosticProvider: LLDiagnosticProvider
get() = LLEmptyDiagnosticProvider get() = LLEmptyDiagnosticProvider
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getModule import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getModule
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirTowerContextProvider import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirTowerContextProvider
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.getNonLocalContainingDeclaration import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.getNonLocalContainingDeclaration
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.* import org.jetbrains.kotlin.analysis.low.level.api.fir.util.*
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.FirDeclarationForCompiledElementSearcher import org.jetbrains.kotlin.analysis.low.level.api.fir.util.FirDeclarationForCompiledElementSearcher
import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.analysis.project.structure.KtModule
@@ -33,13 +32,13 @@ import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
internal abstract class LLFirResolvableResolveSession( internal abstract class LLFirResolvableResolveSession(
useSiteKtModule: KtModule, moduleProvider: LLModuleProvider,
moduleKindProvider: LLModuleKindProvider, moduleKindProvider: LLModuleKindProvider,
useSiteSessionFactory: (KtModule) -> LLFirSession, sessionProvider: LLSessionProvider
) : LLFirResolveSession( ) : LLFirResolveSession(
moduleProvider = LLModuleProvider(useSiteKtModule), moduleProvider = moduleProvider,
moduleKindProvider = moduleKindProvider, moduleKindProvider = moduleKindProvider,
sessionProvider = LLSessionProvider(useSiteKtModule, useSiteSessionFactory), sessionProvider = sessionProvider,
scopeSessionProvider = LLDefaultScopeSessionProvider scopeSessionProvider = LLDefaultScopeSessionProvider
) { ) {
override fun getOrBuildFirFor(element: KtElement): FirElement? { override fun getOrBuildFirFor(element: KtElement): FirElement? {
@@ -5,17 +5,16 @@
package org.jetbrains.kotlin.analysis.low.level.api.fir.state package org.jetbrains.kotlin.analysis.low.level.api.fir.state
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
import org.jetbrains.kotlin.analysis.project.structure.* import org.jetbrains.kotlin.analysis.project.structure.*
import org.jetbrains.kotlin.analysis.utils.errors.unexpectedElementError import org.jetbrains.kotlin.analysis.utils.errors.unexpectedElementError
internal class LLFirScriptResolveSession( internal class LLFirScriptResolveSession(
useSiteKtModule: KtModule, moduleProvider: LLModuleProvider,
useSiteSessionFactory: (KtModule) -> LLFirSession, sessionProvider: LLSessionProvider
) : LLFirResolvableResolveSession( ) : LLFirResolvableResolveSession(
useSiteKtModule = useSiteKtModule, moduleProvider = moduleProvider,
moduleKindProvider = LLScriptModuleKindProvider(useSiteKtModule), moduleKindProvider = LLScriptModuleKindProvider(moduleProvider.useSiteModule),
useSiteSessionFactory = useSiteSessionFactory sessionProvider = sessionProvider
) { ) {
override val diagnosticProvider = LLSourceDiagnosticProvider(moduleProvider, sessionProvider) override val diagnosticProvider = LLSourceDiagnosticProvider(moduleProvider, sessionProvider)
} }
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.analysis.low.level.api.fir.state package org.jetbrains.kotlin.analysis.low.level.api.fir.state
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
import org.jetbrains.kotlin.analysis.project.structure.KtBuiltinsModule import org.jetbrains.kotlin.analysis.project.structure.KtBuiltinsModule
import org.jetbrains.kotlin.analysis.project.structure.KtLibraryModule import org.jetbrains.kotlin.analysis.project.structure.KtLibraryModule
import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.analysis.project.structure.KtModule
@@ -13,12 +12,12 @@ import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
import org.jetbrains.kotlin.analysis.utils.errors.unexpectedElementError import org.jetbrains.kotlin.analysis.utils.errors.unexpectedElementError
internal class LLFirSourceResolveSession( internal class LLFirSourceResolveSession(
useSiteKtModule: KtModule, moduleProvider: LLModuleProvider,
useSiteSessionFactory: (KtModule) -> LLFirSession, sessionProvider: LLSessionProvider
) : LLFirResolvableResolveSession( ) : LLFirResolvableResolveSession(
useSiteKtModule = useSiteKtModule, moduleProvider = moduleProvider,
moduleKindProvider = LLSourceModuleKindProvider, moduleKindProvider = LLSourceModuleKindProvider,
useSiteSessionFactory = useSiteSessionFactory sessionProvider = sessionProvider
) { ) {
override val diagnosticProvider = LLSourceDiagnosticProvider(moduleProvider, sessionProvider) override val diagnosticProvider = LLSourceDiagnosticProvider(moduleProvider, sessionProvider)
} }