[FIR IDE] Remove session scope default parameter from lazy resolve interface

This commit is contained in:
Igor Yakovlev
2021-06-14 17:40:09 +02:00
parent 52765c333d
commit 41c42a5016
13 changed files with 26 additions and 12 deletions
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.realPsi import org.jetbrains.kotlin.fir.realPsi
import org.jetbrains.kotlin.fir.resolve.symbolProvider import org.jetbrains.kotlin.fir.resolve.symbolProvider
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
@@ -108,6 +109,7 @@ internal class FirModuleResolveStateImpl(
firLazyDeclarationResolver.lazyResolveDeclaration( firLazyDeclarationResolver.lazyResolveDeclaration(
firDeclarationToResolve = nonLocalFirForNamedDeclaration, firDeclarationToResolve = nonLocalFirForNamedDeclaration,
scopeSession = ScopeSession(),
moduleFileCache = (nonLocalFirForNamedDeclaration.moduleData.session as FirIdeSourcesSession).cache, moduleFileCache = (nonLocalFirForNamedDeclaration.moduleData.session as FirIdeSourcesSession).cache,
toPhase = FirResolvePhase.BODY_RESOLVE, toPhase = FirResolvePhase.BODY_RESOLVE,
checkPCE = false, /*TODO*/ checkPCE = false, /*TODO*/
@@ -150,6 +152,7 @@ internal class FirModuleResolveStateImpl(
firLazyDeclarationResolver.lazyResolveDeclaration( firLazyDeclarationResolver.lazyResolveDeclaration(
firDeclarationToResolve = declaration, firDeclarationToResolve = declaration,
moduleFileCache = fileCache, moduleFileCache = fileCache,
scopeSession = ScopeSession(),
toPhase = toPhase, toPhase = toPhase,
checkPCE = true, checkPCE = true,
) )
@@ -165,6 +168,7 @@ internal class FirModuleResolveStateImpl(
firLazyDeclarationResolver.lazyResolveDeclaration( firLazyDeclarationResolver.lazyResolveDeclaration(
firDeclaration = declaration, firDeclaration = declaration,
moduleFileCache = fileCache, moduleFileCache = fileCache,
scopeSession = ScopeSession(),
toResolveType = type, toResolveType = type,
checkPCE = true, checkPCE = true,
) )
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.fir.low.level.api
import org.jetbrains.kotlin.fir.ThreadSafeMutableState import org.jetbrains.kotlin.fir.ThreadSafeMutableState
import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.transformers.FirPhaseManager import org.jetbrains.kotlin.fir.resolve.transformers.FirPhaseManager
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.ModuleFileCache import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.ModuleFileCache
@@ -30,6 +31,7 @@ internal class IdeFirPhaseManager(
lazyDeclarationResolver.lazyResolveDeclaration( lazyDeclarationResolver.lazyResolveDeclaration(
firDeclarationToResolve = fir, firDeclarationToResolve = fir,
moduleFileCache = cache, moduleFileCache = cache,
scopeSession = ScopeSession(),
toPhase = requiredPhase, toPhase = requiredPhase,
checkPCE = true checkPCE = true
) )
@@ -138,6 +138,7 @@ object LowLevelFirApiFacadeForResolveOnAir {
state.firLazyDeclarationResolver.lazyResolveFileDeclaration( state.firLazyDeclarationResolver.lazyResolveFileDeclaration(
firFile = firFile, firFile = firFile,
moduleFileCache = session.cache, moduleFileCache = session.cache,
scopeSession = ScopeSession(),
toPhase = FirResolvePhase.IMPORTS toPhase = FirResolvePhase.IMPORTS
) )
@@ -119,6 +119,7 @@ internal class FileStructure private constructor(
firLazyDeclarationResolver.lazyResolveDeclaration( firLazyDeclarationResolver.lazyResolveDeclaration(
firDeclarationToResolve = firDeclaration, firDeclarationToResolve = firDeclaration,
moduleFileCache = moduleFileCache, moduleFileCache = moduleFileCache,
scopeSession = ScopeSession(),
toPhase = FirResolvePhase.BODY_RESOLVE, toPhase = FirResolvePhase.BODY_RESOLVE,
checkPCE = true, checkPCE = true,
) )
@@ -9,6 +9,7 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.fir.psi
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
@@ -120,7 +121,7 @@ internal class ReanalyzableFunctionStructureElement(
val originalFunction = firSymbol.fir as FirSimpleFunction val originalFunction = firSymbol.fir as FirSimpleFunction
val designation = originalFunction.collectDesignation() val designation = originalFunction.collectDesignation()
val temporaryFunction = RawFirNonLocalDeclarationBuilder.buildWithRebind( val temporaryFunction = RawFirNonLocalDeclarationBuilder.buildWithFunctionSymbolRebind(
session = originalFunction.moduleData.session, session = originalFunction.moduleData.session,
scopeProvider = originalFunction.moduleData.session.firIdeProvider.kotlinScopeProvider, scopeProvider = originalFunction.moduleData.session.firIdeProvider.kotlinScopeProvider,
designation = designation, designation = designation,
@@ -142,6 +143,7 @@ internal class ReanalyzableFunctionStructureElement(
firLazyDeclarationResolver.lazyResolveDeclaration( firLazyDeclarationResolver.lazyResolveDeclaration(
firDeclarationToResolve = originalFunction, firDeclarationToResolve = originalFunction,
moduleFileCache = cache, moduleFileCache = cache,
scopeSession = ScopeSession(),
toPhase = FirResolvePhase.BODY_RESOLVE, toPhase = FirResolvePhase.BODY_RESOLVE,
checkPCE = true, checkPCE = true,
declarationPhaseDowngraded = true, declarationPhaseDowngraded = true,
@@ -176,7 +178,7 @@ internal class ReanalyzablePropertyStructureElement(
val originalProperty = firSymbol.fir val originalProperty = firSymbol.fir
val designation = originalProperty.collectDesignation() val designation = originalProperty.collectDesignation()
val temporaryProperty = RawFirNonLocalDeclarationBuilder.buildWithRebind( val temporaryProperty = RawFirNonLocalDeclarationBuilder.buildWithFunctionSymbolRebind(
session = originalProperty.moduleData.session, session = originalProperty.moduleData.session,
scopeProvider = originalProperty.moduleData.session.firIdeProvider.kotlinScopeProvider, scopeProvider = originalProperty.moduleData.session.firIdeProvider.kotlinScopeProvider,
designation = designation, designation = designation,
@@ -201,6 +203,7 @@ internal class ReanalyzablePropertyStructureElement(
firLazyDeclarationResolver.lazyResolveDeclaration( firLazyDeclarationResolver.lazyResolveDeclaration(
firDeclarationToResolve = originalProperty, firDeclarationToResolve = originalProperty,
moduleFileCache = cache, moduleFileCache = cache,
scopeSession = ScopeSession(),
toPhase = FirResolvePhase.BODY_RESOLVE, toPhase = FirResolvePhase.BODY_RESOLVE,
checkPCE = true, checkPCE = true,
declarationPhaseDowngraded = true, declarationPhaseDowngraded = true,
@@ -34,7 +34,7 @@ internal object FirLazyBodiesCalculator {
fun calculateLazyBodiesForFunction(designation: FirDeclarationDesignation) { fun calculateLazyBodiesForFunction(designation: FirDeclarationDesignation) {
val simpleFunction = designation.declaration as FirSimpleFunction val simpleFunction = designation.declaration as FirSimpleFunction
if (simpleFunction.body !is FirLazyBlock) return if (simpleFunction.body !is FirLazyBlock) return
val newFunction = RawFirNonLocalDeclarationBuilder.buildWithRebind( val newFunction = RawFirNonLocalDeclarationBuilder.buildWithFunctionSymbolRebind(
session = simpleFunction.moduleData.session, session = simpleFunction.moduleData.session,
scopeProvider = simpleFunction.moduleData.session.firIdeProvider.kotlinScopeProvider, scopeProvider = simpleFunction.moduleData.session.firIdeProvider.kotlinScopeProvider,
designation = designation, designation = designation,
@@ -51,7 +51,7 @@ internal object FirLazyBodiesCalculator {
require(!secondaryConstructor.isPrimary) require(!secondaryConstructor.isPrimary)
if (secondaryConstructor.body !is FirLazyBlock) return if (secondaryConstructor.body !is FirLazyBlock) return
val newFunction = RawFirNonLocalDeclarationBuilder.buildWithRebind( val newFunction = RawFirNonLocalDeclarationBuilder.buildWithFunctionSymbolRebind(
session = secondaryConstructor.moduleData.session, session = secondaryConstructor.moduleData.session,
scopeProvider = secondaryConstructor.moduleData.session.firIdeProvider.kotlinScopeProvider, scopeProvider = secondaryConstructor.moduleData.session.firIdeProvider.kotlinScopeProvider,
designation = designation, designation = designation,
@@ -67,7 +67,7 @@ internal object FirLazyBodiesCalculator {
val firProperty = designation.declaration as FirProperty val firProperty = designation.declaration as FirProperty
if (!needCalculatingLazyBodyForProperty(firProperty)) return if (!needCalculatingLazyBodyForProperty(firProperty)) return
val newProperty = RawFirNonLocalDeclarationBuilder.buildWithRebind( val newProperty = RawFirNonLocalDeclarationBuilder.buildWithFunctionSymbolRebind(
session = firProperty.moduleData.session, session = firProperty.moduleData.session,
scopeProvider = firProperty.moduleData.session.firIdeProvider.kotlinScopeProvider, scopeProvider = firProperty.moduleData.session.firIdeProvider.kotlinScopeProvider,
designation = designation, designation = designation,
@@ -37,7 +37,7 @@ internal fun FirLazyDeclarationResolver.lazyResolveDeclaration(
firDeclaration: FirDeclaration, firDeclaration: FirDeclaration,
moduleFileCache: ModuleFileCache, moduleFileCache: ModuleFileCache,
toResolveType: ResolveType, toResolveType: ResolveType,
scopeSession: ScopeSession = ScopeSession(), scopeSession: ScopeSession,
checkPCE: Boolean = false, checkPCE: Boolean = false,
) { ) {
when (toResolveType) { when (toResolveType) {
@@ -108,7 +108,7 @@ internal class FirLazyDeclarationResolver(private val firFileBuilder: FirFileBui
firFile: FirFile, firFile: FirFile,
moduleFileCache: ModuleFileCache, moduleFileCache: ModuleFileCache,
toPhase: FirResolvePhase, toPhase: FirResolvePhase,
scopeSession: ScopeSession = ScopeSession(), scopeSession: ScopeSession,
checkPCE: Boolean = false, checkPCE: Boolean = false,
) { ) {
moduleFileCache.firFileLockProvider.runCustomResolveUnderLock(firFile, checkPCE) { moduleFileCache.firFileLockProvider.runCustomResolveUnderLock(firFile, checkPCE) {
@@ -186,7 +186,7 @@ internal class FirLazyDeclarationResolver(private val firFileBuilder: FirFileBui
fun lazyResolveDeclaration( fun lazyResolveDeclaration(
firDeclarationToResolve: FirDeclaration, firDeclarationToResolve: FirDeclaration,
moduleFileCache: ModuleFileCache, moduleFileCache: ModuleFileCache,
scopeSession: ScopeSession = ScopeSession(), scopeSession: ScopeSession,
toPhase: FirResolvePhase, toPhase: FirResolvePhase,
checkPCE: Boolean, checkPCE: Boolean,
declarationPhaseDowngraded: Boolean = false, declarationPhaseDowngraded: Boolean = false,
@@ -46,7 +46,7 @@ internal class RawFirNonLocalDeclarationBuilder private constructor(
} }
} }
fun buildWithRebind( fun buildWithFunctionSymbolRebind(
session: FirSession, session: FirSession,
scopeProvider: FirScopeProvider, scopeProvider: FirScopeProvider,
designation: FirDeclarationDesignation, designation: FirDeclarationDesignation,
@@ -54,5 +54,7 @@ internal class FirFileAnnotationsResolveTransformer(
check(annotations.all { it.resolveStatus == FirAnnotationResolveStatus.Resolved }) { "Annotation was not resolved" } check(annotations.all { it.resolveStatus == FirAnnotationResolveStatus.Resolved }) { "Annotation was not resolved" }
} }
override fun ensureResolved(declaration: FirDeclaration) = error("Not implemented")
override fun needReplacePhase(firDeclaration: FirDeclaration): Boolean = false override fun needReplacePhase(firDeclaration: FirDeclaration): Boolean = false
} }
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirDeclarationDesignation
internal interface FirLazyTransformerForIDE { internal interface FirLazyTransformerForIDE {
fun transformDeclaration(phaseRunner: FirPhaseRunner) fun transformDeclaration(phaseRunner: FirPhaseRunner)
fun ensureResolved(declaration: FirDeclaration): Unit = error("Not implemented") fun ensureResolved(declaration: FirDeclaration)
fun ensureResolvedDeep(declaration: FirDeclaration) { fun ensureResolvedDeep(declaration: FirDeclaration) {
if (!enableDeepEnsure) return if (!enableDeepEnsure) return
ensureResolved(declaration) ensureResolved(declaration)
@@ -68,6 +68,7 @@ internal interface FirLazyTransformerForIDE {
val DUMMY = object : FirLazyTransformerForIDE { val DUMMY = object : FirLazyTransformerForIDE {
override fun transformDeclaration(phaseRunner: FirPhaseRunner) = Unit override fun transformDeclaration(phaseRunner: FirPhaseRunner) = Unit
override fun ensureResolved(declaration: FirDeclaration) = error("Not implemented")
} }
} }
} }
@@ -69,6 +69,6 @@ internal object LazyTransformerFactory {
towerDataContextCollector, towerDataContextCollector,
firProviderInterceptor, firProviderInterceptor,
) )
else -> error("Non-lazy phase $this") else -> error("Non-lazy phase $phase")
} }
} }
@@ -162,7 +162,7 @@ abstract class AbstractCompilerBasedTest : KotlinLightCodeInsightFixtureTestCase
try { try {
FirLazyTransformerForIDE.enableDeepEnsure = true FirLazyTransformerForIDE.enableDeepEnsure = true
TestRunner(configuration).runTest(path) TestRunner(configuration).runTest(path)
} catch (_: Exception) { } finally {
FirLazyTransformerForIDE.enableDeepEnsure = oldEnableDeepEnsure FirLazyTransformerForIDE.enableDeepEnsure = oldEnableDeepEnsure
} }
} }