[LL API] Replace 'isLibrarySession' with an inverted extension function

This commit is contained in:
Yan Zhulanow
2023-01-19 18:56:37 +09:00
committed by Space Team
parent f6f667c387
commit 6ff3eb1a8d
9 changed files with 16 additions and 18 deletions
@@ -40,7 +40,6 @@ internal class LLFirResolveSessionDepended(
override val project: Project get() = originalFirResolveSession.project
override val useSiteKtModule: KtModule get() = originalFirResolveSession.useSiteKtModule
override val useSiteFirSession get() = originalFirResolveSession.useSiteFirSession
override val isLibrarySession get() = false
private val scopeSessionProviderCache = SoftCachedMap.create<FirSession, LLFirScopeSessionProvider>(
project,
@@ -31,8 +31,6 @@ abstract class LLFirResolveSession {
abstract val useSiteKtModule: KtModule
abstract val isLibrarySession: Boolean
abstract fun getSessionFor(module: KtModule): LLFirSession
abstract fun getScopeSessionFor(firSession: FirSession): ScopeSession
@@ -22,9 +22,6 @@ internal class LLFirLibraryOrLibrarySourceResolvableResolveSession(
override val useSiteKtModule: KtModule,
sessionProvider: LLFirSessionProvider,
) : LLFirResolvableResolveSession(sessionProvider) {
override val isLibrarySession: Boolean
get() = true
override fun getDiagnostics(element: KtElement, filter: DiagnosticCheckerFilter): List<KtPsiDiagnostic> =
emptyList()
@@ -20,9 +20,6 @@ internal class LLFirNotUnderContentRootResolveSession(
override val useSiteKtModule: KtModule,
sessionProvider: LLFirSessionProvider,
) : LLFirResolvableResolveSession(sessionProvider) {
override val isLibrarySession: Boolean
get() = false
override fun getDiagnostics(element: KtElement, filter: DiagnosticCheckerFilter): List<KtPsiDiagnostic> =
emptyList()
@@ -24,9 +24,6 @@ internal class LLFirSourceResolveSession(
override val useSiteKtModule: KtModule,
sessionProvider: LLFirSessionProvider,
) : LLFirResolvableResolveSession(sessionProvider) {
override val isLibrarySession: Boolean
get() = false
override fun getDiagnostics(element: KtElement, filter: DiagnosticCheckerFilter): List<KtPsiDiagnostic> {
val moduleComponents = getModuleComponentsForElement(element)
return moduleComponents.diagnosticsCollector.getDiagnosticsFor(element, filter)
@@ -65,7 +65,7 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractLowLevelApiSingle
errorExpressionRenderer = FirErrorExpressionExtendedRenderer(),
)
resolveWithClearCaches(ktFile) { firResolveSession ->
check(!firResolveSession.isLibrarySession)
check(firResolveSession.isSourceSession)
val declarationToResolve = firResolveSession
.getOrBuildFirFile(ktFile)
.findResolveMe()
@@ -79,7 +79,7 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractLowLevelApiSingle
}
resolveWithClearCaches(ktFile) { llSession ->
check(!llSession.isLibrarySession)
check(llSession.isSourceSession)
val firFile = llSession.getOrBuildFirFile(ktFile)
firFile.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
resultBuilder.append("\nFILE RAW TO BODY:\n")
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.resolve.ImplicitReceiverStack
import org.jetbrains.kotlin.fir.resolve.SessionHolderImpl
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirSourceResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.DiagnosticCheckerFilter
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getDiagnostics
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirFile
@@ -23,6 +22,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.FileStruct
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.NonReanalyzableDeclarationStructureElement
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.ReanalyzableStructureElement
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.RootStructureElement
import org.jetbrains.kotlin.analysis.low.level.api.fir.isSourceSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.name
import org.jetbrains.kotlin.analysis.low.level.api.fir.resolveWithClearCaches
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirResolvableModuleSession
@@ -46,7 +46,7 @@ abstract class AbstractFirContextCollectionTest : AbstractLowLevelApiSingleFileT
register(BeforeElementDiagnosticCollectionHandler::class, handler)
}
) { firResolveSession ->
check(!firResolveSession.isLibrarySession)
check(firResolveSession.isSourceSession)
val session = firResolveSession.getSessionFor(ktFile.getKtModule()) as LLFirResolvableModuleSession
val fileStructureCache = session.moduleComponents.fileStructureCache
@@ -11,8 +11,8 @@ import com.intellij.psi.PsiElementVisitor
import com.intellij.psi.PsiErrorElement
import com.intellij.psi.impl.source.tree.LeafPsiElement
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirSourceResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getFirResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.isSourceSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirResolvableModuleSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AbstractLowLevelApiSingleFileTest
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirOutOfContentRootTestConfigurator
@@ -100,7 +100,7 @@ abstract class AbstractFileStructureTest : AbstractLowLevelApiSingleFileTest() {
private fun KtFile.getFileStructure(): FileStructure {
val moduleFirResolveSession = getFirResolveSession()
check(!moduleFirResolveSession.isLibrarySession)
check(moduleFirResolveSession.isSourceSession)
val session = moduleFirResolveSession.getSessionFor(getKtModule()) as LLFirResolvableModuleSession
return session.moduleComponents.fileStructureCache.getFileStructure(this)
}
@@ -7,6 +7,8 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir
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.state.LLFirNotUnderContentRootResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirSourceResolveSession
import org.jetbrains.kotlin.analysis.project.structure.getKtModule
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
@@ -43,3 +45,11 @@ internal inline fun <R> resolveWithClearCaches(
val firResolveSession = createFirResolveSessionForNoCaching(context.getKtModule(project), project, configureSession)
return action(firResolveSession)
}
internal val LLFirResolveSession.isSourceSession: Boolean
get() {
return when (this) {
is LLFirSourceResolveSession, is LLFirNotUnderContentRootResolveSession -> true
else -> false
}
}