[kotlin fir] fix creating symbol not in analysis scope

^KTIJ-21504 fixed
This commit is contained in:
Ilya Kirillov
2022-04-19 13:17:28 +02:00
parent 25d6439471
commit 3b4eb2d788
7 changed files with 113 additions and 7 deletions
@@ -13,9 +13,11 @@ import org.jetbrains.kotlin.analysis.api.fir.components.*
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirOverrideInfoProvider
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirSymbolProvider
import org.jetbrains.kotlin.analysis.api.fir.utils.threadLocal
import org.jetbrains.kotlin.analysis.api.impl.base.components.KtAnalysisScopeProviderImpl
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LowLevelFirApiFacadeForResolveOnAir
import org.jetbrains.kotlin.analysis.project.structure.KtModule
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.moduleData
import org.jetbrains.kotlin.fir.resolve.ScopeSession
@@ -34,6 +36,8 @@ private constructor(
private val mode: AnalysisSessionMode,
) : KtAnalysisSession(token) {
override val useSiteModule: KtModule get() = firResolveState.module
private enum class AnalysisSessionMode {
REGULAR,
DEPENDENT_COPY
@@ -92,6 +96,8 @@ private constructor(
override val typesCreatorImpl: KtTypeCreator = KtFirTypeCreator(this, token)
override val analysisScopeProviderImpl: KtAnalysisScopeProvider = KtAnalysisScopeProviderImpl(this, token)
override fun createContextDependentCopy(originalKtFile: KtFile, elementToReanalyze: KtElement): KtAnalysisSession {
check(mode == AnalysisSessionMode.REGULAR) {
"Cannot create context-dependent copy of KtAnalysis session from a context dependent one"