[LL API] Move 'LLDiagnosticProvider' instantiation out
This commit is contained in:
+15
-4
@@ -10,6 +10,8 @@ import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionCache
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLDiagnosticProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLEmptyDiagnosticProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirLibraryOrLibrarySourceResolvableResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirNotUnderContentRootResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirResolvableResolveSession
|
||||
@@ -17,6 +19,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirScriptResolveS
|
||||
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.state.LLSourceDiagnosticProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries
|
||||
import org.jetbrains.kotlin.analysis.project.structure.*
|
||||
|
||||
@@ -39,12 +42,13 @@ class LLFirResolveSessionService(project: Project) {
|
||||
private fun create(module: KtModule, factory: (KtModule) -> LLFirSession): LLFirResolvableResolveSession {
|
||||
val moduleProvider = LLModuleProvider(module)
|
||||
val sessionProvider = LLSessionProvider(module, factory)
|
||||
val diagnosticProvider = createDiagnosticProvider(moduleProvider, sessionProvider)
|
||||
|
||||
return when (module) {
|
||||
is KtSourceModule -> LLFirSourceResolveSession(moduleProvider, sessionProvider)
|
||||
is KtLibraryModule, is KtLibrarySourceModule -> LLFirLibraryOrLibrarySourceResolvableResolveSession(moduleProvider, sessionProvider)
|
||||
is KtScriptModule -> LLFirScriptResolveSession(moduleProvider, sessionProvider)
|
||||
is KtNotUnderContentRootModule -> LLFirNotUnderContentRootResolveSession(moduleProvider, sessionProvider)
|
||||
is KtSourceModule -> LLFirSourceResolveSession(moduleProvider, sessionProvider, diagnosticProvider)
|
||||
is KtLibraryModule, is KtLibrarySourceModule -> LLFirLibraryOrLibrarySourceResolvableResolveSession(moduleProvider, sessionProvider, diagnosticProvider)
|
||||
is KtScriptModule -> LLFirScriptResolveSession(moduleProvider, sessionProvider, diagnosticProvider)
|
||||
is KtNotUnderContentRootModule -> LLFirNotUnderContentRootResolveSession(moduleProvider, sessionProvider, diagnosticProvider)
|
||||
else -> {
|
||||
errorWithFirSpecificEntries("Unexpected ${module::class.java}") {
|
||||
withEntry("module", module) { it.moduleDescription }
|
||||
@@ -53,6 +57,13 @@ class LLFirResolveSessionService(project: Project) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun createDiagnosticProvider(moduleProvider: LLModuleProvider, sessionProvider: LLSessionProvider): LLDiagnosticProvider {
|
||||
return when (moduleProvider.useSiteModule) {
|
||||
is KtSourceModule, is KtScriptModule -> LLSourceDiagnosticProvider(moduleProvider, sessionProvider)
|
||||
else -> LLEmptyDiagnosticProvider
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun getInstance(project: Project): LLFirResolveSessionService =
|
||||
project.getService(LLFirResolveSessionService::class.java)
|
||||
|
||||
+3
-2
@@ -10,12 +10,13 @@ import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
|
||||
internal class LLFirLibraryOrLibrarySourceResolvableResolveSession(
|
||||
moduleProvider: LLModuleProvider,
|
||||
sessionProvider: LLSessionProvider
|
||||
sessionProvider: LLSessionProvider,
|
||||
diagnosticProvider: LLDiagnosticProvider
|
||||
) : LLFirResolvableResolveSession(
|
||||
moduleProvider = moduleProvider,
|
||||
moduleKindProvider = LLLibraryModuleKindProvider(moduleProvider.useSiteModule),
|
||||
sessionProvider = sessionProvider,
|
||||
diagnosticProvider = LLEmptyDiagnosticProvider
|
||||
diagnosticProvider = diagnosticProvider
|
||||
)
|
||||
|
||||
private class LLLibraryModuleKindProvider(private val useSiteModule: KtModule) : LLModuleKindProvider {
|
||||
|
||||
+3
-2
@@ -9,12 +9,13 @@ import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
|
||||
internal class LLFirNotUnderContentRootResolveSession(
|
||||
moduleProvider: LLModuleProvider,
|
||||
sessionProvider: LLSessionProvider
|
||||
sessionProvider: LLSessionProvider,
|
||||
diagnosticProvider: LLDiagnosticProvider
|
||||
) : LLFirResolvableResolveSession(
|
||||
moduleProvider = moduleProvider,
|
||||
moduleKindProvider = LLNotUnderContentRootModuleKindProvider(moduleProvider.useSiteModule),
|
||||
sessionProvider = sessionProvider,
|
||||
diagnosticProvider = LLEmptyDiagnosticProvider
|
||||
diagnosticProvider = diagnosticProvider
|
||||
)
|
||||
|
||||
private class LLNotUnderContentRootModuleKindProvider(private val useSiteModule: KtModule) : LLModuleKindProvider {
|
||||
|
||||
+3
-2
@@ -10,12 +10,13 @@ import org.jetbrains.kotlin.analysis.utils.errors.unexpectedElementError
|
||||
|
||||
internal class LLFirScriptResolveSession(
|
||||
moduleProvider: LLModuleProvider,
|
||||
sessionProvider: LLSessionProvider
|
||||
sessionProvider: LLSessionProvider,
|
||||
diagnosticProvider: LLDiagnosticProvider
|
||||
) : LLFirResolvableResolveSession(
|
||||
moduleProvider = moduleProvider,
|
||||
moduleKindProvider = LLScriptModuleKindProvider(moduleProvider.useSiteModule),
|
||||
sessionProvider = sessionProvider,
|
||||
diagnosticProvider = LLSourceDiagnosticProvider(moduleProvider, sessionProvider)
|
||||
diagnosticProvider = diagnosticProvider
|
||||
)
|
||||
|
||||
private class LLScriptModuleKindProvider(private val useSiteModule: KtModule) : LLModuleKindProvider {
|
||||
|
||||
+3
-2
@@ -13,12 +13,13 @@ import org.jetbrains.kotlin.analysis.utils.errors.unexpectedElementError
|
||||
|
||||
internal class LLFirSourceResolveSession(
|
||||
moduleProvider: LLModuleProvider,
|
||||
sessionProvider: LLSessionProvider
|
||||
sessionProvider: LLSessionProvider,
|
||||
diagnosticProvider: LLDiagnosticProvider
|
||||
) : LLFirResolvableResolveSession(
|
||||
moduleProvider = moduleProvider,
|
||||
moduleKindProvider = LLSourceModuleKindProvider,
|
||||
sessionProvider = sessionProvider,
|
||||
diagnosticProvider = LLSourceDiagnosticProvider(moduleProvider, sessionProvider)
|
||||
diagnosticProvider = diagnosticProvider
|
||||
)
|
||||
|
||||
private object LLSourceModuleKindProvider : LLModuleKindProvider {
|
||||
|
||||
Reference in New Issue
Block a user