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