[LL API] Move 'LLModuleKindProvider' instantiation out
This commit is contained in:
+36
-4
@@ -8,8 +8,10 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir
|
|||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.annotations.TestOnly
|
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.api.LLFirResolveSession
|
||||||
|
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.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.sessions.LLFirSessionCache
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.KtModuleKind
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLDiagnosticProvider
|
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.LLEmptyDiagnosticProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirLibraryOrLibrarySourceResolvableResolveSession
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirLibraryOrLibrarySourceResolvableResolveSession
|
||||||
@@ -17,11 +19,14 @@ 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.LLModuleKindProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLModuleProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLModuleProvider
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLSimpleResolvableModuleKindProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLSessionProvider
|
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.state.LLSourceDiagnosticProvider
|
||||||
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.*
|
||||||
|
import org.jetbrains.kotlin.analysis.utils.errors.unexpectedElementError
|
||||||
|
|
||||||
class LLFirResolveSessionService(project: Project) {
|
class LLFirResolveSessionService(project: Project) {
|
||||||
private val cache = LLFirSessionCache.getInstance(project)
|
private val cache = LLFirSessionCache.getInstance(project)
|
||||||
@@ -45,10 +50,10 @@ class LLFirResolveSessionService(project: Project) {
|
|||||||
val diagnosticProvider = createDiagnosticProvider(moduleProvider, sessionProvider)
|
val diagnosticProvider = createDiagnosticProvider(moduleProvider, sessionProvider)
|
||||||
|
|
||||||
return when (module) {
|
return when (module) {
|
||||||
is KtSourceModule -> LLFirSourceResolveSession(moduleProvider, sessionProvider, diagnosticProvider)
|
is KtSourceModule -> LLFirSourceResolveSession(moduleProvider, LLSourceModuleKindProvider, sessionProvider, diagnosticProvider)
|
||||||
is KtLibraryModule, is KtLibrarySourceModule -> LLFirLibraryOrLibrarySourceResolvableResolveSession(moduleProvider, sessionProvider, diagnosticProvider)
|
is KtLibraryModule, is KtLibrarySourceModule -> LLFirLibraryOrLibrarySourceResolvableResolveSession(moduleProvider, LLLibraryModuleKindProvider(module), sessionProvider, diagnosticProvider)
|
||||||
is KtScriptModule -> LLFirScriptResolveSession(moduleProvider, sessionProvider, diagnosticProvider)
|
is KtScriptModule -> LLFirScriptResolveSession(moduleProvider, LLScriptModuleKindProvider(module), sessionProvider, diagnosticProvider)
|
||||||
is KtNotUnderContentRootModule -> LLFirNotUnderContentRootResolveSession(moduleProvider, sessionProvider, diagnosticProvider)
|
is KtNotUnderContentRootModule -> LLSimpleResolvableModuleKindProvider(moduleProvider, LLNotUnderContentRootModuleKindProvider(module), sessionProvider, diagnosticProvider)
|
||||||
else -> {
|
else -> {
|
||||||
errorWithFirSpecificEntries("Unexpected ${module::class.java}") {
|
errorWithFirSpecificEntries("Unexpected ${module::class.java}") {
|
||||||
withEntry("module", module) { it.moduleDescription }
|
withEntry("module", module) { it.moduleDescription }
|
||||||
@@ -69,3 +74,30 @@ class LLFirResolveSessionService(project: Project) {
|
|||||||
project.getService(LLFirResolveSessionService::class.java)
|
project.getService(LLFirResolveSessionService::class.java)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private object LLSourceModuleKindProvider : LLModuleKindProvider {
|
||||||
|
override fun getKind(module: KtModule): KtModuleKind {
|
||||||
|
return when (module) {
|
||||||
|
is KtSourceModule -> KtModuleKind.RESOLVABLE_MODULE
|
||||||
|
is KtBuiltinsModule, is KtLibraryModule -> KtModuleKind.BINARY_MODULE
|
||||||
|
else -> unexpectedElementError("module", module)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class LLLibraryModuleKindProvider(private val useSiteModule: KtModule) : LLModuleKindProvider {
|
||||||
|
override fun getKind(module: KtModule): KtModuleKind {
|
||||||
|
LLFirLibraryOrLibrarySourceResolvableModuleSession.checkIsValidKtModule(module)
|
||||||
|
return if (module == useSiteModule) KtModuleKind.RESOLVABLE_MODULE else KtModuleKind.BINARY_MODULE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class LLScriptModuleKindProvider(private val useSiteModule: KtModule) : LLModuleKindProvider {
|
||||||
|
override fun getKind(module: KtModule): KtModuleKind {
|
||||||
|
return when (module) {
|
||||||
|
useSiteModule, is KtSourceModule -> KtModuleKind.RESOLVABLE_MODULE
|
||||||
|
is KtBuiltinsModule, is KtLibraryModule -> KtModuleKind.BINARY_MODULE
|
||||||
|
else -> unexpectedElementError("module", module)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-11
@@ -5,23 +5,14 @@
|
|||||||
|
|
||||||
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.project.structure.KtModule
|
|
||||||
|
|
||||||
internal class LLFirLibraryOrLibrarySourceResolvableResolveSession(
|
internal class LLFirLibraryOrLibrarySourceResolvableResolveSession(
|
||||||
moduleProvider: LLModuleProvider,
|
moduleProvider: LLModuleProvider,
|
||||||
|
moduleKindProvider: LLModuleKindProvider,
|
||||||
sessionProvider: LLSessionProvider,
|
sessionProvider: LLSessionProvider,
|
||||||
diagnosticProvider: LLDiagnosticProvider
|
diagnosticProvider: LLDiagnosticProvider
|
||||||
) : LLFirResolvableResolveSession(
|
) : LLFirResolvableResolveSession(
|
||||||
moduleProvider = moduleProvider,
|
moduleProvider = moduleProvider,
|
||||||
moduleKindProvider = LLLibraryModuleKindProvider(moduleProvider.useSiteModule),
|
moduleKindProvider = moduleKindProvider,
|
||||||
sessionProvider = sessionProvider,
|
sessionProvider = sessionProvider,
|
||||||
diagnosticProvider = diagnosticProvider
|
diagnosticProvider = diagnosticProvider
|
||||||
)
|
)
|
||||||
|
|
||||||
private class LLLibraryModuleKindProvider(private val useSiteModule: KtModule) : LLModuleKindProvider {
|
|
||||||
override fun getKind(module: KtModule): KtModuleKind {
|
|
||||||
LLFirLibraryOrLibrarySourceResolvableModuleSession.checkIsValidKtModule(module)
|
|
||||||
return if (module == useSiteModule) KtModuleKind.RESOLVABLE_MODULE else KtModuleKind.BINARY_MODULE
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+2
-12
@@ -5,24 +5,14 @@
|
|||||||
|
|
||||||
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.project.structure.KtModule
|
|
||||||
|
|
||||||
internal class LLFirNotUnderContentRootResolveSession(
|
internal class LLFirNotUnderContentRootResolveSession(
|
||||||
moduleProvider: LLModuleProvider,
|
moduleProvider: LLModuleProvider,
|
||||||
|
moduleKindProvider: LLModuleKindProvider,
|
||||||
sessionProvider: LLSessionProvider,
|
sessionProvider: LLSessionProvider,
|
||||||
diagnosticProvider: LLDiagnosticProvider
|
diagnosticProvider: LLDiagnosticProvider
|
||||||
) : LLFirResolvableResolveSession(
|
) : LLFirResolvableResolveSession(
|
||||||
moduleProvider = moduleProvider,
|
moduleProvider = moduleProvider,
|
||||||
moduleKindProvider = LLNotUnderContentRootModuleKindProvider(moduleProvider.useSiteModule),
|
moduleKindProvider = moduleKindProvider,
|
||||||
sessionProvider = sessionProvider,
|
sessionProvider = sessionProvider,
|
||||||
diagnosticProvider = diagnosticProvider
|
diagnosticProvider = diagnosticProvider
|
||||||
)
|
)
|
||||||
|
|
||||||
private class LLNotUnderContentRootModuleKindProvider(private val useSiteModule: KtModule) : LLModuleKindProvider {
|
|
||||||
override fun getKind(module: KtModule): KtModuleKind {
|
|
||||||
return when (module) {
|
|
||||||
useSiteModule -> KtModuleKind.RESOLVABLE_MODULE
|
|
||||||
else -> KtModuleKind.BINARY_MODULE
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+2
-14
@@ -5,26 +5,14 @@
|
|||||||
|
|
||||||
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.project.structure.*
|
|
||||||
import org.jetbrains.kotlin.analysis.utils.errors.unexpectedElementError
|
|
||||||
|
|
||||||
internal class LLFirScriptResolveSession(
|
internal class LLFirScriptResolveSession(
|
||||||
moduleProvider: LLModuleProvider,
|
moduleProvider: LLModuleProvider,
|
||||||
|
moduleKindProvider: LLModuleKindProvider,
|
||||||
sessionProvider: LLSessionProvider,
|
sessionProvider: LLSessionProvider,
|
||||||
diagnosticProvider: LLDiagnosticProvider
|
diagnosticProvider: LLDiagnosticProvider
|
||||||
) : LLFirResolvableResolveSession(
|
) : LLFirResolvableResolveSession(
|
||||||
moduleProvider = moduleProvider,
|
moduleProvider = moduleProvider,
|
||||||
moduleKindProvider = LLScriptModuleKindProvider(moduleProvider.useSiteModule),
|
moduleKindProvider = moduleKindProvider,
|
||||||
sessionProvider = sessionProvider,
|
sessionProvider = sessionProvider,
|
||||||
diagnosticProvider = diagnosticProvider
|
diagnosticProvider = diagnosticProvider
|
||||||
)
|
)
|
||||||
|
|
||||||
private class LLScriptModuleKindProvider(private val useSiteModule: KtModule) : LLModuleKindProvider {
|
|
||||||
override fun getKind(module: KtModule): KtModuleKind {
|
|
||||||
return when (module) {
|
|
||||||
useSiteModule, is KtSourceModule -> KtModuleKind.RESOLVABLE_MODULE
|
|
||||||
is KtBuiltinsModule, is KtLibraryModule -> KtModuleKind.BINARY_MODULE
|
|
||||||
else -> unexpectedElementError("module", module)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+2
-18
@@ -5,30 +5,14 @@
|
|||||||
|
|
||||||
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.project.structure.KtBuiltinsModule
|
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtLibraryModule
|
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
|
|
||||||
import org.jetbrains.kotlin.analysis.utils.errors.unexpectedElementError
|
|
||||||
|
|
||||||
internal class LLFirSourceResolveSession(
|
internal class LLFirSourceResolveSession(
|
||||||
moduleProvider: LLModuleProvider,
|
moduleProvider: LLModuleProvider,
|
||||||
|
moduleKindProvider: LLModuleKindProvider,
|
||||||
sessionProvider: LLSessionProvider,
|
sessionProvider: LLSessionProvider,
|
||||||
diagnosticProvider: LLDiagnosticProvider
|
diagnosticProvider: LLDiagnosticProvider
|
||||||
) : LLFirResolvableResolveSession(
|
) : LLFirResolvableResolveSession(
|
||||||
moduleProvider = moduleProvider,
|
moduleProvider = moduleProvider,
|
||||||
moduleKindProvider = LLSourceModuleKindProvider,
|
moduleKindProvider = moduleKindProvider,
|
||||||
sessionProvider = sessionProvider,
|
sessionProvider = sessionProvider,
|
||||||
diagnosticProvider = diagnosticProvider
|
diagnosticProvider = diagnosticProvider
|
||||||
)
|
)
|
||||||
|
|
||||||
private object LLSourceModuleKindProvider : LLModuleKindProvider {
|
|
||||||
override fun getKind(module: KtModule): KtModuleKind {
|
|
||||||
return when (module) {
|
|
||||||
is KtSourceModule -> KtModuleKind.RESOLVABLE_MODULE
|
|
||||||
is KtBuiltinsModule,
|
|
||||||
is KtLibraryModule -> KtModuleKind.BINARY_MODULE
|
|
||||||
else -> unexpectedElementError("module", module)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+9
@@ -35,3 +35,12 @@ enum class KtModuleKind {
|
|||||||
*/
|
*/
|
||||||
BINARY_MODULE
|
BINARY_MODULE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal class LLSimpleResolvableModuleKindProvider(private val useSiteModule: KtModule) : LLModuleKindProvider {
|
||||||
|
override fun getKind(module: KtModule): KtModuleKind {
|
||||||
|
return when (module) {
|
||||||
|
useSiteModule -> KtModuleKind.RESOLVABLE_MODULE
|
||||||
|
else -> KtModuleKind.BINARY_MODULE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user