[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.realPsi
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.ModuleSourceInfo
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
@@ -108,6 +109,7 @@ internal class FirModuleResolveStateImpl(
firLazyDeclarationResolver.lazyResolveDeclaration(
firDeclarationToResolve = nonLocalFirForNamedDeclaration,
scopeSession = ScopeSession(),
moduleFileCache = (nonLocalFirForNamedDeclaration.moduleData.session as FirIdeSourcesSession).cache,
toPhase = FirResolvePhase.BODY_RESOLVE,
checkPCE = false, /*TODO*/
@@ -150,6 +152,7 @@ internal class FirModuleResolveStateImpl(
firLazyDeclarationResolver.lazyResolveDeclaration(
firDeclarationToResolve = declaration,
moduleFileCache = fileCache,
scopeSession = ScopeSession(),
toPhase = toPhase,
checkPCE = true,
)
@@ -165,6 +168,7 @@ internal class FirModuleResolveStateImpl(
firLazyDeclarationResolver.lazyResolveDeclaration(
firDeclaration = declaration,
moduleFileCache = fileCache,
scopeSession = ScopeSession(),
toResolveType = type,
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.declarations.FirDeclaration
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.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.ModuleFileCache
@@ -30,6 +31,7 @@ internal class IdeFirPhaseManager(
lazyDeclarationResolver.lazyResolveDeclaration(
firDeclarationToResolve = fir,
moduleFileCache = cache,
scopeSession = ScopeSession(),
toPhase = requiredPhase,
checkPCE = true
)
@@ -138,6 +138,7 @@ object LowLevelFirApiFacadeForResolveOnAir {
state.firLazyDeclarationResolver.lazyResolveFileDeclaration(
firFile = firFile,
moduleFileCache = session.cache,
scopeSession = ScopeSession(),
toPhase = FirResolvePhase.IMPORTS
)
@@ -119,6 +119,7 @@ internal class FileStructure private constructor(
firLazyDeclarationResolver.lazyResolveDeclaration(
firDeclarationToResolve = firDeclaration,
moduleFileCache = moduleFileCache,
scopeSession = ScopeSession(),
toPhase = FirResolvePhase.BODY_RESOLVE,
checkPCE = true,
)
@@ -9,6 +9,7 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.declarations.*
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.impl.FirFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
@@ -120,7 +121,7 @@ internal class ReanalyzableFunctionStructureElement(
val originalFunction = firSymbol.fir as FirSimpleFunction
val designation = originalFunction.collectDesignation()
val temporaryFunction = RawFirNonLocalDeclarationBuilder.buildWithRebind(
val temporaryFunction = RawFirNonLocalDeclarationBuilder.buildWithFunctionSymbolRebind(
session = originalFunction.moduleData.session,
scopeProvider = originalFunction.moduleData.session.firIdeProvider.kotlinScopeProvider,
designation = designation,
@@ -142,6 +143,7 @@ internal class ReanalyzableFunctionStructureElement(
firLazyDeclarationResolver.lazyResolveDeclaration(
firDeclarationToResolve = originalFunction,
moduleFileCache = cache,
scopeSession = ScopeSession(),
toPhase = FirResolvePhase.BODY_RESOLVE,
checkPCE = true,
declarationPhaseDowngraded = true,
@@ -176,7 +178,7 @@ internal class ReanalyzablePropertyStructureElement(
val originalProperty = firSymbol.fir
val designation = originalProperty.collectDesignation()
val temporaryProperty = RawFirNonLocalDeclarationBuilder.buildWithRebind(
val temporaryProperty = RawFirNonLocalDeclarationBuilder.buildWithFunctionSymbolRebind(
session = originalProperty.moduleData.session,
scopeProvider = originalProperty.moduleData.session.firIdeProvider.kotlinScopeProvider,
designation = designation,
@@ -201,6 +203,7 @@ internal class ReanalyzablePropertyStructureElement(
firLazyDeclarationResolver.lazyResolveDeclaration(
firDeclarationToResolve = originalProperty,
moduleFileCache = cache,
scopeSession = ScopeSession(),
toPhase = FirResolvePhase.BODY_RESOLVE,
checkPCE = true,
declarationPhaseDowngraded = true,
@@ -34,7 +34,7 @@ internal object FirLazyBodiesCalculator {
fun calculateLazyBodiesForFunction(designation: FirDeclarationDesignation) {
val simpleFunction = designation.declaration as FirSimpleFunction
if (simpleFunction.body !is FirLazyBlock) return
val newFunction = RawFirNonLocalDeclarationBuilder.buildWithRebind(
val newFunction = RawFirNonLocalDeclarationBuilder.buildWithFunctionSymbolRebind(
session = simpleFunction.moduleData.session,
scopeProvider = simpleFunction.moduleData.session.firIdeProvider.kotlinScopeProvider,
designation = designation,
@@ -51,7 +51,7 @@ internal object FirLazyBodiesCalculator {
require(!secondaryConstructor.isPrimary)
if (secondaryConstructor.body !is FirLazyBlock) return
val newFunction = RawFirNonLocalDeclarationBuilder.buildWithRebind(
val newFunction = RawFirNonLocalDeclarationBuilder.buildWithFunctionSymbolRebind(
session = secondaryConstructor.moduleData.session,
scopeProvider = secondaryConstructor.moduleData.session.firIdeProvider.kotlinScopeProvider,
designation = designation,
@@ -67,7 +67,7 @@ internal object FirLazyBodiesCalculator {
val firProperty = designation.declaration as FirProperty
if (!needCalculatingLazyBodyForProperty(firProperty)) return
val newProperty = RawFirNonLocalDeclarationBuilder.buildWithRebind(
val newProperty = RawFirNonLocalDeclarationBuilder.buildWithFunctionSymbolRebind(
session = firProperty.moduleData.session,
scopeProvider = firProperty.moduleData.session.firIdeProvider.kotlinScopeProvider,
designation = designation,
@@ -37,7 +37,7 @@ internal fun FirLazyDeclarationResolver.lazyResolveDeclaration(
firDeclaration: FirDeclaration,
moduleFileCache: ModuleFileCache,
toResolveType: ResolveType,
scopeSession: ScopeSession = ScopeSession(),
scopeSession: ScopeSession,
checkPCE: Boolean = false,
) {
when (toResolveType) {
@@ -108,7 +108,7 @@ internal class FirLazyDeclarationResolver(private val firFileBuilder: FirFileBui
firFile: FirFile,
moduleFileCache: ModuleFileCache,
toPhase: FirResolvePhase,
scopeSession: ScopeSession = ScopeSession(),
scopeSession: ScopeSession,
checkPCE: Boolean = false,
) {
moduleFileCache.firFileLockProvider.runCustomResolveUnderLock(firFile, checkPCE) {
@@ -186,7 +186,7 @@ internal class FirLazyDeclarationResolver(private val firFileBuilder: FirFileBui
fun lazyResolveDeclaration(
firDeclarationToResolve: FirDeclaration,
moduleFileCache: ModuleFileCache,
scopeSession: ScopeSession = ScopeSession(),
scopeSession: ScopeSession,
toPhase: FirResolvePhase,
checkPCE: Boolean,
declarationPhaseDowngraded: Boolean = false,
@@ -46,7 +46,7 @@ internal class RawFirNonLocalDeclarationBuilder private constructor(
}
}
fun buildWithRebind(
fun buildWithFunctionSymbolRebind(
session: FirSession,
scopeProvider: FirScopeProvider,
designation: FirDeclarationDesignation,
@@ -54,5 +54,7 @@ internal class FirFileAnnotationsResolveTransformer(
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
}
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirDeclarationDesignation
internal interface FirLazyTransformerForIDE {
fun transformDeclaration(phaseRunner: FirPhaseRunner)
fun ensureResolved(declaration: FirDeclaration): Unit = error("Not implemented")
fun ensureResolved(declaration: FirDeclaration)
fun ensureResolvedDeep(declaration: FirDeclaration) {
if (!enableDeepEnsure) return
ensureResolved(declaration)
@@ -68,6 +68,7 @@ internal interface FirLazyTransformerForIDE {
val DUMMY = object : FirLazyTransformerForIDE {
override fun transformDeclaration(phaseRunner: FirPhaseRunner) = Unit
override fun ensureResolved(declaration: FirDeclaration) = error("Not implemented")
}
}
}
@@ -69,6 +69,6 @@ internal object LazyTransformerFactory {
towerDataContextCollector,
firProviderInterceptor,
)
else -> error("Non-lazy phase $this")
else -> error("Non-lazy phase $phase")
}
}
@@ -162,7 +162,7 @@ abstract class AbstractCompilerBasedTest : KotlinLightCodeInsightFixtureTestCase
try {
FirLazyTransformerForIDE.enableDeepEnsure = true
TestRunner(configuration).runTest(path)
} catch (_: Exception) {
} finally {
FirLazyTransformerForIDE.enableDeepEnsure = oldEnableDeepEnsure
}
}