Analysis API: recreate analysis session when not found by resolve state

This commit is contained in:
Ilya Kirillov
2021-09-23 10:30:40 +02:00
parent 0915dac1f9
commit d63c136854
7 changed files with 15 additions and 13 deletions
@@ -31,7 +31,6 @@ private constructor(
val firResolveState: FirModuleResolveState,
internal val firSymbolBuilder: KtSymbolByFirBuilder,
token: ValidityToken,
element: KtElement,
private val mode: AnalysisSessionMode,
) : KtAnalysisSession(token) {
@@ -110,7 +109,6 @@ private constructor(
contextResolveState,
firSymbolBuilder.createReadOnlyCopy(contextResolveState),
token,
originalKtFile,
AnalysisSessionMode.DEPENDENT_COPY
)
}
@@ -118,15 +116,12 @@ private constructor(
val rootModuleSession: FirSession get() = firResolveState.rootModuleSession
val firSymbolProvider: FirSymbolProvider get() = rootModuleSession.symbolProvider
val targetPlatform: TargetPlatform get() = rootModuleSession.moduleData.platform
val searchScope: GlobalSearchScope = element.resolveScope//todo
companion object {
@InvalidWayOfUsingAnalysisSession
@Deprecated("Please use org.jetbrains.kotlin.analysis.api.KtAnalysisSessionProviderKt.analyze")
internal fun createAnalysisSessionByResolveState(
firResolveState: FirModuleResolveState,
token: ValidityToken,
element: KtElement,
): KtFirAnalysisSession {
val project = firResolveState.project
val firSymbolBuilder = KtSymbolByFirBuilder(
@@ -139,7 +134,6 @@ private constructor(
firResolveState,
firSymbolBuilder,
token,
element,
AnalysisSessionMode.REGULAR,
)
}
@@ -30,9 +30,10 @@ class KtFirAnalysisSessionProvider(project: Project) : CachingKtAnalysisSessionP
override fun createAnalysisSession(
resolveState: FirModuleResolveState,
validityToken: ValidityToken,
contextElement: KtElement
): KtAnalysisSession {
@Suppress("DEPRECATION")
return KtFirAnalysisSession.createAnalysisSessionByResolveState(resolveState, validityToken, contextElement)
return KtFirAnalysisSession.createAnalysisSessionByResolveState(resolveState, validityToken)
}
}
}
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.analysis.api.fir.components
import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
@@ -212,7 +213,7 @@ internal class KtFirScopeProvider(
project,
builder,
token,
analysisSession.searchScope,
GlobalSearchScope.allScope(project), // todo
analysisSession.targetPlatform
)
is FirContainingNamesAwareScope -> KtFirDelegatingScopeImpl(firScope, builder, token)