[fir low level, refactoring] rename LLFirModuleResolveState -> LLFirResolveSession
This commit is contained in:
+18
-18
@@ -15,7 +15,7 @@ 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.LLFirResolveSession
|
||||
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
|
||||
@@ -30,13 +30,13 @@ import org.jetbrains.kotlin.psi.KtFile
|
||||
internal class KtFirAnalysisSession
|
||||
private constructor(
|
||||
private val project: Project,
|
||||
val firResolveState: LLFirModuleResolveState,
|
||||
val firResolveSession: LLFirResolveSession,
|
||||
internal val firSymbolBuilder: KtSymbolByFirBuilder,
|
||||
token: ValidityToken,
|
||||
private val mode: AnalysisSessionMode,
|
||||
) : KtAnalysisSession(token) {
|
||||
|
||||
override val useSiteModule: KtModule get() = firResolveState.useSiteKtModule
|
||||
override val useSiteModule: KtModule get() = firResolveSession.useSiteKtModule
|
||||
|
||||
private enum class AnalysisSessionMode {
|
||||
REGULAR,
|
||||
@@ -55,19 +55,19 @@ private constructor(
|
||||
|
||||
override val samResolverImpl = KtFirSamResolver(this, token)
|
||||
|
||||
override val scopeProviderImpl by threadLocal { KtFirScopeProvider(this, firSymbolBuilder, project, firResolveState, token) }
|
||||
override val scopeProviderImpl by threadLocal { KtFirScopeProvider(this, firSymbolBuilder, project, firResolveSession, token) }
|
||||
|
||||
override val symbolProviderImpl =
|
||||
KtFirSymbolProvider(this, firResolveState.useSiteFirSession.symbolProvider, firResolveState, firSymbolBuilder, token)
|
||||
KtFirSymbolProvider(this, firResolveSession.useSiteFirSession.symbolProvider, firResolveSession, firSymbolBuilder, token)
|
||||
|
||||
override val completionCandidateCheckerImpl = KtFirCompletionCandidateChecker(this, token)
|
||||
|
||||
override val symbolDeclarationOverridesProviderImpl =
|
||||
KtFirSymbolDeclarationOverridesProvider(this, token)
|
||||
|
||||
override val referenceShortenerImpl = KtFirReferenceShortener(this, token, firResolveState)
|
||||
override val referenceShortenerImpl = KtFirReferenceShortener(this, token, firResolveSession)
|
||||
|
||||
override val importOptimizerImpl: KtImportOptimizer = KtFirImportOptimizer(token, firResolveState)
|
||||
override val importOptimizerImpl: KtImportOptimizer = KtFirImportOptimizer(token, firResolveSession)
|
||||
|
||||
override val symbolDeclarationRendererProviderImpl: KtSymbolDeclarationRendererProvider =
|
||||
KtFirSymbolDeclarationRendererProvider(this, token)
|
||||
@@ -104,42 +104,42 @@ private constructor(
|
||||
}
|
||||
require(!elementToReanalyze.isPhysical) { "Depended context should be build only for non-physical elements" }
|
||||
|
||||
val contextResolveState = LowLevelFirApiFacadeForResolveOnAir.getResolveStateForDependentCopy(
|
||||
originalState = firResolveState,
|
||||
val contextFirResolveSession = LowLevelFirApiFacadeForResolveOnAir.getFirResolveSessionForDependentCopy(
|
||||
originalFirResolveSession = firResolveSession,
|
||||
originalKtFile = originalKtFile,
|
||||
elementToAnalyze = elementToReanalyze
|
||||
)
|
||||
|
||||
return KtFirAnalysisSession(
|
||||
project,
|
||||
contextResolveState,
|
||||
firSymbolBuilder.createReadOnlyCopy(contextResolveState),
|
||||
contextFirResolveSession,
|
||||
firSymbolBuilder.createReadOnlyCopy(contextFirResolveSession),
|
||||
token,
|
||||
AnalysisSessionMode.DEPENDENT_COPY
|
||||
)
|
||||
}
|
||||
|
||||
val useSiteSession: FirSession get() = firResolveState.useSiteFirSession
|
||||
val useSiteSession: FirSession get() = firResolveSession.useSiteFirSession
|
||||
val firSymbolProvider: FirSymbolProvider get() = useSiteSession.symbolProvider
|
||||
val targetPlatform: TargetPlatform get() = useSiteSession.moduleData.platform
|
||||
|
||||
fun getScopeSessionFor(session: FirSession): ScopeSession = firResolveState.getScopeSessionFor(session)
|
||||
fun getScopeSessionFor(session: FirSession): ScopeSession = firResolveSession.getScopeSessionFor(session)
|
||||
|
||||
companion object {
|
||||
@InvalidWayOfUsingAnalysisSession
|
||||
internal fun createAnalysisSessionByResolveState(
|
||||
firResolveState: LLFirModuleResolveState,
|
||||
internal fun createAnalysisSessionByFirResolveSession(
|
||||
firResolveSession: LLFirResolveSession,
|
||||
token: ValidityToken,
|
||||
): KtFirAnalysisSession {
|
||||
val project = firResolveState.project
|
||||
val project = firResolveSession.project
|
||||
val firSymbolBuilder = KtSymbolByFirBuilder(
|
||||
firResolveState,
|
||||
firResolveSession,
|
||||
project,
|
||||
token
|
||||
)
|
||||
return KtFirAnalysisSession(
|
||||
project,
|
||||
firResolveState,
|
||||
firResolveSession,
|
||||
firSymbolBuilder,
|
||||
token,
|
||||
AnalysisSessionMode.REGULAR,
|
||||
|
||||
+9
-10
@@ -8,34 +8,33 @@ package org.jetbrains.kotlin.analysis.api.fir
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.analysis.api.InvalidWayOfUsingAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirBackingFieldSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.CachingKtAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
||||
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.getResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getFirResolveSession
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
|
||||
@OptIn(InvalidWayOfUsingAnalysisSession::class)
|
||||
class KtFirAnalysisSessionProvider(project: Project) : CachingKtAnalysisSessionProvider<LLFirModuleResolveState>(project) {
|
||||
override fun getResolveState(contextElement: KtElement): LLFirModuleResolveState {
|
||||
return contextElement.getResolveState()
|
||||
class KtFirAnalysisSessionProvider(project: Project) : CachingKtAnalysisSessionProvider<LLFirResolveSession>(project) {
|
||||
override fun getFirResolveSession(contextElement: KtElement): LLFirResolveSession {
|
||||
return contextElement.getFirResolveSession()
|
||||
}
|
||||
|
||||
override fun getResolveState(contextSymbol: KtSymbol): LLFirModuleResolveState {
|
||||
override fun getFirResolveSession(contextSymbol: KtSymbol): LLFirResolveSession {
|
||||
return when (contextSymbol) {
|
||||
is KtFirSymbol<*> -> contextSymbol.resolveState
|
||||
is KtFirSymbol<*> -> contextSymbol.firResolveSession
|
||||
else -> error("Invalid symbol ${contextSymbol::class}")
|
||||
}
|
||||
}
|
||||
|
||||
override fun createAnalysisSession(
|
||||
resolveState: LLFirModuleResolveState,
|
||||
firResolveSession: LLFirResolveSession,
|
||||
validityToken: ValidityToken,
|
||||
): KtAnalysisSession {
|
||||
@Suppress("DEPRECATION")
|
||||
return KtFirAnalysisSession.createAnalysisSessionByResolveState(resolveState, validityToken)
|
||||
return KtFirAnalysisSession.createAnalysisSessionByFirResolveSession(firResolveSession, validityToken)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+31
-31
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtSubstitutor
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.analysis.providers.createPackageProvider
|
||||
import org.jetbrains.kotlin.builtins.functions.FunctionClassKind
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
@@ -53,7 +53,7 @@ import kotlin.contracts.contract
|
||||
*/
|
||||
internal class KtSymbolByFirBuilder private constructor(
|
||||
private val project: Project,
|
||||
resolveState: LLFirModuleResolveState,
|
||||
firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
val withReadOnlyCaching: Boolean,
|
||||
private val symbolsCache: BuilderCache<FirBasedSymbol<*>, KtSymbol>,
|
||||
@@ -61,10 +61,10 @@ internal class KtSymbolByFirBuilder private constructor(
|
||||
private val filesCache: BuilderCache<FirFileSymbol, KtFileSymbol>,
|
||||
private val backingFieldCache: BuilderCache<FirBackingFieldSymbol, KtBackingFieldSymbol>,
|
||||
) : ValidityTokenOwner {
|
||||
private val resolveState by weakRef(resolveState)
|
||||
private val firResolveSession by weakRef(firResolveSession)
|
||||
|
||||
private val firProvider get() = resolveState.useSiteFirSession.symbolProvider
|
||||
val rootSession: FirSession = resolveState.useSiteFirSession
|
||||
private val firProvider get() = firResolveSession.useSiteFirSession.symbolProvider
|
||||
val rootSession: FirSession = firResolveSession.useSiteFirSession
|
||||
|
||||
val classifierBuilder = ClassifierSymbolBuilder()
|
||||
val functionLikeBuilder = FunctionLikeSymbolBuilder()
|
||||
@@ -74,13 +74,13 @@ internal class KtSymbolByFirBuilder private constructor(
|
||||
val typeBuilder = TypeBuilder()
|
||||
|
||||
constructor(
|
||||
resolveState: LLFirModuleResolveState,
|
||||
firResolveSession: LLFirResolveSession,
|
||||
project: Project,
|
||||
token: ValidityToken
|
||||
) : this(
|
||||
project = project,
|
||||
token = token,
|
||||
resolveState = resolveState,
|
||||
firResolveSession = firResolveSession,
|
||||
withReadOnlyCaching = false,
|
||||
symbolsCache = BuilderCache(),
|
||||
extensionReceiverSymbolsCache = BuilderCache(),
|
||||
@@ -88,12 +88,12 @@ internal class KtSymbolByFirBuilder private constructor(
|
||||
filesCache = BuilderCache(),
|
||||
)
|
||||
|
||||
fun createReadOnlyCopy(newResolveState: LLFirModuleResolveState): KtSymbolByFirBuilder {
|
||||
fun createReadOnlyCopy(newFirResolveSession: LLFirResolveSession): KtSymbolByFirBuilder {
|
||||
check(!withReadOnlyCaching) { "Cannot create readOnly KtSymbolByFirBuilder from a readonly one" }
|
||||
return KtSymbolByFirBuilder(
|
||||
project,
|
||||
token = token,
|
||||
resolveState = newResolveState,
|
||||
firResolveSession = newFirResolveSession,
|
||||
withReadOnlyCaching = true,
|
||||
symbolsCache = symbolsCache.createReadOnlyCopy(),
|
||||
extensionReceiverSymbolsCache = extensionReceiverSymbolsCache.createReadOnlyCopy(),
|
||||
@@ -118,9 +118,9 @@ internal class KtSymbolByFirBuilder private constructor(
|
||||
}
|
||||
|
||||
fun buildEnumEntrySymbol(firSymbol: FirEnumEntrySymbol) =
|
||||
symbolsCache.cache(firSymbol) { KtFirEnumEntrySymbol(firSymbol, resolveState, token, this) }
|
||||
symbolsCache.cache(firSymbol) { KtFirEnumEntrySymbol(firSymbol, firResolveSession, token, this) }
|
||||
|
||||
fun buildFileSymbol(firSymbol: FirFileSymbol) = filesCache.cache(firSymbol) { KtFirFileSymbol(firSymbol, resolveState, token) }
|
||||
fun buildFileSymbol(firSymbol: FirFileSymbol) = filesCache.cache(firSymbol) { KtFirFileSymbol(firSymbol, firResolveSession, token) }
|
||||
|
||||
private val packageProvider = project.createPackageProvider(GlobalSearchScope.allScope(project))//todo scope
|
||||
|
||||
@@ -165,19 +165,19 @@ internal class KtSymbolByFirBuilder private constructor(
|
||||
}
|
||||
|
||||
fun buildNamedClassOrObjectSymbol(symbol: FirRegularClassSymbol): KtFirNamedClassOrObjectSymbol {
|
||||
return symbolsCache.cache(symbol) { KtFirNamedClassOrObjectSymbol(symbol, resolveState, token, this@KtSymbolByFirBuilder) }
|
||||
return symbolsCache.cache(symbol) { KtFirNamedClassOrObjectSymbol(symbol, firResolveSession, token, this@KtSymbolByFirBuilder) }
|
||||
}
|
||||
|
||||
fun buildAnonymousObjectSymbol(symbol: FirAnonymousObjectSymbol): KtAnonymousObjectSymbol {
|
||||
return symbolsCache.cache(symbol) { KtFirAnonymousObjectSymbol(symbol, resolveState, token, this@KtSymbolByFirBuilder) }
|
||||
return symbolsCache.cache(symbol) { KtFirAnonymousObjectSymbol(symbol, firResolveSession, token, this@KtSymbolByFirBuilder) }
|
||||
}
|
||||
|
||||
fun buildTypeAliasSymbol(symbol: FirTypeAliasSymbol): KtFirTypeAliasSymbol {
|
||||
return symbolsCache.cache(symbol) { KtFirTypeAliasSymbol(symbol, resolveState, token, this@KtSymbolByFirBuilder) }
|
||||
return symbolsCache.cache(symbol) { KtFirTypeAliasSymbol(symbol, firResolveSession, token, this@KtSymbolByFirBuilder) }
|
||||
}
|
||||
|
||||
fun buildTypeParameterSymbol(firSymbol: FirTypeParameterSymbol): KtFirTypeParameterSymbol {
|
||||
return symbolsCache.cache(firSymbol) { KtFirTypeParameterSymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder) }
|
||||
return symbolsCache.cache(firSymbol) { KtFirTypeParameterSymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder) }
|
||||
}
|
||||
|
||||
fun buildTypeParameterSymbolByLookupTag(lookupTag: ConeTypeParameterLookupTag): KtTypeParameterSymbol? {
|
||||
@@ -228,7 +228,7 @@ internal class KtSymbolByFirBuilder private constructor(
|
||||
}
|
||||
|
||||
check(firSymbol.origin != FirDeclarationOrigin.SamConstructor)
|
||||
return symbolsCache.cache(firSymbol) { KtFirFunctionSymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder) }
|
||||
return symbolsCache.cache(firSymbol) { KtFirFunctionSymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder) }
|
||||
}
|
||||
|
||||
fun buildFunctionSignature(firSymbol: FirNamedFunctionSymbol): KtFunctionLikeSignature<KtFirFunctionSymbol> {
|
||||
@@ -249,27 +249,27 @@ internal class KtSymbolByFirBuilder private constructor(
|
||||
}
|
||||
|
||||
fun buildAnonymousFunctionSymbol(firSymbol: FirAnonymousFunctionSymbol): KtFirAnonymousFunctionSymbol {
|
||||
return symbolsCache.cache(firSymbol) { KtFirAnonymousFunctionSymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder) }
|
||||
return symbolsCache.cache(firSymbol) { KtFirAnonymousFunctionSymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder) }
|
||||
}
|
||||
|
||||
fun buildConstructorSymbol(firSymbol: FirConstructorSymbol): KtFirConstructorSymbol {
|
||||
val originalFirSymbol = firSymbol.fir.originalConstructorIfTypeAlias?.symbol ?: firSymbol
|
||||
return symbolsCache.cache(originalFirSymbol) {
|
||||
KtFirConstructorSymbol(originalFirSymbol, resolveState, token, this@KtSymbolByFirBuilder)
|
||||
KtFirConstructorSymbol(originalFirSymbol, firResolveSession, token, this@KtSymbolByFirBuilder)
|
||||
}
|
||||
}
|
||||
|
||||
fun buildSamConstructorSymbol(firSymbol: FirNamedFunctionSymbol): KtFirSamConstructorSymbol {
|
||||
check(firSymbol.origin == FirDeclarationOrigin.SamConstructor)
|
||||
return symbolsCache.cache(firSymbol) { KtFirSamConstructorSymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder) }
|
||||
return symbolsCache.cache(firSymbol) { KtFirSamConstructorSymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder) }
|
||||
}
|
||||
|
||||
fun buildPropertyAccessorSymbol(firSymbol: FirPropertyAccessorSymbol): KtFunctionLikeSymbol {
|
||||
return symbolsCache.cache(firSymbol) {
|
||||
if (firSymbol.isGetter) {
|
||||
KtFirPropertyGetterSymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder)
|
||||
KtFirPropertyGetterSymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder)
|
||||
} else {
|
||||
KtFirPropertySetterSymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder)
|
||||
KtFirPropertySetterSymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -314,7 +314,7 @@ internal class KtSymbolByFirBuilder private constructor(
|
||||
}
|
||||
|
||||
return symbolsCache.cache(firSymbol) {
|
||||
KtFirKotlinPropertySymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder)
|
||||
KtFirKotlinPropertySymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -330,31 +330,31 @@ internal class KtSymbolByFirBuilder private constructor(
|
||||
fun buildLocalVariableSymbol(firSymbol: FirPropertySymbol): KtFirLocalVariableSymbol {
|
||||
checkRequirementForBuildingSymbol<KtFirLocalVariableSymbol>(firSymbol, firSymbol.isLocal)
|
||||
return symbolsCache.cache(firSymbol) {
|
||||
KtFirLocalVariableSymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder)
|
||||
KtFirLocalVariableSymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder)
|
||||
}
|
||||
}
|
||||
|
||||
fun buildSyntheticJavaPropertySymbol(firSymbol: FirSyntheticPropertySymbol): KtFirSyntheticJavaPropertySymbol {
|
||||
return symbolsCache.cache(firSymbol) {
|
||||
KtFirSyntheticJavaPropertySymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder)
|
||||
KtFirSyntheticJavaPropertySymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder)
|
||||
}
|
||||
}
|
||||
|
||||
fun buildValueParameterSymbol(firSymbol: FirValueParameterSymbol): KtValueParameterSymbol {
|
||||
return symbolsCache.cache(firSymbol) {
|
||||
KtFirValueParameterSymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder)
|
||||
KtFirValueParameterSymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun buildFieldSymbol(firSymbol: FirFieldSymbol): KtFirJavaFieldSymbol {
|
||||
checkRequirementForBuildingSymbol<KtFirJavaFieldSymbol>(firSymbol, firSymbol.fir.isJavaFieldOrSubstitutionOverrideOfJavaField())
|
||||
return symbolsCache.cache(firSymbol) { KtFirJavaFieldSymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder) }
|
||||
return symbolsCache.cache(firSymbol) { KtFirJavaFieldSymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder) }
|
||||
}
|
||||
|
||||
fun buildBackingFieldSymbol(firSymbol: FirBackingFieldSymbol): KtFirBackingFieldSymbol {
|
||||
return backingFieldCache.cache(firSymbol) {
|
||||
KtFirBackingFieldSymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder)
|
||||
KtFirBackingFieldSymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -400,25 +400,25 @@ internal class KtSymbolByFirBuilder private constructor(
|
||||
|
||||
fun buildGetterSymbol(firSymbol: FirPropertyAccessorSymbol): KtFirPropertyGetterSymbol {
|
||||
checkRequirementForBuildingSymbol<KtFirPropertyGetterSymbol>(firSymbol, firSymbol.isGetter)
|
||||
return symbolsCache.cache(firSymbol) { KtFirPropertyGetterSymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder) }
|
||||
return symbolsCache.cache(firSymbol) { KtFirPropertyGetterSymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder) }
|
||||
}
|
||||
|
||||
fun buildSetterSymbol(firSymbol: FirPropertyAccessorSymbol): KtFirPropertySetterSymbol {
|
||||
checkRequirementForBuildingSymbol<KtFirPropertySetterSymbol>(firSymbol, firSymbol.isSetter)
|
||||
return symbolsCache.cache(firSymbol) { KtFirPropertySetterSymbol(firSymbol, resolveState, token, this@KtSymbolByFirBuilder) }
|
||||
return symbolsCache.cache(firSymbol) { KtFirPropertySetterSymbol(firSymbol, firResolveSession, token, this@KtSymbolByFirBuilder) }
|
||||
}
|
||||
|
||||
fun buildExtensionReceiverSymbol(firCallableSymbol: FirCallableSymbol<*>): KtReceiverParameterSymbol? {
|
||||
if (firCallableSymbol.fir.receiverTypeRef == null) return null
|
||||
return extensionReceiverSymbolsCache.cache(firCallableSymbol) {
|
||||
KtFirReceiverParameterSymbol(firCallableSymbol, resolveState, token, this@KtSymbolByFirBuilder)
|
||||
KtFirReceiverParameterSymbol(firCallableSymbol, firResolveSession, token, this@KtSymbolByFirBuilder)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inner class AnonymousInitializerBuilder {
|
||||
fun buildClassInitializer(firSymbol: FirAnonymousInitializerSymbol): KtClassInitializerSymbol {
|
||||
return symbolsCache.cache(firSymbol) { KtFirClassInitializerSymbol(firSymbol, resolveState, token) }
|
||||
return symbolsCache.cache(firSymbol) { KtFirClassInitializerSymbol(firSymbol, firResolveSession, token) }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -39,10 +39,10 @@ import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
internal interface KtFirAnalysisSessionComponent {
|
||||
val analysisSession: KtFirAnalysisSession
|
||||
|
||||
val rootModuleSession: FirSession get() = analysisSession.firResolveState.useSiteFirSession
|
||||
val rootModuleSession: FirSession get() = analysisSession.firResolveSession.useSiteFirSession
|
||||
val typeContext: ConeInferenceContext get() = rootModuleSession.typeContext
|
||||
val firSymbolBuilder get() = analysisSession.firSymbolBuilder
|
||||
val firResolveState get() = analysisSession.firResolveState
|
||||
val firResolveSession get() = analysisSession.firResolveSession
|
||||
|
||||
fun ConeKotlinType.asKtType() = analysisSession.firSymbolBuilder.typeBuilder.buildKtType(this)
|
||||
|
||||
@@ -76,7 +76,7 @@ internal interface KtFirAnalysisSessionComponent {
|
||||
|
||||
fun createTypeCheckerContext(): TypeCheckerState {
|
||||
// TODO use correct session here,
|
||||
return analysisSession.firResolveState.useSiteFirSession.typeContext.newTypeCheckerState(
|
||||
return analysisSession.firResolveSession.useSiteFirSession.typeContext.newTypeCheckerState(
|
||||
errorTypesEqualToAnything = true,
|
||||
stubTypesEqualToAnything = true
|
||||
)
|
||||
|
||||
+3
-3
@@ -110,7 +110,7 @@ internal class KtFirCallResolver(
|
||||
?: containingBinaryExpressionForLhs
|
||||
?: containingUnaryExpressionForIncOrDec
|
||||
?: psi
|
||||
val fir = psiToResolve.getOrBuildFir(analysisSession.firResolveState) ?: return emptyList()
|
||||
val fir = psiToResolve.getOrBuildFir(analysisSession.firResolveSession) ?: return emptyList()
|
||||
return fir.getCallInfo(
|
||||
psiToResolve,
|
||||
psiToResolve == containingCallExpressionForCalleeExpression,
|
||||
@@ -225,7 +225,7 @@ internal class KtFirCallResolver(
|
||||
val lhs = deparenthesize(this)
|
||||
val binaryExpression = parentOfType<KtBinaryExpression>() ?: return null
|
||||
if (deparenthesize(binaryExpression.left) != lhs || binaryExpression.operationToken !in KtTokens.ALL_ASSIGNMENTS) return null
|
||||
val firBinaryExpression = binaryExpression.getOrBuildFir(analysisSession.firResolveState)
|
||||
val firBinaryExpression = binaryExpression.getOrBuildFir(analysisSession.firResolveSession)
|
||||
if (firBinaryExpression is FirFunctionCall) {
|
||||
if (firBinaryExpression.origin == FirFunctionCallOrigin.Operator &&
|
||||
firBinaryExpression.calleeReference.name in OperatorNameConventions.ASSIGNMENT_OPERATIONS
|
||||
@@ -772,7 +772,7 @@ internal class KtFirCallResolver(
|
||||
|
||||
val calleeName = originalFunctionCall.calleeOrCandidateName ?: return emptyList()
|
||||
val candidates = AllCandidatesResolver(analysisSession.useSiteSession).getAllCandidates(
|
||||
analysisSession.firResolveState,
|
||||
analysisSession.firResolveSession,
|
||||
originalFunctionCall,
|
||||
calleeName,
|
||||
psi
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ internal class KtFirCompileTimeConstantProvider(
|
||||
expression: KtExpression,
|
||||
mode: KtConstantEvaluationMode,
|
||||
): KtConstantValue? = withValidityAssertion {
|
||||
evaluateFir(expression.getOrBuildFir(firResolveState), expression, mode)
|
||||
evaluateFir(expression.getOrBuildFir(firResolveSession), expression, mode)
|
||||
}
|
||||
|
||||
private fun evaluateFir(
|
||||
|
||||
+5
-5
@@ -60,9 +60,9 @@ internal class KtFirCompletionCandidateChecker(
|
||||
nameExpression: KtSimpleNameExpression,
|
||||
possibleExplicitReceiver: KtExpression?,
|
||||
): KtExtensionApplicabilityResult {
|
||||
val file = originalFile.getOrBuildFirFile(firResolveState)
|
||||
val file = originalFile.getOrBuildFirFile(firResolveSession)
|
||||
val explicitReceiverExpression = possibleExplicitReceiver?.getMatchingFirExpressionForCallReceiver()
|
||||
val resolver = SingleCandidateResolver(firResolveState.useSiteFirSession, file)
|
||||
val resolver = SingleCandidateResolver(firResolveSession.useSiteFirSession, file)
|
||||
val implicitReceivers = getImplicitReceivers(originalFile, nameExpression)
|
||||
for (implicitReceiverValue in implicitReceivers) {
|
||||
val resolutionParameters = ResolutionParameters(
|
||||
@@ -90,7 +90,7 @@ internal class KtFirCompletionCandidateChecker(
|
||||
originalFile: KtFile,
|
||||
fakeNameExpression: KtSimpleNameExpression
|
||||
): Sequence<ImplicitReceiverValue<*>?> {
|
||||
val towerDataContext = analysisSession.firResolveState.getTowerContextProvider(originalFile)
|
||||
val towerDataContext = analysisSession.firResolveSession.getTowerContextProvider(originalFile)
|
||||
.getClosestAvailableParentContext(fakeNameExpression)
|
||||
?: error("Cannot find enclosing declaration for ${fakeNameExpression.getElementTextInContext()}")
|
||||
|
||||
@@ -110,9 +110,9 @@ internal class KtFirCompletionCandidateChecker(
|
||||
*/
|
||||
private fun KtExpression.getMatchingFirExpressionForCallReceiver(): FirExpression {
|
||||
val psiWholeCall = this.getQualifiedExpressionForReceiver()
|
||||
if (psiWholeCall !is KtSafeQualifiedExpression) return this.getOrBuildFirOfType<FirExpression>(firResolveState)
|
||||
if (psiWholeCall !is KtSafeQualifiedExpression) return this.getOrBuildFirOfType<FirExpression>(firResolveSession)
|
||||
|
||||
val firSafeCall = psiWholeCall.getOrBuildFirOfType<FirSafeCallExpression>(firResolveState)
|
||||
val firSafeCall = psiWholeCall.getOrBuildFirOfType<FirSafeCallExpression>(firResolveSession)
|
||||
return firSafeCall.checkedSubjectRef.value
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -26,11 +26,11 @@ internal class KtFirDiagnosticProvider(
|
||||
element: KtElement,
|
||||
filter: KtDiagnosticCheckerFilter
|
||||
): Collection<KtDiagnosticWithPsi<*>> = withValidityAssertion {
|
||||
element.getDiagnostics(firResolveState, filter.asLLFilter()).map { it.asKtDiagnostic() }
|
||||
element.getDiagnostics(firResolveSession, filter.asLLFilter()).map { it.asKtDiagnostic() }
|
||||
}
|
||||
|
||||
override fun collectDiagnosticsForFile(ktFile: KtFile, filter: KtDiagnosticCheckerFilter): Collection<KtDiagnosticWithPsi<*>> =
|
||||
ktFile.collectDiagnosticsForFile(firResolveState, filter.asLLFilter()).map { it.asKtDiagnostic() }
|
||||
ktFile.collectDiagnosticsForFile(firResolveSession, filter.asLLFilter()).map { it.asKtDiagnostic() }
|
||||
|
||||
|
||||
private fun KtDiagnosticCheckerFilter.asLLFilter() = when (this) {
|
||||
|
||||
+3
-3
@@ -23,14 +23,14 @@ internal class KtFirExpressionInfoProvider(
|
||||
override val token: ValidityToken,
|
||||
) : KtExpressionInfoProvider(), KtFirAnalysisSessionComponent {
|
||||
override fun getReturnExpressionTargetSymbol(returnExpression: KtReturnExpression): KtCallableSymbol? {
|
||||
val fir = returnExpression.getOrBuildFirSafe<FirReturnExpression>(firResolveState) ?: return null
|
||||
val fir = returnExpression.getOrBuildFirSafe<FirReturnExpression>(firResolveSession) ?: return null
|
||||
val firTargetSymbol = fir.target.labeledElement
|
||||
if (firTargetSymbol is FirErrorFunction) return null
|
||||
return firSymbolBuilder.callableBuilder.buildCallableSymbol(firTargetSymbol.symbol)
|
||||
}
|
||||
|
||||
override fun getWhenMissingCases(whenExpression: KtWhenExpression): List<WhenMissingCase> {
|
||||
val firWhenExpression = whenExpression.getOrBuildFirSafe<FirWhenExpression>(analysisSession.firResolveState) ?: return emptyList()
|
||||
return FirWhenExhaustivenessTransformer.computeAllMissingCases(analysisSession.firResolveState.useSiteFirSession, firWhenExpression)
|
||||
val firWhenExpression = whenExpression.getOrBuildFirSafe<FirWhenExpression>(analysisSession.firResolveSession) ?: return emptyList()
|
||||
return FirWhenExhaustivenessTransformer.computeAllMissingCases(analysisSession.firResolveSession.useSiteFirSession, firWhenExpression)
|
||||
}
|
||||
}
|
||||
+6
-6
@@ -38,7 +38,7 @@ internal class KtFirExpressionTypeProvider(
|
||||
) : KtExpressionTypeProvider(), KtFirAnalysisSessionComponent {
|
||||
|
||||
override fun getKtExpressionType(expression: KtExpression): KtType? = withValidityAssertion {
|
||||
when (val fir = expression.unwrap().getOrBuildFir(firResolveState)) {
|
||||
when (val fir = expression.unwrap().getOrBuildFir(firResolveSession)) {
|
||||
is FirFunctionCall -> {
|
||||
getReturnTypeForArrayStyleAssignmentTarget(expression, fir)
|
||||
?: fir.typeRef.coneType.asKtType()
|
||||
@@ -95,12 +95,12 @@ internal class KtFirExpressionTypeProvider(
|
||||
}
|
||||
|
||||
override fun getReturnTypeForKtDeclaration(declaration: KtDeclaration): KtType = withValidityAssertion {
|
||||
val firDeclaration = declaration.getOrBuildFirOfType<FirCallableDeclaration>(firResolveState)
|
||||
val firDeclaration = declaration.getOrBuildFirOfType<FirCallableDeclaration>(firResolveSession)
|
||||
firDeclaration.returnTypeRef.coneType.asKtType()
|
||||
}
|
||||
|
||||
override fun getFunctionalTypeForKtFunction(declaration: KtFunction): KtType = withValidityAssertion {
|
||||
val firFunction = declaration.getOrBuildFirOfType<FirFunction>(firResolveState)
|
||||
val firFunction = declaration.getOrBuildFirOfType<FirFunction>(firResolveSession)
|
||||
firFunction.constructFunctionalType(firFunction.isSuspend).asKtType()
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ internal class KtFirExpressionTypeProvider(
|
||||
|
||||
private fun getExpectedTypeOfFunctionParameter(expression: PsiElement): KtType? {
|
||||
val (ktCallExpression, argumentExpression) = expression.getFunctionCallAsWithThisAsParameter() ?: return null
|
||||
val firCall = ktCallExpression.getOrBuildFirSafe<FirFunctionCall>(firResolveState) ?: return null
|
||||
val firCall = ktCallExpression.getOrBuildFirSafe<FirFunctionCall>(firResolveSession) ?: return null
|
||||
|
||||
val callee = (firCall.calleeReference as? FirResolvedNamedReference)?.resolvedSymbol
|
||||
if (callee?.fir?.origin == FirDeclarationOrigin.SamConstructor) {
|
||||
@@ -161,7 +161,7 @@ internal class KtFirExpressionTypeProvider(
|
||||
private fun getExpectedTypeOfInfixFunctionParameter(expression: PsiElement): KtType? {
|
||||
val infixCallExpression =
|
||||
expression.unwrapQualified<KtBinaryExpression> { binaryExpr, expr -> binaryExpr.right == expr } ?: return null
|
||||
val firCall = infixCallExpression.getOrBuildFirSafe<FirFunctionCall>(firResolveState) ?: return null
|
||||
val firCall = infixCallExpression.getOrBuildFirSafe<FirFunctionCall>(firResolveSession) ?: return null
|
||||
|
||||
// There is only one parameter for infix functions; get its type
|
||||
val arguments = firCall.argumentMapping ?: return null
|
||||
@@ -229,7 +229,7 @@ internal class KtFirExpressionTypeProvider(
|
||||
!typeRef.coneType.isNullableType()
|
||||
}
|
||||
|
||||
when (val fir = expression.getOrBuildFir(analysisSession.firResolveState)) {
|
||||
when (val fir = expression.getOrBuildFir(analysisSession.firResolveSession)) {
|
||||
is FirExpressionWithSmartcastToNull -> if (fir.isStable) {
|
||||
return DefiniteNullability.DEFINITELY_NULL
|
||||
}
|
||||
|
||||
+4
-4
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.analysis.api.components.KtImportOptimizerResult
|
||||
import org.jetbrains.kotlin.analysis.api.fir.getCandidateSymbols
|
||||
import org.jetbrains.kotlin.analysis.api.fir.utils.computeImportableName
|
||||
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.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirFile
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
@@ -41,15 +41,15 @@ import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||
|
||||
internal class KtFirImportOptimizer(
|
||||
override val token: ValidityToken,
|
||||
private val firResolveState: LLFirModuleResolveState
|
||||
private val firResolveSession: LLFirResolveSession
|
||||
) : KtImportOptimizer() {
|
||||
private val firSession: FirSession
|
||||
get() = firResolveState.useSiteFirSession
|
||||
get() = firResolveSession.useSiteFirSession
|
||||
|
||||
override fun analyseImports(file: KtFile): KtImportOptimizerResult {
|
||||
assertIsValidAndAccessible()
|
||||
|
||||
val firFile = file.getOrBuildFirFile(firResolveState).apply { ensureResolved(FirResolvePhase.BODY_RESOLVE) }
|
||||
val firFile = file.getOrBuildFirFile(firResolveSession).apply { ensureResolved(FirResolvePhase.BODY_RESOLVE) }
|
||||
|
||||
val existingImports = file.importDirectives
|
||||
|
||||
|
||||
+9
-9
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.analysis.api.impl.barebone.parentsOfType
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol
|
||||
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.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LowLevelFirApiFacadeForResolveOnAir
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFir
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirOfType
|
||||
@@ -64,7 +64,7 @@ import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
internal class KtFirReferenceShortener(
|
||||
override val analysisSession: KtFirAnalysisSession,
|
||||
override val token: ValidityToken,
|
||||
override val firResolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
) : KtReferenceShortener(), KtFirAnalysisSessionComponent {
|
||||
private val context = FirShorteningContext(analysisSession)
|
||||
|
||||
@@ -77,10 +77,10 @@ internal class KtFirReferenceShortener(
|
||||
val declarationToVisit = file.findSmallestDeclarationContainingSelection(selection)
|
||||
?: file.withDeclarationsResolvedToBodyResolve()
|
||||
|
||||
val firDeclaration = declarationToVisit.getOrBuildFirOfType<FirDeclaration>(firResolveState)
|
||||
val firDeclaration = declarationToVisit.getOrBuildFirOfType<FirDeclaration>(firResolveSession)
|
||||
|
||||
val towerContext =
|
||||
LowLevelFirApiFacadeForResolveOnAir.onAirGetTowerContextProvider(firResolveState, declarationToVisit)
|
||||
LowLevelFirApiFacadeForResolveOnAir.onAirGetTowerContextProvider(firResolveSession, declarationToVisit)
|
||||
|
||||
//TODO: collect all usages of available symbols in the file and prevent importing symbols that could introduce name clashes, which
|
||||
// may alter the meaning of existing code.
|
||||
@@ -90,7 +90,7 @@ internal class KtFirReferenceShortener(
|
||||
selection,
|
||||
classShortenOption = { classShortenOption(analysisSession.firSymbolBuilder.buildSymbol(it) as KtClassLikeSymbol) },
|
||||
callableShortenOption = { callableShortenOption(analysisSession.firSymbolBuilder.buildSymbol(it) as KtCallableSymbol) },
|
||||
firResolveState,
|
||||
firResolveSession,
|
||||
)
|
||||
firDeclaration.accept(collector)
|
||||
|
||||
@@ -105,7 +105,7 @@ internal class KtFirReferenceShortener(
|
||||
|
||||
private fun KtFile.withDeclarationsResolvedToBodyResolve(): KtFile {
|
||||
for (declaration in declarations) {
|
||||
declaration.getOrBuildFir(firResolveState) // temporary hack, resolves declaration to BODY_RESOLVE stage
|
||||
declaration.getOrBuildFir(firResolveSession) // temporary hack, resolves declaration to BODY_RESOLVE stage
|
||||
}
|
||||
|
||||
return this
|
||||
@@ -164,10 +164,10 @@ private data class AvailableSymbol<out T>(
|
||||
)
|
||||
|
||||
private class FirShorteningContext(val analysisSession: KtFirAnalysisSession) {
|
||||
private val firResolveState = analysisSession.firResolveState
|
||||
private val firResolveSession = analysisSession.firResolveSession
|
||||
|
||||
private val firSession: FirSession
|
||||
get() = firResolveState.useSiteFirSession
|
||||
get() = firResolveSession.useSiteFirSession
|
||||
|
||||
fun findFirstClassifierInScopesByName(positionScopes: List<FirScope>, targetClassName: Name): AvailableSymbol<ClassId>? {
|
||||
for (scope in positionScopes) {
|
||||
@@ -286,7 +286,7 @@ private class ElementsToShortenCollector(
|
||||
private val selection: TextRange,
|
||||
private val classShortenOption: (FirClassLikeSymbol<*>) -> ShortenOption,
|
||||
private val callableShortenOption: (FirCallableSymbol<*>) -> ShortenOption,
|
||||
private val firResolveState: LLFirModuleResolveState,
|
||||
private val firResolveSession: LLFirResolveSession,
|
||||
) :
|
||||
FirVisitorVoid() {
|
||||
val namesToImport: MutableList<FqName> = mutableListOf()
|
||||
|
||||
+5
-5
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.getElementTextInContext
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
@@ -49,7 +49,7 @@ internal class KtFirScopeProvider(
|
||||
analysisSession: KtFirAnalysisSession,
|
||||
builder: KtSymbolByFirBuilder,
|
||||
private val project: Project,
|
||||
firResolveState: LLFirModuleResolveState,
|
||||
firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
) : KtScopeProvider(), ValidityTokenOwner {
|
||||
// KtFirScopeProvider is thread local, so it's okay to use the same session here
|
||||
@@ -58,7 +58,7 @@ internal class KtFirScopeProvider(
|
||||
|
||||
override val analysisSession: KtFirAnalysisSession by weakRef(analysisSession)
|
||||
private val builder by weakRef(builder)
|
||||
private val firResolveState by weakRef(firResolveState)
|
||||
private val firResolveSession by weakRef(firResolveSession)
|
||||
|
||||
private val memberScopeCache = IdentityHashMap<KtSymbolWithMembers, KtScope>()
|
||||
private val declaredMemberScopeCache = IdentityHashMap<KtSymbolWithMembers, KtScope>()
|
||||
@@ -176,7 +176,7 @@ internal class KtFirScopeProvider(
|
||||
|
||||
override fun getTypeScope(type: KtType): KtScope? {
|
||||
check(type is KtFirType) { "KtFirScopeProvider can only work with KtFirType, but ${type::class} was provided" }
|
||||
val firSession = firResolveState.useSiteFirSession
|
||||
val firSession = firResolveSession.useSiteFirSession
|
||||
val firTypeScope = type.coneType.scope(
|
||||
firSession,
|
||||
scopeSession,
|
||||
@@ -198,7 +198,7 @@ internal class KtFirScopeProvider(
|
||||
positionInFakeFile: KtElement
|
||||
): KtScopeContext = withValidityAssertion {
|
||||
val towerDataContext =
|
||||
analysisSession.firResolveState.getTowerContextProvider(originalFile).getClosestAvailableParentContext(positionInFakeFile)
|
||||
analysisSession.firResolveSession.getTowerContextProvider(originalFile).getClosestAvailableParentContext(positionInFakeFile)
|
||||
?: error("Cannot find enclosing declaration for ${positionInFakeFile.getElementTextInContext()}")
|
||||
|
||||
val implicitReceivers = towerDataContext.nonLocalTowerDataElements.mapNotNull { it.implicitReceiver }.distinct()
|
||||
|
||||
+2
-2
@@ -51,7 +51,7 @@ internal class KtFirSmartcastProvider(
|
||||
|
||||
val possibleFunctionCall = expression.getPossiblyQualifiedCallExpressionForCallee() ?: expression
|
||||
|
||||
return when (val firExpression = possibleFunctionCall.getOrBuildFir(analysisSession.firResolveState)) {
|
||||
return when (val firExpression = possibleFunctionCall.getOrBuildFir(analysisSession.firResolveSession)) {
|
||||
is FirExpressionWithSmartcast -> firExpression
|
||||
is FirSafeCallExpression -> firExpression.selector as? FirExpressionWithSmartcast
|
||||
is FirImplicitInvokeCall -> firExpression.explicitReceiver as? FirExpressionWithSmartcast
|
||||
@@ -80,7 +80,7 @@ internal class KtFirSmartcastProvider(
|
||||
?: expression.getQualifiedExpressionForSelector()
|
||||
?: expression
|
||||
|
||||
return when (val firExpression = wholeExpression.getOrBuildFir(analysisSession.firResolveState)) {
|
||||
return when (val firExpression = wholeExpression.getOrBuildFir(analysisSession.firResolveSession)) {
|
||||
is FirQualifiedAccessExpression -> firExpression
|
||||
is FirSafeCallExpression -> firExpression.selector as? FirQualifiedAccessExpression
|
||||
else -> null
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ internal class KtFirSymbolContainingDeclarationProvider(
|
||||
}
|
||||
|
||||
override fun getContainingModule(symbol: KtSymbol): KtModule {
|
||||
return symbol.getContainingKtModule(analysisSession.firResolveState)
|
||||
return symbol.getContainingKtModule(analysisSession.firResolveSession)
|
||||
}
|
||||
|
||||
private fun getContainingDeclarationForBackingFieldSymbol(symbol: KtSymbolWithKind): KtSymbolWithKind {
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ internal class KtFirSymbolDeclarationRendererProvider(
|
||||
|
||||
override fun render(type: KtType, options: KtTypeRendererOptions): String {
|
||||
require(type is KtFirType)
|
||||
return ConeTypeIdeRenderer(analysisSession.firResolveState.useSiteFirSession, options).renderType(type.coneType)
|
||||
return ConeTypeIdeRenderer(analysisSession.firResolveSession.useSiteFirSession, options).renderType(type.coneType)
|
||||
}
|
||||
|
||||
override fun renderDeclaration(symbol: KtDeclarationSymbol, options: KtDeclarationRendererOptions): String {
|
||||
|
||||
+4
-4
@@ -86,7 +86,7 @@ internal class KtFirTypeProvider(
|
||||
}
|
||||
|
||||
override fun getKtType(ktTypeReference: KtTypeReference): KtType = withValidityAssertion {
|
||||
when (val fir = ktTypeReference.getOrBuildFir(firResolveState)) {
|
||||
when (val fir = ktTypeReference.getOrBuildFir(firResolveSession)) {
|
||||
is FirResolvedTypeRef -> fir.coneType.asKtType()
|
||||
is FirDelegatedConstructorCall -> fir.constructedTypeRef.coneType.asKtType()
|
||||
else -> throwUnexpectedFirElementError(fir, ktTypeReference)
|
||||
@@ -94,7 +94,7 @@ internal class KtFirTypeProvider(
|
||||
}
|
||||
|
||||
override fun getReceiverTypeForDoubleColonExpression(expression: KtDoubleColonExpression): KtType? = withValidityAssertion {
|
||||
when (val fir = expression.getOrBuildFir(firResolveState)) {
|
||||
when (val fir = expression.getOrBuildFir(firResolveSession)) {
|
||||
is FirGetClassCall ->
|
||||
fir.typeRef.coneType.getReceiverOfReflectionType()?.asKtType()
|
||||
is FirCallableReferenceAccess ->
|
||||
@@ -122,7 +122,7 @@ internal class KtFirTypeProvider(
|
||||
}
|
||||
|
||||
override fun getImplicitReceiverTypesAtPosition(position: KtElement): List<KtType> {
|
||||
return analysisSession.firResolveState.getTowerContextProvider(position.containingKtFile)
|
||||
return analysisSession.firResolveSession.getTowerContextProvider(position.containingKtFile)
|
||||
.getClosestAvailableParentContext(position)?.implicitReceiverStack?.map { it.type.asKtType() } ?: emptyList()
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@ internal class KtFirTypeProvider(
|
||||
}
|
||||
|
||||
private fun ConeLookupTagBasedType.getSubstitutedSuperTypes(shouldApproximate: Boolean): Sequence<ConeKotlinType> {
|
||||
val session = analysisSession.firResolveState.useSiteFirSession
|
||||
val session = analysisSession.firResolveSession.useSiteFirSession
|
||||
val symbol = lookupTag.toSymbol(session)
|
||||
val superTypes = when (symbol) {
|
||||
is FirAnonymousObjectSymbol -> symbol.superConeTypes
|
||||
|
||||
+2
-2
@@ -44,13 +44,13 @@ internal class KtFirVisibilityChecker(
|
||||
val nonLocalContainingDeclaration = findContainingNonLocalDeclaration(position)
|
||||
val useSiteFirFile = useSiteFile.firSymbol.fir
|
||||
val containers = nonLocalContainingDeclaration
|
||||
?.getOrBuildFirSafe<FirCallableDeclaration>(analysisSession.firResolveState)
|
||||
?.getOrBuildFirSafe<FirCallableDeclaration>(analysisSession.firResolveSession)
|
||||
?.collectDesignation()
|
||||
?.path
|
||||
.orEmpty()
|
||||
|
||||
val explicitDispatchReceiver = receiverExpression
|
||||
?.getOrBuildFirSafe<FirExpression>(analysisSession.firResolveState)
|
||||
?.getOrBuildFirSafe<FirExpression>(analysisSession.firResolveSession)
|
||||
?.let { ExpressionReceiverValue(it) }
|
||||
|
||||
val candidateFirSymbol = candidateSymbol.firSymbol.fir as FirMemberDeclaration
|
||||
|
||||
+5
-5
@@ -188,8 +188,8 @@ internal object FirReferenceResolveHelper {
|
||||
if (expression.isSyntheticOperatorReference()) return emptyList()
|
||||
val symbolBuilder = analysisSession.firSymbolBuilder
|
||||
val adjustedResolutionExpression = adjustResolutionExpression(expression)
|
||||
val fir = adjustedResolutionExpression.getOrBuildFir(analysisSession.firResolveState)
|
||||
val session = analysisSession.firResolveState.useSiteFirSession
|
||||
val fir = adjustedResolutionExpression.getOrBuildFir(analysisSession.firResolveSession)
|
||||
val session = analysisSession.firResolveSession.useSiteFirSession
|
||||
return when (fir) {
|
||||
is FirResolvedTypeRef -> getSymbolsForResolvedTypeRef(fir, expression, session, symbolBuilder)
|
||||
is FirResolvedQualifier ->
|
||||
@@ -258,7 +258,7 @@ internal object FirReferenceResolveHelper {
|
||||
): Collection<KtSymbol> {
|
||||
val parentAsCall = expression.parent as? KtCallExpression
|
||||
if (parentAsCall != null) {
|
||||
val firResolvable = parentAsCall.getOrBuildFirSafe<FirResolvable>(analysisSession.firResolveState)
|
||||
val firResolvable = parentAsCall.getOrBuildFirSafe<FirResolvable>(analysisSession.firResolveSession)
|
||||
if (firResolvable != null) {
|
||||
return getSymbolsByResolvable(firResolvable, expression, session, symbolBuilder)
|
||||
}
|
||||
@@ -305,7 +305,7 @@ internal object FirReferenceResolveHelper {
|
||||
val ktValueArgumentList = ktValueArgument.parent as? KtValueArgumentList ?: return emptyList()
|
||||
val ktCallExpression = ktValueArgumentList.parent as? KtCallElement ?: return emptyList()
|
||||
|
||||
val firCall = ktCallExpression.getOrBuildFirSafe<FirCall>(analysisSession.firResolveState) ?: return emptyList()
|
||||
val firCall = ktCallExpression.getOrBuildFirSafe<FirCall>(analysisSession.firResolveSession) ?: return emptyList()
|
||||
val parameter = firCall.findCorrespondingParameter(ktValueArgument) ?: return emptyList()
|
||||
return listOfNotNull(parameter.buildSymbol(symbolBuilder))
|
||||
}
|
||||
@@ -333,7 +333,7 @@ internal object FirReferenceResolveHelper {
|
||||
parent = parent.parent as? KtDotQualifiedExpression
|
||||
continue
|
||||
}
|
||||
val parentFir = selectorExpression.getOrBuildFir(analysisSession.firResolveState)
|
||||
val parentFir = selectorExpression.getOrBuildFir(analysisSession.firResolveSession)
|
||||
if (parentFir is FirResolvedQualifier) {
|
||||
var classId = parentFir.classId
|
||||
while (unresolvedCounter > 0) {
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ class KtFirArrayAccessReference(
|
||||
) : KtArrayAccessReference(expression), KtFirReference {
|
||||
override fun KtAnalysisSession.resolveToSymbols(): Collection<KtSymbol> {
|
||||
check(this is KtFirAnalysisSession)
|
||||
val fir = element.getOrBuildFirSafe<FirFunctionCall>(firResolveState) ?: return emptyList()
|
||||
val fir = element.getOrBuildFirSafe<FirFunctionCall>(firResolveSession) ?: return emptyList()
|
||||
return fir.getCandidateSymbols().map { it.fir.buildSymbol(firSymbolBuilder) }
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ class KtFirCollectionLiteralReference(
|
||||
) : KtCollectionLiteralReference(expression), KtFirReference {
|
||||
override fun KtAnalysisSession.resolveToSymbols(): Collection<KtSymbol> {
|
||||
check(this is KtFirAnalysisSession)
|
||||
val fir = element.getOrBuildFirSafe<FirArrayOfCall>(firResolveState) ?: return emptyList()
|
||||
val fir = element.getOrBuildFirSafe<FirArrayOfCall>(firResolveSession) ?: return emptyList()
|
||||
val type = fir.typeRef.coneTypeSafe<ConeClassLikeType>() ?: return listOfNotNull(arrayOfSymbol(arrayOf))
|
||||
val call = arrayTypeToArrayOfCall[type.lookupTag.classId] ?: arrayOf
|
||||
return listOfNotNull(arrayOfSymbol(call))
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ class KtFirConstructorDelegationReference(
|
||||
|
||||
override fun KtAnalysisSession.resolveToSymbols(): Collection<KtSymbol> {
|
||||
check(this is KtFirAnalysisSession)
|
||||
val fir = expression.getOrBuildFirSafe<FirDelegatedConstructorCall>(firResolveState) ?: return emptyList()
|
||||
val fir = expression.getOrBuildFirSafe<FirDelegatedConstructorCall>(firResolveSession) ?: return emptyList()
|
||||
return listOfNotNull(fir.calleeReference.getResolvedKtSymbolOfNameReference(firSymbolBuilder))
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ class KtFirDestructuringDeclarationReference(
|
||||
|
||||
override fun KtAnalysisSession.resolveToSymbols(): Collection<KtSymbol> {
|
||||
check(this is KtFirAnalysisSession)
|
||||
val fir = expression.getOrBuildFirSafe<FirProperty>(firResolveState) ?: return emptyList()
|
||||
val fir = expression.getOrBuildFirSafe<FirProperty>(firResolveSession) ?: return emptyList()
|
||||
return listOfNotNull(
|
||||
fir.buildSymbol(firSymbolBuilder),
|
||||
getComponentNSymbol(fir)
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.psi.KtForExpression
|
||||
open class KtFirForLoopInReference(expression: KtForExpression) : KtForLoopInReference(expression), KtFirReference {
|
||||
override fun KtAnalysisSession.resolveToSymbols(): Collection<KtSymbol> {
|
||||
check(this is KtFirAnalysisSession)
|
||||
val firLoop = expression.getOrBuildFirSafe<FirWhileLoop>(firResolveState) ?: return emptyList()
|
||||
val firLoop = expression.getOrBuildFirSafe<FirWhileLoop>(firResolveSession) ?: return emptyList()
|
||||
val condition = firLoop.condition as? FirFunctionCall
|
||||
val iterator = this@KtFirForLoopInReference.run {
|
||||
val callee = (condition?.explicitReceiver as? FirQualifiedAccessExpression)?.calleeReference
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ class KtFirPropertyDelegationMethodsReference(
|
||||
) : KtPropertyDelegationMethodsReference(element), KtFirReference {
|
||||
override fun KtAnalysisSession.resolveToSymbols(): Collection<KtSymbol> {
|
||||
check(this is KtFirAnalysisSession)
|
||||
val property = (expression.parent as? KtElement)?.getOrBuildFirSafe<FirProperty>(firResolveState) ?: return emptyList()
|
||||
val property = (expression.parent as? KtElement)?.getOrBuildFirSafe<FirProperty>(firResolveSession) ?: return emptyList()
|
||||
if (property.delegate == null) return emptyList()
|
||||
val getValueSymbol = (property.getter?.singleStatementOfType<FirReturnExpression>()?.result as? FirFunctionCall)?.getCalleeSymbol()
|
||||
val setValueSymbol = property.setter?.singleStatementOfType<FirFunctionCall>()?.getCalleeSymbol()
|
||||
|
||||
+2
-2
@@ -16,14 +16,14 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.isExtension
|
||||
|
||||
internal class KtFirAnonymousFunctionSymbol(
|
||||
override val firSymbol: FirAnonymousFunctionSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder,
|
||||
) : KtAnonymousFunctionSymbol(), KtFirSymbol<FirAnonymousFunctionSymbol> {
|
||||
|
||||
+3
-3
@@ -16,18 +16,18 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointe
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol
|
||||
|
||||
internal class KtFirAnonymousObjectSymbol(
|
||||
override val firSymbol: FirAnonymousObjectSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder,
|
||||
) : KtAnonymousObjectSymbol(), KtFirSymbol<FirAnonymousObjectSymbol> {
|
||||
override val psi: PsiElement? by cached { firSymbol.findPsi() }
|
||||
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, resolveState.useSiteFirSession, token) }
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) }
|
||||
|
||||
override val superTypes: List<KtType> by cached { firSymbol.superTypesList(builder) }
|
||||
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.name.StandardClassIds
|
||||
|
||||
object KtFirArrayOfSymbolProvider {
|
||||
internal fun KtFirAnalysisSession.arrayOfSymbol(identifier: Name): KtFirFunctionSymbol? {
|
||||
val firSymbol = firResolveState.useSiteFirSession.symbolProvider.getTopLevelCallableSymbols(kotlinPackage, identifier).firstOrNull {
|
||||
val firSymbol = firResolveSession.useSiteFirSession.symbolProvider.getTopLevelCallableSymbols(kotlinPackage, identifier).firstOrNull {
|
||||
/* choose (for byte array)
|
||||
* public fun byteArrayOf(vararg elements: kotlin.Byte): kotlin.ByteArray
|
||||
*/
|
||||
|
||||
+2
-2
@@ -14,12 +14,12 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
|
||||
|
||||
internal class KtFirBackingFieldSymbol(
|
||||
override val firSymbol: FirBackingFieldSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder
|
||||
) : KtBackingFieldSymbol(), KtFirSymbol<FirBackingFieldSymbol> {
|
||||
|
||||
+2
-2
@@ -13,12 +13,12 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
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.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
|
||||
internal class KtFirClassInitializerSymbol(
|
||||
override val firSymbol: FirAnonymousInitializerSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
) : KtClassInitializerSymbol(), KtFirSymbol<FirAnonymousInitializerSymbol> {
|
||||
override val psi: PsiElement? by cached { firSymbol.findPsi() }
|
||||
|
||||
+3
-3
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
internal class KtFirConstructorSymbol(
|
||||
override val firSymbol: FirConstructorSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder
|
||||
) : KtConstructorSymbol(), KtFirSymbol<FirConstructorSymbol> {
|
||||
@@ -48,7 +48,7 @@ internal class KtFirConstructorSymbol(
|
||||
|
||||
override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
|
||||
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, resolveState.useSiteFirSession, token) }
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) }
|
||||
|
||||
override val containingClassIdIfNonLocal: ClassId?
|
||||
get() = withValidityAssertion { firSymbol.containingClass()?.classId?.takeUnless { it.isLocal } }
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal class KtFirEnumEntrySymbol(
|
||||
override val firSymbol: FirEnumEntrySymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder
|
||||
) : KtEnumEntrySymbol(), KtFirSymbol<FirEnumEntrySymbol> {
|
||||
|
||||
+3
-3
@@ -14,12 +14,12 @@ import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithDeclaration
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
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.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol
|
||||
|
||||
internal class KtFirFileSymbol(
|
||||
override val firSymbol: FirFileSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
) : KtFileSymbol(), KtSymbolWithDeclarations, KtFirSymbol<FirFileSymbol> {
|
||||
override val psi: PsiElement? by cached { firSymbol.findPsi() }
|
||||
@@ -29,7 +29,7 @@ internal class KtFirFileSymbol(
|
||||
TODO("Creating pointers for files from library is not supported yet")
|
||||
}
|
||||
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, resolveState.useSiteFirSession, token) }
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) }
|
||||
|
||||
override fun equals(other: Any?): Boolean = symbolEquals(other)
|
||||
override fun hashCode(): Int = symbolHashCode()
|
||||
|
||||
+3
-3
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.WrongSymbolForSamConst
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
@@ -38,7 +38,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal class KtFirFunctionSymbol(
|
||||
override val firSymbol: FirNamedFunctionSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder
|
||||
) : KtFunctionSymbol(), KtFirSymbol<FirNamedFunctionSymbol> {
|
||||
@@ -57,7 +57,7 @@ internal class KtFirFunctionSymbol(
|
||||
override val hasStableParameterNames: Boolean
|
||||
get() = withValidityAssertion { firSymbol.fir.getHasStableParameterNames(firSymbol.moduleData.session) }
|
||||
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, resolveState.useSiteFirSession, token) }
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) }
|
||||
|
||||
override val isSuspend: Boolean get() = withValidityAssertion { firSymbol.isSuspend }
|
||||
override val isOverride: Boolean get() = withValidityAssertion { firSymbol.isOverride }
|
||||
|
||||
+2
-2
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal class KtFirJavaFieldSymbol(
|
||||
override val firSymbol: FirFieldSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder
|
||||
) : KtJavaFieldSymbol(), KtFirSymbol<FirFieldSymbol> {
|
||||
|
||||
+3
-3
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.WrongSymbolForSamConst
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
@@ -43,7 +43,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal class KtFirKotlinPropertySymbol(
|
||||
override val firSymbol: FirPropertySymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder
|
||||
) : KtKotlinPropertySymbol(), KtFirSymbol<FirPropertySymbol> {
|
||||
@@ -78,7 +78,7 @@ internal class KtFirKotlinPropertySymbol(
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modalityOrFinal }
|
||||
override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
|
||||
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, resolveState.useSiteFirSession, token) }
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) }
|
||||
|
||||
override val callableIdIfNonLocal: CallableId? get() = withValidityAssertion { firSymbol.getCallableIdIfNonLocal() }
|
||||
|
||||
|
||||
+2
-2
@@ -17,13 +17,13 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal class KtFirLocalVariableSymbol(
|
||||
override val firSymbol: FirPropertySymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder
|
||||
) : KtLocalVariableSymbol(),
|
||||
|
||||
+3
-3
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal class KtFirNamedClassOrObjectSymbol(
|
||||
override val firSymbol: FirRegularClassSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder
|
||||
) : KtNamedClassOrObjectSymbol(), KtFirSymbol<FirRegularClassSymbol> {
|
||||
@@ -65,7 +65,7 @@ internal class KtFirNamedClassOrObjectSymbol(
|
||||
else -> possiblyRawVisibility
|
||||
}
|
||||
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, resolveState.useSiteFirSession, token) }
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) }
|
||||
|
||||
override val isInner: Boolean get() = withValidityAssertion { firSymbol.isInner }
|
||||
override val isData: Boolean get() = withValidityAssertion { firSymbol.isData }
|
||||
|
||||
+3
-3
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
|
||||
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.name.CallableId
|
||||
|
||||
internal class KtFirPropertyGetterSymbol(
|
||||
override val firSymbol: FirPropertyAccessorSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder,
|
||||
) : KtPropertyGetterSymbol(), KtFirSymbol<FirPropertyAccessorSymbol> {
|
||||
@@ -54,7 +54,7 @@ internal class KtFirPropertyGetterSymbol(
|
||||
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
|
||||
override val receiverType: KtType? get() = withValidityAssertion { firSymbol.receiverType(builder) }
|
||||
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, resolveState.useSiteFirSession, token) }
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) }
|
||||
|
||||
/**
|
||||
* Returns [CallableId] of the delegated Java method if the corresponding property of this setter is a synthetic Java property.
|
||||
|
||||
+3
-3
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
|
||||
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.name.CallableId
|
||||
|
||||
internal class KtFirPropertySetterSymbol(
|
||||
override val firSymbol: FirPropertyAccessorSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder,
|
||||
) : KtPropertySetterSymbol(), KtFirSymbol<FirPropertyAccessorSymbol> {
|
||||
@@ -51,7 +51,7 @@ internal class KtFirPropertySetterSymbol(
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modalityOrFinal }
|
||||
override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
|
||||
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, resolveState.useSiteFirSession, token) }
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) }
|
||||
|
||||
/**
|
||||
* Returns [CallableId] of the delegated Java method if the corresponding property of this setter is a synthetic Java property.
|
||||
|
||||
+2
-2
@@ -17,12 +17,12 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
|
||||
internal class KtFirReceiverParameterSymbol(
|
||||
val firSymbol: FirCallableSymbol<*>,
|
||||
val resolveState: LLFirModuleResolveState,
|
||||
val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
_builder: KtSymbolByFirBuilder
|
||||
) : KtReceiverParameterSymbol(), ValidityTokenOwner {
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.isExtension
|
||||
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal class KtFirSamConstructorSymbol(
|
||||
override val firSymbol: FirNamedFunctionSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder
|
||||
) : KtSamConstructorSymbol(), KtFirSymbol<FirNamedFunctionSymbol> {
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.analysis.api.ValidityTokenOwner
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolOrigin
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
internal interface KtFirSymbol<out S : FirBasedSymbol<*>> : KtSymbol, ValidityTokenOwner {
|
||||
val firSymbol: S
|
||||
|
||||
abstract val resolveState: LLFirModuleResolveState
|
||||
val firResolveSession: LLFirResolveSession
|
||||
|
||||
override val origin: KtSymbolOrigin get() = firSymbol.fir.ktSymbolOrigin()
|
||||
}
|
||||
|
||||
+19
-19
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.analysis.api.fir.utils.weakRef
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirFile
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirOfType
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.resolveToFirSymbolOfType
|
||||
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.psi.*
|
||||
internal class KtFirSymbolProvider(
|
||||
override val analysisSession: KtAnalysisSession,
|
||||
firSymbolProvider: FirSymbolProvider,
|
||||
private val resolveState: LLFirModuleResolveState,
|
||||
private val firResolveSession: LLFirResolveSession,
|
||||
private val firSymbolBuilder: KtSymbolByFirBuilder,
|
||||
override val token: ValidityToken,
|
||||
) : KtSymbolProvider(), ValidityTokenOwner {
|
||||
@@ -41,23 +41,23 @@ internal class KtFirSymbolProvider(
|
||||
)
|
||||
|
||||
psi.isLoopParameter -> {
|
||||
firSymbolBuilder.variableLikeBuilder.buildLocalVariableSymbol(psi.resolveToFirSymbolOfType<FirPropertySymbol>(resolveState))
|
||||
firSymbolBuilder.variableLikeBuilder.buildLocalVariableSymbol(psi.resolveToFirSymbolOfType<FirPropertySymbol>(firResolveSession))
|
||||
}
|
||||
|
||||
else -> {
|
||||
firSymbolBuilder.variableLikeBuilder.buildValueParameterSymbol(
|
||||
psi.resolveToFirSymbolOfType<FirValueParameterSymbol>(resolveState)
|
||||
psi.resolveToFirSymbolOfType<FirValueParameterSymbol>(firResolveSession)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getFileSymbol(psi: KtFile): KtFileSymbol = withValidityAssertion {
|
||||
firSymbolBuilder.buildFileSymbol(psi.getOrBuildFirFile(resolveState).symbol)
|
||||
firSymbolBuilder.buildFileSymbol(psi.getOrBuildFirFile(firResolveSession).symbol)
|
||||
}
|
||||
|
||||
override fun getFunctionLikeSymbol(psi: KtNamedFunction): KtFunctionLikeSymbol = withValidityAssertion {
|
||||
when (val firSymbol = psi.resolveToFirSymbolOfType<FirFunctionSymbol<*>>(resolveState)) {
|
||||
when (val firSymbol = psi.resolveToFirSymbolOfType<FirFunctionSymbol<*>>(firResolveSession)) {
|
||||
is FirNamedFunctionSymbol -> {
|
||||
if (firSymbol.origin == FirDeclarationOrigin.SamConstructor) {
|
||||
firSymbolBuilder.functionLikeBuilder.buildSamConstructorSymbol(firSymbol)
|
||||
@@ -72,60 +72,60 @@ internal class KtFirSymbolProvider(
|
||||
|
||||
override fun getConstructorSymbol(psi: KtConstructor<*>): KtConstructorSymbol = withValidityAssertion {
|
||||
|
||||
firSymbolBuilder.functionLikeBuilder.buildConstructorSymbol(psi.resolveToFirSymbolOfType<FirConstructorSymbol>(resolveState))
|
||||
firSymbolBuilder.functionLikeBuilder.buildConstructorSymbol(psi.resolveToFirSymbolOfType<FirConstructorSymbol>(firResolveSession))
|
||||
|
||||
}
|
||||
|
||||
override fun getTypeParameterSymbol(psi: KtTypeParameter): KtTypeParameterSymbol = withValidityAssertion {
|
||||
firSymbolBuilder.classifierBuilder.buildTypeParameterSymbol(psi.resolveToFirSymbolOfType<FirTypeParameterSymbol>(resolveState))
|
||||
firSymbolBuilder.classifierBuilder.buildTypeParameterSymbol(psi.resolveToFirSymbolOfType<FirTypeParameterSymbol>(firResolveSession))
|
||||
}
|
||||
|
||||
override fun getTypeAliasSymbol(psi: KtTypeAlias): KtTypeAliasSymbol = withValidityAssertion {
|
||||
firSymbolBuilder.classifierBuilder.buildTypeAliasSymbol(psi.resolveToFirSymbolOfType<FirTypeAliasSymbol>(resolveState))
|
||||
firSymbolBuilder.classifierBuilder.buildTypeAliasSymbol(psi.resolveToFirSymbolOfType<FirTypeAliasSymbol>(firResolveSession))
|
||||
}
|
||||
|
||||
override fun getEnumEntrySymbol(psi: KtEnumEntry): KtEnumEntrySymbol = withValidityAssertion {
|
||||
firSymbolBuilder.buildEnumEntrySymbol(psi.resolveToFirSymbolOfType<FirEnumEntrySymbol>(resolveState))
|
||||
firSymbolBuilder.buildEnumEntrySymbol(psi.resolveToFirSymbolOfType<FirEnumEntrySymbol>(firResolveSession))
|
||||
}
|
||||
|
||||
override fun getAnonymousFunctionSymbol(psi: KtNamedFunction): KtAnonymousFunctionSymbol = withValidityAssertion {
|
||||
firSymbolBuilder.functionLikeBuilder.buildAnonymousFunctionSymbol(psi.getOrBuildFirOfType(resolveState))
|
||||
firSymbolBuilder.functionLikeBuilder.buildAnonymousFunctionSymbol(psi.getOrBuildFirOfType(firResolveSession))
|
||||
}
|
||||
|
||||
override fun getAnonymousFunctionSymbol(psi: KtFunctionLiteral): KtAnonymousFunctionSymbol = withValidityAssertion {
|
||||
firSymbolBuilder.functionLikeBuilder.buildAnonymousFunctionSymbol(
|
||||
psi.resolveToFirSymbolOfType<FirAnonymousFunctionSymbol>(resolveState)
|
||||
psi.resolveToFirSymbolOfType<FirAnonymousFunctionSymbol>(firResolveSession)
|
||||
)
|
||||
}
|
||||
|
||||
override fun getVariableSymbol(psi: KtProperty): KtVariableSymbol = withValidityAssertion {
|
||||
firSymbolBuilder.variableLikeBuilder.buildVariableSymbol(psi.resolveToFirSymbolOfType<FirPropertySymbol>(resolveState))
|
||||
firSymbolBuilder.variableLikeBuilder.buildVariableSymbol(psi.resolveToFirSymbolOfType<FirPropertySymbol>(firResolveSession))
|
||||
}
|
||||
|
||||
override fun getAnonymousObjectSymbol(psi: KtObjectLiteralExpression): KtAnonymousObjectSymbol = withValidityAssertion {
|
||||
firSymbolBuilder.classifierBuilder.buildAnonymousObjectSymbol(
|
||||
psi.objectDeclaration.resolveToFirSymbolOfType<FirAnonymousObjectSymbol>(resolveState)
|
||||
psi.objectDeclaration.resolveToFirSymbolOfType<FirAnonymousObjectSymbol>(firResolveSession)
|
||||
)
|
||||
}
|
||||
|
||||
override fun getClassOrObjectSymbol(psi: KtClassOrObject): KtClassOrObjectSymbol = withValidityAssertion {
|
||||
firSymbolBuilder.classifierBuilder.buildClassOrObjectSymbol(psi.resolveToFirSymbolOfType<FirClassSymbol<*>>(resolveState))
|
||||
firSymbolBuilder.classifierBuilder.buildClassOrObjectSymbol(psi.resolveToFirSymbolOfType<FirClassSymbol<*>>(firResolveSession))
|
||||
}
|
||||
|
||||
override fun getNamedClassOrObjectSymbol(psi: KtClassOrObject): KtNamedClassOrObjectSymbol? = withValidityAssertion {
|
||||
require(psi !is KtObjectDeclaration || psi.parent !is KtObjectLiteralExpression)
|
||||
// A KtClassOrObject may also map to an FirEnumEntry. Hence, we need to return null in this case.
|
||||
if (psi is KtEnumEntry) return null
|
||||
firSymbolBuilder.classifierBuilder.buildNamedClassOrObjectSymbol(psi.resolveToFirSymbolOfType<FirRegularClassSymbol>(resolveState))
|
||||
firSymbolBuilder.classifierBuilder.buildNamedClassOrObjectSymbol(psi.resolveToFirSymbolOfType<FirRegularClassSymbol>(firResolveSession))
|
||||
}
|
||||
|
||||
override fun getPropertyAccessorSymbol(psi: KtPropertyAccessor): KtPropertyAccessorSymbol = withValidityAssertion {
|
||||
firSymbolBuilder.callableBuilder.buildPropertyAccessorSymbol(psi.resolveToFirSymbolOfType<FirPropertyAccessorSymbol>(resolveState))
|
||||
firSymbolBuilder.callableBuilder.buildPropertyAccessorSymbol(psi.resolveToFirSymbolOfType<FirPropertyAccessorSymbol>(firResolveSession))
|
||||
}
|
||||
|
||||
override fun getClassInitializerSymbol(psi: KtClassInitializer): KtClassInitializerSymbol = withValidityAssertion {
|
||||
firSymbolBuilder.anonymousInitializerBuilder.buildClassInitializer(
|
||||
psi.resolveToFirSymbolOfType<FirAnonymousInitializerSymbol>(resolveState)
|
||||
psi.resolveToFirSymbolOfType<FirAnonymousInitializerSymbol>(firResolveSession)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -139,5 +139,5 @@ internal class KtFirSymbolProvider(
|
||||
return firs.asSequence().map { firSymbol -> firSymbolBuilder.buildSymbol(firSymbol) }
|
||||
}
|
||||
|
||||
override val ROOT_PACKAGE_SYMBOL: KtPackageSymbol = KtFirPackageSymbol(FqName.ROOT, resolveState.project, token)
|
||||
override val ROOT_PACKAGE_SYMBOL: KtPackageSymbol = KtFirPackageSymbol(FqName.ROOT, firResolveSession.project, token)
|
||||
}
|
||||
|
||||
+3
-3
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal class KtFirSyntheticJavaPropertySymbol(
|
||||
override val firSymbol: FirSyntheticPropertySymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder
|
||||
) : KtSyntheticJavaPropertySymbol(), KtFirSymbol<FirSyntheticPropertySymbol> {
|
||||
@@ -56,7 +56,7 @@ internal class KtFirSyntheticJavaPropertySymbol(
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modality ?: firSymbol.invalidModalityError() }
|
||||
override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
|
||||
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, resolveState.useSiteFirSession, token) }
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) }
|
||||
|
||||
override val callableIdIfNonLocal: CallableId? get() = withValidityAssertion { firSymbol.getCallableIdIfNonLocal() }
|
||||
|
||||
|
||||
+3
-3
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal class KtFirTypeAliasSymbol(
|
||||
override val firSymbol: FirTypeAliasSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder,
|
||||
) : KtTypeAliasSymbol(), KtFirSymbol<FirTypeAliasSymbol> {
|
||||
@@ -49,7 +49,7 @@ internal class KtFirTypeAliasSymbol(
|
||||
override val expandedType: KtType by cached { builder.typeBuilder.buildKtType(firSymbol.resolvedExpandedTypeRef) }
|
||||
|
||||
override val annotationsList: KtAnnotationsList by cached {
|
||||
KtFirAnnotationListForDeclaration.create(firSymbol, resolveState.useSiteFirSession, token)
|
||||
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token)
|
||||
}
|
||||
|
||||
override fun createPointer(): KtSymbolPointer<KtTypeAliasSymbol> {
|
||||
|
||||
+2
-2
@@ -15,14 +15,14 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
|
||||
internal class KtFirTypeParameterSymbol(
|
||||
override val firSymbol: FirTypeParameterSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder
|
||||
) : KtTypeParameterSymbol(), KtFirSymbol<FirTypeParameterSymbol> {
|
||||
|
||||
+3
-3
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointe
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.renderWithType
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.arrayElementType
|
||||
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal class KtFirValueParameterSymbol(
|
||||
override val firSymbol: FirValueParameterSymbol,
|
||||
override val resolveState: LLFirModuleResolveState,
|
||||
override val firResolveSession: LLFirResolveSession,
|
||||
override val token: ValidityToken,
|
||||
private val builder: KtSymbolByFirBuilder
|
||||
) : KtValueParameterSymbol(), KtFirSymbol<FirValueParameterSymbol> {
|
||||
@@ -53,7 +53,7 @@ internal class KtFirValueParameterSymbol(
|
||||
|
||||
override val hasDefaultValue: Boolean get() = withValidityAssertion { firSymbol.hasDefaultValue }
|
||||
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, resolveState.useSiteFirSession, token) }
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) }
|
||||
|
||||
override fun createPointer(): KtSymbolPointer<KtValueParameterSymbol> {
|
||||
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
|
||||
|
||||
+1
-1
@@ -33,5 +33,5 @@ internal abstract class KtTopLevelCallableSymbolPointer<S : KtCallableSymbol>(
|
||||
}
|
||||
|
||||
private fun KtFirAnalysisSession.getCallableSymbols(callableId: CallableId) =
|
||||
firResolveState.useSiteFirSession.symbolProvider.getTopLevelCallableSymbols(callableId.packageName, callableId.callableName)
|
||||
firResolveSession.useSiteFirSession.symbolProvider.getTopLevelCallableSymbols(callableId.packageName, callableId.callableName)
|
||||
|
||||
|
||||
+1
-1
@@ -58,4 +58,4 @@ internal fun FirDeclaration.createSignature(): IdSignature {
|
||||
}
|
||||
|
||||
internal fun KtFirAnalysisSession.getClassLikeSymbol(classId: ClassId) =
|
||||
firResolveState.useSiteFirSession.symbolProvider.getClassLikeSymbolByClassId(classId)?.fir
|
||||
firResolveSession.useSiteFirSession.symbolProvider.getClassLikeSymbolByClassId(classId)?.fir
|
||||
|
||||
+4
-4
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
@@ -29,7 +29,7 @@ class KtAnalysisSessionFe10BindingHolder private constructor(
|
||||
) {
|
||||
val analysisSession: KtAnalysisSession get() = firAnalysisSession
|
||||
|
||||
val firResolveState: LLFirModuleResolveState get() = firAnalysisSession.firResolveState
|
||||
val firResolveSession: LLFirResolveSession get() = firAnalysisSession.firResolveSession
|
||||
|
||||
fun buildClassLikeSymbol(fir: FirClassLikeDeclaration): KtClassLikeSymbol =
|
||||
firAnalysisSession.firSymbolBuilder.classifierBuilder.buildClassLikeSymbol(fir.symbol)
|
||||
@@ -47,9 +47,9 @@ class KtAnalysisSessionFe10BindingHolder private constructor(
|
||||
|
||||
companion object {
|
||||
@InvalidWayOfUsingAnalysisSession
|
||||
fun create(firResolveState: LLFirModuleResolveState, token: ValidityToken, @Suppress("UNUSED_PARAMETER") ktElement: KtElement): KtAnalysisSessionFe10BindingHolder {
|
||||
fun create(firResolveSession: LLFirResolveSession, token: ValidityToken, @Suppress("UNUSED_PARAMETER") ktElement: KtElement): KtAnalysisSessionFe10BindingHolder {
|
||||
@Suppress("DEPRECATION")
|
||||
val firAnalysisSession = KtFirAnalysisSession.createAnalysisSessionByResolveState(firResolveState, token)
|
||||
val firAnalysisSession = KtFirAnalysisSession.createAnalysisSessionByFirResolveSession(firResolveSession, token)
|
||||
return KtAnalysisSessionFe10BindingHolder(firAnalysisSession)
|
||||
}
|
||||
}
|
||||
|
||||
+6
-6
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.analysis.api.fir.utils
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirModuleResolveState
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirBuiltinsModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirKtModuleBasedModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.firModuleData
|
||||
@@ -25,20 +25,20 @@ val KtSymbol.firSymbol: FirBasedSymbol<*>
|
||||
}
|
||||
|
||||
|
||||
fun FirBasedSymbol<*>.getContainingKtModule(resolveState: LLFirModuleResolveState): KtModule {
|
||||
fun FirBasedSymbol<*>.getContainingKtModule(firResolveSession: LLFirResolveSession): KtModule {
|
||||
val target = when (this) {
|
||||
is FirCallableSymbol -> {
|
||||
// callable fake overrides have use-site FirModuleData
|
||||
dispatchReceiverClassOrNull()?.toFirRegularClassSymbol(resolveState.useSiteFirSession) ?: this
|
||||
dispatchReceiverClassOrNull()?.toFirRegularClassSymbol(firResolveSession.useSiteFirSession) ?: this
|
||||
}
|
||||
else -> this
|
||||
}
|
||||
return when (val moduleData = target.firModuleData) {
|
||||
is LLFirKtModuleBasedModuleData -> moduleData.ktModule
|
||||
is LLFirBuiltinsModuleData -> resolveState.project.getService(ProjectStructureProvider::class.java).getStdlibWithBuiltinsModule(moduleData.useSiteKtModule)
|
||||
is LLFirBuiltinsModuleData -> firResolveSession.project.getService(ProjectStructureProvider::class.java).getStdlibWithBuiltinsModule(moduleData.useSiteKtModule)
|
||||
?: error("Builtins not found for the ${moduleData.useSiteKtModule.moduleDescription}")
|
||||
}
|
||||
}
|
||||
|
||||
fun KtSymbol.getContainingKtModule(resolveState: LLFirModuleResolveState): KtModule =
|
||||
firSymbol.getContainingKtModule(resolveState)
|
||||
fun KtSymbol.getContainingKtModule(firResolveSession: LLFirResolveSession): KtModule =
|
||||
firSymbol.getContainingKtModule(firResolveSession)
|
||||
Reference in New Issue
Block a user