[Analysis API] optimize RAM consumption in KtFirSymbol

- remove extra field which can be retrieved via KtFirAnalysisSession

^KTIJ-22749
This commit is contained in:
Ilya Kirillov
2023-02-03 13:17:04 +01:00
committed by Space Team
parent a9b4f77196
commit 3d3ab5d379
26 changed files with 99 additions and 178 deletions
@@ -103,9 +103,9 @@ internal class KtSymbolByFirBuilder constructor(
} }
fun buildEnumEntrySymbol(firSymbol: FirEnumEntrySymbol) = fun buildEnumEntrySymbol(firSymbol: FirEnumEntrySymbol) =
symbolsCache.cache(firSymbol) { KtFirEnumEntrySymbol(firSymbol, firResolveSession, this) } symbolsCache.cache(firSymbol) { KtFirEnumEntrySymbol(firSymbol, analysisSession) }
fun buildFileSymbol(firSymbol: FirFileSymbol) = filesCache.cache(firSymbol) { KtFirFileSymbol(firSymbol, firResolveSession, token) } fun buildFileSymbol(firSymbol: FirFileSymbol) = filesCache.cache(firSymbol) { KtFirFileSymbol(firSymbol, analysisSession) }
private val packageProvider = project.createPackageProvider(GlobalSearchScope.allScope(project))//todo scope private val packageProvider = project.createPackageProvider(GlobalSearchScope.allScope(project))//todo scope
@@ -150,24 +150,20 @@ internal class KtSymbolByFirBuilder constructor(
} }
fun buildNamedClassOrObjectSymbol(symbol: FirRegularClassSymbol): KtFirNamedClassOrObjectSymbol { fun buildNamedClassOrObjectSymbol(symbol: FirRegularClassSymbol): KtFirNamedClassOrObjectSymbol {
return symbolsCache.cache(symbol) { KtFirNamedClassOrObjectSymbol(symbol, firResolveSession, this@KtSymbolByFirBuilder) } return symbolsCache.cache(symbol) { KtFirNamedClassOrObjectSymbol(symbol, analysisSession) }
} }
fun buildAnonymousObjectSymbol(symbol: FirAnonymousObjectSymbol): KtAnonymousObjectSymbol { fun buildAnonymousObjectSymbol(symbol: FirAnonymousObjectSymbol): KtAnonymousObjectSymbol {
return symbolsCache.cache(symbol) { KtFirAnonymousObjectSymbol(symbol, firResolveSession, this@KtSymbolByFirBuilder) } return symbolsCache.cache(symbol) { KtFirAnonymousObjectSymbol(symbol, analysisSession) }
} }
fun buildTypeAliasSymbol(symbol: FirTypeAliasSymbol): KtFirTypeAliasSymbol { fun buildTypeAliasSymbol(symbol: FirTypeAliasSymbol): KtFirTypeAliasSymbol {
return symbolsCache.cache(symbol) { KtFirTypeAliasSymbol(symbol, firResolveSession, this@KtSymbolByFirBuilder) } return symbolsCache.cache(symbol) { KtFirTypeAliasSymbol(symbol, analysisSession) }
} }
fun buildTypeParameterSymbol(firSymbol: FirTypeParameterSymbol): KtFirTypeParameterSymbol { fun buildTypeParameterSymbol(firSymbol: FirTypeParameterSymbol): KtFirTypeParameterSymbol {
return symbolsCache.cache(firSymbol) { return symbolsCache.cache(firSymbol) {
KtFirTypeParameterSymbol( KtFirTypeParameterSymbol(firSymbol, analysisSession)
firSymbol,
firResolveSession,
this@KtSymbolByFirBuilder
)
} }
} }
@@ -222,7 +218,7 @@ internal class KtSymbolByFirBuilder constructor(
} }
check(firSymbol.origin != FirDeclarationOrigin.SamConstructor) check(firSymbol.origin != FirDeclarationOrigin.SamConstructor)
return symbolsCache.cache(firSymbol) { KtFirFunctionSymbol(firSymbol, firResolveSession, this@KtSymbolByFirBuilder) } return symbolsCache.cache(firSymbol) { KtFirFunctionSymbol(firSymbol, analysisSession) }
} }
fun buildFunctionSignature(firSymbol: FirNamedFunctionSymbol): KtFunctionLikeSignature<KtFirFunctionSymbol> { fun buildFunctionSignature(firSymbol: FirNamedFunctionSymbol): KtFunctionLikeSignature<KtFirFunctionSymbol> {
@@ -244,11 +240,7 @@ internal class KtSymbolByFirBuilder constructor(
fun buildAnonymousFunctionSymbol(firSymbol: FirAnonymousFunctionSymbol): KtFirAnonymousFunctionSymbol { fun buildAnonymousFunctionSymbol(firSymbol: FirAnonymousFunctionSymbol): KtFirAnonymousFunctionSymbol {
return symbolsCache.cache(firSymbol) { return symbolsCache.cache(firSymbol) {
KtFirAnonymousFunctionSymbol( KtFirAnonymousFunctionSymbol(firSymbol, analysisSession)
firSymbol,
firResolveSession,
this@KtSymbolByFirBuilder
)
} }
} }
@@ -256,27 +248,23 @@ internal class KtSymbolByFirBuilder constructor(
val originalFirSymbol = firSymbol.fir.originalConstructorIfTypeAlias?.symbol ?: firSymbol val originalFirSymbol = firSymbol.fir.originalConstructorIfTypeAlias?.symbol ?: firSymbol
val unwrapped = originalFirSymbol.originalIfFakeOverride() ?: originalFirSymbol val unwrapped = originalFirSymbol.originalIfFakeOverride() ?: originalFirSymbol
return symbolsCache.cache(unwrapped) { return symbolsCache.cache(unwrapped) {
KtFirConstructorSymbol(unwrapped, firResolveSession, this@KtSymbolByFirBuilder) KtFirConstructorSymbol(unwrapped, analysisSession)
} }
} }
fun buildSamConstructorSymbol(firSymbol: FirNamedFunctionSymbol): KtFirSamConstructorSymbol { fun buildSamConstructorSymbol(firSymbol: FirNamedFunctionSymbol): KtFirSamConstructorSymbol {
check(firSymbol.origin == FirDeclarationOrigin.SamConstructor) check(firSymbol.origin == FirDeclarationOrigin.SamConstructor)
return symbolsCache.cache(firSymbol) { return symbolsCache.cache(firSymbol) {
KtFirSamConstructorSymbol( KtFirSamConstructorSymbol(firSymbol, analysisSession)
firSymbol,
firResolveSession,
this@KtSymbolByFirBuilder
)
} }
} }
fun buildPropertyAccessorSymbol(firSymbol: FirPropertyAccessorSymbol): KtFunctionLikeSymbol { fun buildPropertyAccessorSymbol(firSymbol: FirPropertyAccessorSymbol): KtFunctionLikeSymbol {
return symbolsCache.cache(firSymbol) { return symbolsCache.cache(firSymbol) {
if (firSymbol.isGetter) { if (firSymbol.isGetter) {
KtFirPropertyGetterSymbol(firSymbol, firResolveSession, this@KtSymbolByFirBuilder) KtFirPropertyGetterSymbol(firSymbol, analysisSession)
} else { } else {
KtFirPropertySetterSymbol(firSymbol, firResolveSession, this@KtSymbolByFirBuilder) KtFirPropertySetterSymbol(firSymbol, analysisSession)
} }
} }
} }
@@ -321,7 +309,7 @@ internal class KtSymbolByFirBuilder constructor(
} }
return symbolsCache.cache(firSymbol) { return symbolsCache.cache(firSymbol) {
KtFirKotlinPropertySymbol(firSymbol, firResolveSession, this@KtSymbolByFirBuilder) KtFirKotlinPropertySymbol(firSymbol, analysisSession)
} }
} }
@@ -337,31 +325,31 @@ internal class KtSymbolByFirBuilder constructor(
fun buildLocalVariableSymbol(firSymbol: FirPropertySymbol): KtFirLocalVariableSymbol { fun buildLocalVariableSymbol(firSymbol: FirPropertySymbol): KtFirLocalVariableSymbol {
checkRequirementForBuildingSymbol<KtFirLocalVariableSymbol>(firSymbol, firSymbol.isLocal) checkRequirementForBuildingSymbol<KtFirLocalVariableSymbol>(firSymbol, firSymbol.isLocal)
return symbolsCache.cache(firSymbol) { return symbolsCache.cache(firSymbol) {
KtFirLocalVariableSymbol(firSymbol, firResolveSession, this@KtSymbolByFirBuilder) KtFirLocalVariableSymbol(firSymbol, analysisSession)
} }
} }
fun buildSyntheticJavaPropertySymbol(firSymbol: FirSyntheticPropertySymbol): KtFirSyntheticJavaPropertySymbol { fun buildSyntheticJavaPropertySymbol(firSymbol: FirSyntheticPropertySymbol): KtFirSyntheticJavaPropertySymbol {
return symbolsCache.cache(firSymbol) { return symbolsCache.cache(firSymbol) {
KtFirSyntheticJavaPropertySymbol(firSymbol, firResolveSession, this@KtSymbolByFirBuilder) KtFirSyntheticJavaPropertySymbol(firSymbol, analysisSession)
} }
} }
fun buildValueParameterSymbol(firSymbol: FirValueParameterSymbol): KtValueParameterSymbol { fun buildValueParameterSymbol(firSymbol: FirValueParameterSymbol): KtValueParameterSymbol {
return symbolsCache.cache(firSymbol) { return symbolsCache.cache(firSymbol) {
KtFirValueParameterSymbol(firSymbol, firResolveSession, this@KtSymbolByFirBuilder) KtFirValueParameterSymbol(firSymbol, analysisSession)
} }
} }
fun buildFieldSymbol(firSymbol: FirFieldSymbol): KtFirJavaFieldSymbol { fun buildFieldSymbol(firSymbol: FirFieldSymbol): KtFirJavaFieldSymbol {
checkRequirementForBuildingSymbol<KtFirJavaFieldSymbol>(firSymbol, firSymbol.fir.isJavaFieldOrSubstitutionOverrideOfJavaField()) checkRequirementForBuildingSymbol<KtFirJavaFieldSymbol>(firSymbol, firSymbol.fir.isJavaFieldOrSubstitutionOverrideOfJavaField())
return symbolsCache.cache(firSymbol) { KtFirJavaFieldSymbol(firSymbol, firResolveSession, this@KtSymbolByFirBuilder) } return symbolsCache.cache(firSymbol) { KtFirJavaFieldSymbol(firSymbol, analysisSession) }
} }
fun buildBackingFieldSymbol(firSymbol: FirBackingFieldSymbol): KtFirBackingFieldSymbol { fun buildBackingFieldSymbol(firSymbol: FirBackingFieldSymbol): KtFirBackingFieldSymbol {
return backingFieldCache.cache(firSymbol) { return backingFieldCache.cache(firSymbol) {
KtFirBackingFieldSymbol(firSymbol, firResolveSession, this@KtSymbolByFirBuilder) KtFirBackingFieldSymbol(firSymbol, analysisSession)
} }
} }
@@ -408,36 +396,28 @@ internal class KtSymbolByFirBuilder constructor(
fun buildGetterSymbol(firSymbol: FirPropertyAccessorSymbol): KtFirPropertyGetterSymbol { fun buildGetterSymbol(firSymbol: FirPropertyAccessorSymbol): KtFirPropertyGetterSymbol {
checkRequirementForBuildingSymbol<KtFirPropertyGetterSymbol>(firSymbol, firSymbol.isGetter) checkRequirementForBuildingSymbol<KtFirPropertyGetterSymbol>(firSymbol, firSymbol.isGetter)
return symbolsCache.cache(firSymbol) { return symbolsCache.cache(firSymbol) {
KtFirPropertyGetterSymbol( KtFirPropertyGetterSymbol(firSymbol, analysisSession)
firSymbol,
firResolveSession,
this@KtSymbolByFirBuilder
)
} }
} }
fun buildSetterSymbol(firSymbol: FirPropertyAccessorSymbol): KtFirPropertySetterSymbol { fun buildSetterSymbol(firSymbol: FirPropertyAccessorSymbol): KtFirPropertySetterSymbol {
checkRequirementForBuildingSymbol<KtFirPropertySetterSymbol>(firSymbol, firSymbol.isSetter) checkRequirementForBuildingSymbol<KtFirPropertySetterSymbol>(firSymbol, firSymbol.isSetter)
return symbolsCache.cache(firSymbol) { return symbolsCache.cache(firSymbol) {
KtFirPropertySetterSymbol( KtFirPropertySetterSymbol(firSymbol, analysisSession)
firSymbol,
firResolveSession,
this@KtSymbolByFirBuilder
)
} }
} }
fun buildExtensionReceiverSymbol(firCallableSymbol: FirCallableSymbol<*>): KtReceiverParameterSymbol? { fun buildExtensionReceiverSymbol(firCallableSymbol: FirCallableSymbol<*>): KtReceiverParameterSymbol? {
if (firCallableSymbol.fir.receiverParameter == null) return null if (firCallableSymbol.fir.receiverParameter == null) return null
return extensionReceiverSymbolsCache.cache(firCallableSymbol) { return extensionReceiverSymbolsCache.cache(firCallableSymbol) {
KtFirReceiverParameterSymbol(firCallableSymbol, firResolveSession, this@KtSymbolByFirBuilder) KtFirReceiverParameterSymbol(firCallableSymbol, analysisSession)
} }
} }
} }
inner class AnonymousInitializerBuilder { inner class AnonymousInitializerBuilder {
fun buildClassInitializer(firSymbol: FirAnonymousInitializerSymbol): KtClassInitializerSymbol { fun buildClassInitializer(firSymbol: FirAnonymousInitializerSymbol): KtClassInitializerSymbol {
return symbolsCache.cache(firSymbol) { KtFirClassInitializerSymbol(firSymbol, firResolveSession, token) } return symbolsCache.cache(firSymbol) { KtFirClassInitializerSymbol(firSymbol, analysisSession) }
} }
} }
@@ -9,11 +9,10 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtAnonymousFunctionSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtAnonymousFunctionSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtReceiverParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtReceiverParameterSymbol
@@ -22,26 +21,23 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.CanNotCreateSymbolPoin
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.isExtension import org.jetbrains.kotlin.fir.symbols.impl.isExtension
internal class KtFirAnonymousFunctionSymbol( internal class KtFirAnonymousFunctionSymbol(
override val firSymbol: FirAnonymousFunctionSymbol, override val firSymbol: FirAnonymousFunctionSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder,
) : KtAnonymousFunctionSymbol(), KtFirSymbol<FirAnonymousFunctionSymbol> { ) : KtAnonymousFunctionSymbol(), KtFirSymbol<FirAnonymousFunctionSymbol> {
override val token: KtLifetimeToken get() = builder.token
override val psi: PsiElement? by cached { firSymbol.fir.findPsi(firSymbol.fir.moduleData.session) } override val psi: PsiElement? by cached { firSymbol.fir.findPsi(firSymbol.fir.moduleData.session) }
override val annotationsList: KtAnnotationsList override val annotationsList: KtAnnotationsList
get() = withValidityAssertion { get() = withValidityAssertion {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) KtFirAnnotationListForDeclaration.create(firSymbol, analysisSession.useSiteSession, token)
} }
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) } override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(analysisSession.firSymbolBuilder) }
override val receiverParameter: KtReceiverParameterSymbol? get() = withValidityAssertion { firSymbol.receiver(builder) } override val receiverParameter: KtReceiverParameterSymbol? get() = withValidityAssertion { firSymbol.receiver(builder) }
override val contextReceivers: List<KtContextReceiver> by cached { firSymbol.createContextReceivers(builder) } override val contextReceivers: List<KtContextReceiver> by cached { firSymbol.createContextReceivers(builder) }
@@ -8,32 +8,28 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.KtFakeSourceElementKind import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirEnumEntryInitializerSymbolPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirEnumEntryInitializerSymbolPointer
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer
import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtAnonymousObjectSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtAnonymousObjectSymbol
import org.jetbrains.kotlin.analysis.api.symbols.pointers.CanNotCreateSymbolPointerForLocalLibraryDeclarationException import org.jetbrains.kotlin.analysis.api.symbols.pointers.CanNotCreateSymbolPointerForLocalLibraryDeclarationException
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol
internal class KtFirAnonymousObjectSymbol( internal class KtFirAnonymousObjectSymbol(
override val firSymbol: FirAnonymousObjectSymbol, override val firSymbol: FirAnonymousObjectSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder,
) : KtAnonymousObjectSymbol(), KtFirSymbol<FirAnonymousObjectSymbol> { ) : KtAnonymousObjectSymbol(), KtFirSymbol<FirAnonymousObjectSymbol> {
override val token: KtLifetimeToken get() = builder.token
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val annotationsList by cached { override val annotationsList by cached {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) KtFirAnnotationListForDeclaration.create(firSymbol, analysisSession.useSiteSession, token)
} }
override val superTypes: List<KtType> by cached { firSymbol.superTypesList(builder) } override val superTypes: List<KtType> by cached { firSymbol.superTypesList(builder) }
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.name.StandardClassIds
object KtFirArrayOfSymbolProvider { object KtFirArrayOfSymbolProvider {
internal fun KtFirAnalysisSession.arrayOfSymbol(identifier: Name): KtFirFunctionSymbol? { internal fun KtFirAnalysisSession.arrayOfSymbol(identifier: Name): KtFirFunctionSymbol? {
val firSymbol = firResolveSession.useSiteFirSession.symbolProvider.getTopLevelCallableSymbols(kotlinPackage, identifier).firstOrNull { val firSymbol = useSiteSession.symbolProvider.getTopLevelCallableSymbols(kotlinPackage, identifier).firstOrNull {
/* choose (for byte array) /* choose (for byte array)
* public fun byteArrayOf(vararg elements: kotlin.Byte): kotlin.ByteArray * public fun byteArrayOf(vararg elements: kotlin.Byte): kotlin.ByteArray
*/ */
@@ -7,30 +7,26 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirBackingFieldSymbolPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirBackingFieldSymbolPointer
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtBackingFieldSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtBackingFieldSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolOrigin import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolOrigin
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
internal class KtFirBackingFieldSymbol( internal class KtFirBackingFieldSymbol(
override val firSymbol: FirBackingFieldSymbol, override val firSymbol: FirBackingFieldSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder
) : KtBackingFieldSymbol(), KtFirSymbol<FirBackingFieldSymbol> { ) : KtBackingFieldSymbol(), KtFirSymbol<FirBackingFieldSymbol> {
override val token: KtLifetimeToken get() = builder.token
override val origin: KtSymbolOrigin get() = withValidityAssertion { super<KtBackingFieldSymbol>.origin } override val origin: KtSymbolOrigin get() = withValidityAssertion { super<KtBackingFieldSymbol>.origin }
override val annotationsList: KtAnnotationsList override val annotationsList: KtAnnotationsList
get() = withValidityAssertion { get() = withValidityAssertion {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) KtFirAnnotationListForDeclaration.create(firSymbol, analysisSession.useSiteSession, token)
} }
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) } override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
@@ -8,10 +8,10 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.impl.base.annotations.KtEmptyAnnotationsList import org.jetbrains.kotlin.analysis.api.impl.base.annotations.KtEmptyAnnotationsList
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtClassInitializerSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtClassInitializerSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
@@ -19,13 +19,11 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
internal class KtFirClassInitializerSymbol( internal class KtFirClassInitializerSymbol(
override val firSymbol: FirAnonymousInitializerSymbol, override val firSymbol: FirAnonymousInitializerSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
override val token: KtLifetimeToken,
) : KtClassInitializerSymbol(), KtFirSymbol<FirAnonymousInitializerSymbol> { ) : KtClassInitializerSymbol(), KtFirSymbol<FirAnonymousInitializerSymbol> {
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
@@ -7,14 +7,13 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.FirCallableSignature import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.FirCallableSignature
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirConstructorSymbolPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirConstructorSymbolPointer
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer
import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol
@@ -23,7 +22,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.CanNotCreateSymbolPoin
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.containingClassLookupTag import org.jetbrains.kotlin.fir.containingClassLookupTag
import org.jetbrains.kotlin.fir.declarations.utils.visibility import org.jetbrains.kotlin.fir.declarations.utils.visibility
@@ -33,10 +31,8 @@ import org.jetbrains.kotlin.name.ClassId
internal class KtFirConstructorSymbol( internal class KtFirConstructorSymbol(
override val firSymbol: FirConstructorSymbol, override val firSymbol: FirConstructorSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder
) : KtConstructorSymbol(), KtFirSymbol<FirConstructorSymbol> { ) : KtConstructorSymbol(), KtFirSymbol<FirConstructorSymbol> {
override val token: KtLifetimeToken get() = builder.token
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) } override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
@@ -53,7 +49,7 @@ internal class KtFirConstructorSymbol(
override val annotationsList by cached { override val annotationsList by cached {
KtFirAnnotationListForDeclaration.create( KtFirAnnotationListForDeclaration.create(
firSymbol, firSymbol,
firResolveSession.useSiteFirSession, analysisSession.useSiteSession,
token, token,
) )
} }
@@ -8,19 +8,17 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirEnumEntrySymbolPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirEnumEntrySymbolPointer
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer
import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtEnumEntrySymbol import org.jetbrains.kotlin.analysis.api.symbols.KtEnumEntrySymbol
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol
import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
@@ -28,15 +26,13 @@ import org.jetbrains.kotlin.name.Name
internal class KtFirEnumEntrySymbol( internal class KtFirEnumEntrySymbol(
override val firSymbol: FirEnumEntrySymbol, override val firSymbol: FirEnumEntrySymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder
) : KtEnumEntrySymbol(), KtFirSymbol<FirEnumEntrySymbol> { ) : KtEnumEntrySymbol(), KtFirSymbol<FirEnumEntrySymbol> {
override val token: KtLifetimeToken get() = builder.token
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val annotationsList: KtAnnotationsList override val annotationsList: KtAnnotationsList
get() = withValidityAssertion { get() = withValidityAssertion {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) KtFirAnnotationListForDeclaration.create(firSymbol, analysisSession.useSiteSession, token)
} }
override val name: Name get() = withValidityAssertion { firSymbol.name } override val name: Name get() = withValidityAssertion { firSymbol.name }
@@ -7,22 +7,20 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtFileSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtFileSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithDeclarations import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithDeclarations
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol
internal class KtFirFileSymbol( internal class KtFirFileSymbol(
override val firSymbol: FirFileSymbol, override val firSymbol: FirFileSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
override val token: KtLifetimeToken,
) : KtFileSymbol(), KtSymbolWithDeclarations, KtFirSymbol<FirFileSymbol> { ) : KtFileSymbol(), KtSymbolWithDeclarations, KtFirSymbol<FirFileSymbol> {
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
@@ -35,7 +33,7 @@ internal class KtFirFileSymbol(
override val annotationsList by cached { override val annotationsList by cached {
KtFirAnnotationListForDeclaration.create( KtFirAnnotationListForDeclaration.create(
firSymbol, firSymbol,
firResolveSession.useSiteFirSession, analysisSession.useSiteSession,
token, token,
) )
} }
@@ -9,7 +9,7 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
import org.jetbrains.kotlin.analysis.api.contracts.description.KtContractEffectDeclaration import org.jetbrains.kotlin.analysis.api.contracts.description.KtContractEffectDeclaration
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.contracts.coneEffectDeclarationToAnalysisApi import org.jetbrains.kotlin.analysis.api.fir.contracts.coneEffectDeclarationToAnalysisApi
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirTopLevelFunct
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer
import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.impl.base.util.kotlinFunctionInvokeCallableIds import org.jetbrains.kotlin.analysis.api.impl.base.util.kotlinFunctionInvokeCallableIds
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtReceiverParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtReceiverParameterSymbol
@@ -30,7 +29,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointe
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.UnsupportedSymbolKind import org.jetbrains.kotlin.analysis.api.symbols.pointers.UnsupportedSymbolKind
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.containingClassLookupTag import org.jetbrains.kotlin.fir.containingClassLookupTag
@@ -44,10 +42,8 @@ import org.jetbrains.kotlin.name.Name
internal class KtFirFunctionSymbol( internal class KtFirFunctionSymbol(
override val firSymbol: FirNamedFunctionSymbol, override val firSymbol: FirNamedFunctionSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder
) : KtFunctionSymbol(), KtFirSymbol<FirNamedFunctionSymbol> { ) : KtFunctionSymbol(), KtFirSymbol<FirNamedFunctionSymbol> {
override val token: KtLifetimeToken get() = builder.token
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val name: Name get() = withValidityAssertion { firSymbol.name } override val name: Name get() = withValidityAssertion { firSymbol.name }
@@ -74,7 +70,7 @@ internal class KtFirFunctionSymbol(
override val annotationsList by cached { override val annotationsList by cached {
KtFirAnnotationListForDeclaration.create( KtFirAnnotationListForDeclaration.create(
firSymbol, firSymbol,
firResolveSession.useSiteFirSession, analysisSession.useSiteSession,
token, token,
) )
} }
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirJavaFieldSymbolPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirJavaFieldSymbolPointer
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtJavaFieldSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtJavaFieldSymbol
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.declarations.utils.isStatic import org.jetbrains.kotlin.fir.declarations.utils.isStatic
@@ -31,15 +30,14 @@ import org.jetbrains.kotlin.name.Name
internal class KtFirJavaFieldSymbol( internal class KtFirJavaFieldSymbol(
override val firSymbol: FirFieldSymbol, override val firSymbol: FirFieldSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder
) : KtJavaFieldSymbol(), KtFirSymbol<FirFieldSymbol> { ) : KtJavaFieldSymbol(), KtFirSymbol<FirFieldSymbol> {
override val token: KtLifetimeToken get() = builder.token override val token: KtLifetimeToken get() = builder.token
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val annotationsList: KtAnnotationsList override val annotationsList: KtAnnotationsList
get() = withValidityAssertion { get() = withValidityAssertion {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) KtFirAnnotationListForDeclaration.create(firSymbol, analysisSession.useSiteSession, token)
} }
override val isVal: Boolean get() = withValidityAssertion { firSymbol.fir.isVal } override val isVal: Boolean get() = withValidityAssertion { firSymbol.fir.isVal }
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.KtInitializerValue import org.jetbrains.kotlin.analysis.api.KtInitializerValue
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
@@ -39,10 +40,8 @@ import org.jetbrains.kotlin.name.Name
internal class KtFirKotlinPropertySymbol( internal class KtFirKotlinPropertySymbol(
override val firSymbol: FirPropertySymbol, override val firSymbol: FirPropertySymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder
) : KtKotlinPropertySymbol(), KtFirSymbol<FirPropertySymbol> { ) : KtKotlinPropertySymbol(), KtFirSymbol<FirPropertySymbol> {
override val token: KtLifetimeToken get() = builder.token
init { init {
assert(!firSymbol.isLocal) assert(!firSymbol.isLocal)
check(firSymbol !is FirSyntheticPropertySymbol) check(firSymbol !is FirSyntheticPropertySymbol)
@@ -63,7 +62,7 @@ internal class KtFirKotlinPropertySymbol(
override val contextReceivers: List<KtContextReceiver> by cached { firSymbol.createContextReceivers(builder) } override val contextReceivers: List<KtContextReceiver> by cached { firSymbol.createContextReceivers(builder) }
override val isExtension: Boolean get() = withValidityAssertion { firSymbol.isExtension } override val isExtension: Boolean get() = withValidityAssertion { firSymbol.isExtension }
override val initializer: KtInitializerValue? by cached { firSymbol.getKtConstantInitializer(firResolveSession) } override val initializer: KtInitializerValue? by cached { firSymbol.getKtConstantInitializer(analysisSession.firResolveSession) }
override val symbolKind: KtSymbolKind override val symbolKind: KtSymbolKind
get() = withValidityAssertion { get() = withValidityAssertion {
@@ -79,7 +78,7 @@ internal class KtFirKotlinPropertySymbol(
override val annotationsList by cached { override val annotationsList by cached {
KtFirAnnotationListForDeclaration.create( KtFirAnnotationListForDeclaration.create(
firSymbol, firSymbol,
firResolveSession.useSiteFirSession, analysisSession.useSiteSession,
token token
) )
} }
@@ -8,11 +8,10 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtLocalVariableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtLocalVariableSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
@@ -20,26 +19,23 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.CanNotCreateSymbolPoin
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
internal class KtFirLocalVariableSymbol( internal class KtFirLocalVariableSymbol(
override val firSymbol: FirPropertySymbol, override val firSymbol: FirPropertySymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder
) : KtLocalVariableSymbol(), ) : KtLocalVariableSymbol(),
KtFirSymbol<FirPropertySymbol> { KtFirSymbol<FirPropertySymbol> {
init { init {
assert(firSymbol.isLocal) assert(firSymbol.isLocal)
} }
override val token: KtLifetimeToken get() = builder.token
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val annotationsList: KtAnnotationsList override val annotationsList: KtAnnotationsList
get() = withValidityAssertion { get() = withValidityAssertion {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) KtFirAnnotationListForDeclaration.create(firSymbol, analysisSession.useSiteSession, token)
} }
override val isVal: Boolean get() = withValidityAssertion { firSymbol.isVal } override val isVal: Boolean get() = withValidityAssertion { firSymbol.isVal }
@@ -9,7 +9,7 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirClassLikeSymbolPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirClassLikeSymbolPointer
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointe
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.UnsupportedSymbolKind import org.jetbrains.kotlin.analysis.api.symbols.pointers.UnsupportedSymbolKind
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
@@ -37,8 +36,7 @@ import org.jetbrains.kotlin.name.Name
internal class KtFirNamedClassOrObjectSymbol( internal class KtFirNamedClassOrObjectSymbol(
override val firSymbol: FirRegularClassSymbol, override val firSymbol: FirRegularClassSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder
) : KtNamedClassOrObjectSymbol(), KtFirSymbol<FirRegularClassSymbol> { ) : KtNamedClassOrObjectSymbol(), KtFirSymbol<FirRegularClassSymbol> {
override val token: KtLifetimeToken get() = builder.token override val token: KtLifetimeToken get() = builder.token
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
@@ -71,7 +69,7 @@ internal class KtFirNamedClassOrObjectSymbol(
override val annotationsList by cached { override val annotationsList by cached {
KtFirAnnotationListForDeclaration.create( KtFirAnnotationListForDeclaration.create(
firSymbol, firSymbol,
firResolveSession.useSiteFirSession, analysisSession.useSiteSession,
token, token,
) )
} }
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
@@ -33,8 +32,7 @@ import org.jetbrains.kotlin.name.CallableId
internal class KtFirPropertyGetterSymbol( internal class KtFirPropertyGetterSymbol(
override val firSymbol: FirPropertyAccessorSymbol, override val firSymbol: FirPropertyAccessorSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder,
) : KtPropertyGetterSymbol(), KtFirSymbol<FirPropertyAccessorSymbol> { ) : KtPropertyGetterSymbol(), KtFirSymbol<FirPropertyAccessorSymbol> {
override val token: KtLifetimeToken get() = builder.token override val token: KtLifetimeToken get() = builder.token
init { init {
@@ -63,7 +61,7 @@ internal class KtFirPropertyGetterSymbol(
override val annotationsList by cached { override val annotationsList by cached {
KtFirAnnotationListForDeclaration.create( KtFirAnnotationListForDeclaration.create(
firSymbol, firSymbol,
firResolveSession.useSiteFirSession, analysisSession.useSiteSession,
token, token,
) )
} }
@@ -8,13 +8,12 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer
import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KtPropertyAccessorSymbolPointer import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KtPropertyAccessorSymbolPointer
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySetterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySetterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtReceiverParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtReceiverParameterSymbol
@@ -22,7 +21,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
@@ -37,10 +35,8 @@ import org.jetbrains.kotlin.name.CallableId
internal class KtFirPropertySetterSymbol( internal class KtFirPropertySetterSymbol(
override val firSymbol: FirPropertyAccessorSymbol, override val firSymbol: FirPropertyAccessorSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder,
) : KtPropertySetterSymbol(), KtFirSymbol<FirPropertyAccessorSymbol> { ) : KtPropertySetterSymbol(), KtFirSymbol<FirPropertyAccessorSymbol> {
override val token: KtLifetimeToken get() = builder.token
init { init {
require(firSymbol.isSetter) require(firSymbol.isSetter)
@@ -55,10 +51,10 @@ internal class KtFirPropertySetterSymbol(
if (firSymbol.isOverride) return true if (firSymbol.isOverride) return true
val propertySymbol = firSymbol.fir.propertySymbol val propertySymbol = firSymbol.fir.propertySymbol
if (!propertySymbol.isOverride) return false if (!propertySymbol.isOverride) return false
val session = firResolveSession.useSiteFirSession val session = analysisSession.useSiteSession
val containingClassScope = firSymbol.dispatchReceiverType?.scope( val containingClassScope = firSymbol.dispatchReceiverType?.scope(
session, session,
firResolveSession.getScopeSessionFor(session), analysisSession.getScopeSessionFor(session),
FakeOverrideTypeCalculator.DoNothing, FakeOverrideTypeCalculator.DoNothing,
requiredPhase = FirResolvePhase.STATUS, requiredPhase = FirResolvePhase.STATUS,
) ?: return false ) ?: return false
@@ -74,7 +70,7 @@ internal class KtFirPropertySetterSymbol(
override val annotationsList by cached { override val annotationsList by cached {
KtFirAnnotationListForDeclaration.create( KtFirAnnotationListForDeclaration.create(
firSymbol, firSymbol,
firResolveSession.useSiteFirSession, analysisSession.useSiteSession,
token, token,
) )
} }
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForReceiverParameter import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForReceiverParameter
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirReceiverParameterSymbolPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirReceiverParameterSymbolPointer
@@ -21,15 +21,13 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtReceiverParameterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolOrigin import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolOrigin
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
internal class KtFirReceiverParameterSymbol( internal class KtFirReceiverParameterSymbol(
val firSymbol: FirCallableSymbol<*>, val firSymbol: FirCallableSymbol<*>,
val firResolveSession: LLFirResolveSession, val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder
) : KtReceiverParameterSymbol(), KtLifetimeOwner { ) : KtReceiverParameterSymbol(), KtLifetimeOwner {
override val token: KtLifetimeToken get() = builder.token override val token: KtLifetimeToken get() = analysisSession.token
override val psi: PsiElement? by cached { firSymbol.fir.receiverParameter?.typeRef?.findPsi(firSymbol.fir.moduleData.session) } override val psi: PsiElement? by cached { firSymbol.fir.receiverParameter?.typeRef?.findPsi(firSymbol.fir.moduleData.session) }
init { init {
@@ -37,10 +35,10 @@ internal class KtFirReceiverParameterSymbol(
} }
override val type: KtType by cached { override val type: KtType by cached {
firSymbol.receiverType(builder) ?: error("$firSymbol doesn't have an extension receiver.") firSymbol.receiverType(analysisSession.firSymbolBuilder) ?: error("$firSymbol doesn't have an extension receiver.")
} }
override val owningCallableSymbol: KtCallableSymbol by cached { builder.callableBuilder.buildCallableSymbol(firSymbol) } override val owningCallableSymbol: KtCallableSymbol by cached { analysisSession.firSymbolBuilder.callableBuilder.buildCallableSymbol(firSymbol) }
override val origin: KtSymbolOrigin = withValidityAssertion { firSymbol.fir.ktSymbolOrigin() } override val origin: KtSymbolOrigin = withValidityAssertion { firSymbol.fir.ktSymbolOrigin() }
@@ -50,6 +48,6 @@ internal class KtFirReceiverParameterSymbol(
} }
override val annotationsList: KtAnnotationsList by cached { override val annotationsList: KtAnnotationsList by cached {
KtFirAnnotationListForReceiverParameter.create(firSymbol, firResolveSession.useSiteFirSession, token) KtFirAnnotationListForReceiverParameter.create(firSymbol, analysisSession.useSiteSession, token)
} }
} }
@@ -9,7 +9,7 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirSamConstructorSymbolPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirSamConstructorSymbolPointer
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.isExtension import org.jetbrains.kotlin.fir.symbols.impl.isExtension
@@ -32,15 +31,14 @@ import org.jetbrains.kotlin.name.Name
internal class KtFirSamConstructorSymbol( internal class KtFirSamConstructorSymbol(
override val firSymbol: FirNamedFunctionSymbol, override val firSymbol: FirNamedFunctionSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder
) : KtSamConstructorSymbol(), KtFirSymbol<FirNamedFunctionSymbol> { ) : KtSamConstructorSymbol(), KtFirSymbol<FirNamedFunctionSymbol> {
override val token: KtLifetimeToken get() = builder.token override val token: KtLifetimeToken get() = builder.token
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val annotationsList: KtAnnotationsList override val annotationsList: KtAnnotationsList
get() = withValidityAssertion { get() = withValidityAssertion {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) KtFirAnnotationListForDeclaration.create(firSymbol, analysisSession.useSiteSession, token)
} }
override val name: Name get() = withValidityAssertion { firSymbol.name } override val name: Name get() = withValidityAssertion { firSymbol.name }
@@ -6,14 +6,16 @@
package org.jetbrains.kotlin.analysis.api.fir.symbols package org.jetbrains.kotlin.analysis.api.fir.symbols
import org.jetbrains.kotlin.KtFakeSourceElementKind import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolOrigin import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolOrigin
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry
import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment
@@ -33,9 +35,10 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
internal interface KtFirSymbol<out S : FirBasedSymbol<*>> : KtSymbol, KtLifetimeOwner { internal interface KtFirSymbol<out S : FirBasedSymbol<*>> : KtSymbol, KtLifetimeOwner {
val firSymbol: S val firSymbol: S
val analysisSession: KtFirAnalysisSession
val builder: KtSymbolByFirBuilder get() = analysisSession.firSymbolBuilder
val firResolveSession: LLFirResolveSession override val token: KtLifetimeToken get() = analysisSession.token
override val origin: KtSymbolOrigin get() = withValidityAssertion { firSymbol.fir.ktSymbolOrigin() } override val origin: KtSymbolOrigin get() = withValidityAssertion { firSymbol.fir.ktSymbolOrigin() }
} }
@@ -134,7 +134,7 @@ internal class KtFirSymbolProvider(
private fun KtClassOrObject.resolveToFirClassLikeSymbol(): FirClassSymbol<*> { private fun KtClassOrObject.resolveToFirClassLikeSymbol(): FirClassSymbol<*> {
return when (val firClassLike = resolveToFirSymbolOfType<FirClassLikeSymbol<*>>(firResolveSession)) { return when (val firClassLike = resolveToFirSymbolOfType<FirClassLikeSymbol<*>>(firResolveSession)) {
is FirTypeAliasSymbol -> firClassLike.fullyExpandedClass(firResolveSession.useSiteFirSession) is FirTypeAliasSymbol -> firClassLike.fullyExpandedClass(analysisSession.useSiteSession)
?: buildErrorWithAttachment("${firClassLike.fir::class} should be expanded to the expected type alias") { ?: buildErrorWithAttachment("${firClassLike.fir::class} should be expanded to the expected type alias") {
withFirSymbolEntry("firClassLikeSymbol", firClassLike) withFirSymbolEntry("firClassLikeSymbol", firClassLike)
withPsiEntry("ktClassOrObject", this@resolveToFirClassLikeSymbol) withPsiEntry("ktClassOrObject", this@resolveToFirClassLikeSymbol)
@@ -8,18 +8,16 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.KtInitializerValue import org.jetbrains.kotlin.analysis.api.KtInitializerValue
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirJavaSyntheticPropertySymbolPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirJavaSyntheticPropertySymbolPointer
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer
import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.* import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
@@ -35,10 +33,8 @@ import org.jetbrains.kotlin.name.Name
internal class KtFirSyntheticJavaPropertySymbol( internal class KtFirSyntheticJavaPropertySymbol(
override val firSymbol: FirSyntheticPropertySymbol, override val firSymbol: FirSyntheticPropertySymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder
) : KtSyntheticJavaPropertySymbol(), KtFirSymbol<FirSyntheticPropertySymbol> { ) : KtSyntheticJavaPropertySymbol(), KtFirSymbol<FirSyntheticPropertySymbol> {
override val token: KtLifetimeToken get() = builder.token
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val isVal: Boolean get() = withValidityAssertion { firSymbol.isVal } override val isVal: Boolean get() = withValidityAssertion { firSymbol.isVal }
@@ -53,7 +49,7 @@ internal class KtFirSyntheticJavaPropertySymbol(
override val isExtension: Boolean get() = withValidityAssertion { firSymbol.isExtension } override val isExtension: Boolean get() = withValidityAssertion { firSymbol.isExtension }
override val initializer: KtInitializerValue? by cached { firSymbol.getKtConstantInitializer(firResolveSession) } override val initializer: KtInitializerValue? by cached { firSymbol.getKtConstantInitializer(analysisSession.firResolveSession) }
override val modality: Modality get() = withValidityAssertion { firSymbol.modality ?: firSymbol.invalidModalityError() } override val modality: Modality get() = withValidityAssertion { firSymbol.modality ?: firSymbol.invalidModalityError() }
override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility } override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
@@ -61,7 +57,7 @@ internal class KtFirSyntheticJavaPropertySymbol(
override val annotationsList by cached { override val annotationsList by cached {
KtFirAnnotationListForDeclaration.create( KtFirAnnotationListForDeclaration.create(
firSymbol, firSymbol,
firResolveSession.useSiteFirSession, analysisSession.useSiteSession,
token token
) )
} }
@@ -8,12 +8,11 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirClassLikeSymbolPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirClassLikeSymbolPointer
import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtTypeAliasSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtTypeAliasSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
@@ -22,7 +21,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointe
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.UnsupportedSymbolKind import org.jetbrains.kotlin.analysis.api.symbols.pointers.UnsupportedSymbolKind
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.declarations.utils.visibility import org.jetbrains.kotlin.fir.declarations.utils.visibility
@@ -32,11 +30,8 @@ import org.jetbrains.kotlin.name.Name
internal class KtFirTypeAliasSymbol( internal class KtFirTypeAliasSymbol(
override val firSymbol: FirTypeAliasSymbol, override val firSymbol: FirTypeAliasSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder,
) : KtTypeAliasSymbol(), KtFirSymbol<FirTypeAliasSymbol> { ) : KtTypeAliasSymbol(), KtFirSymbol<FirTypeAliasSymbol> {
override val token: KtLifetimeToken get() = builder.token
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val name: Name get() = withValidityAssertion { firSymbol.name } override val name: Name get() = withValidityAssertion { firSymbol.name }
override val classIdIfNonLocal: ClassId? get() = withValidityAssertion { firSymbol.getClassIdIfNonLocal() } override val classIdIfNonLocal: ClassId? get() = withValidityAssertion { firSymbol.getClassIdIfNonLocal() }
@@ -54,7 +49,7 @@ internal class KtFirTypeAliasSymbol(
override val expandedType: KtType by cached { builder.typeBuilder.buildKtType(firSymbol.resolvedExpandedTypeRef) } override val expandedType: KtType by cached { builder.typeBuilder.buildKtType(firSymbol.resolvedExpandedTypeRef) }
override val annotationsList: KtAnnotationsList by cached { override val annotationsList: KtAnnotationsList by cached {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) KtFirAnnotationListForDeclaration.create(firSymbol, analysisSession.useSiteSession, token)
} }
override val symbolKind: KtSymbolKind get() = withValidityAssertion { getSymbolKind() } override val symbolKind: KtSymbolKind get() = withValidityAssertion { getSymbolKind() }
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirTypeParameterSymbolPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirTypeParameterSymbolPointer
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.fir.analysis.checkers.typeParameterSymbols import org.jetbrains.kotlin.fir.analysis.checkers.typeParameterSymbols
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.types.isNullableAny import org.jetbrains.kotlin.fir.types.isNullableAny
@@ -29,15 +28,14 @@ import org.jetbrains.kotlin.types.Variance
internal class KtFirTypeParameterSymbol( internal class KtFirTypeParameterSymbol(
override val firSymbol: FirTypeParameterSymbol, override val firSymbol: FirTypeParameterSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder
) : KtTypeParameterSymbol(), KtFirSymbol<FirTypeParameterSymbol> { ) : KtTypeParameterSymbol(), KtFirSymbol<FirTypeParameterSymbol> {
override val token: KtLifetimeToken get() = builder.token override val token: KtLifetimeToken get() = builder.token
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val annotationsList: KtAnnotationsList override val annotationsList: KtAnnotationsList
get() = withValidityAssertion { get() = withValidityAssertion {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) KtFirAnnotationListForDeclaration.create(firSymbol, analysisSession.useSiteSession, token)
} }
override val name: Name get() = withValidityAssertion { firSymbol.name } override val name: Name get() = withValidityAssertion { firSymbol.name }
@@ -8,20 +8,18 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.KtFakeSourceElementKind import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirValueParameterSymbolPointer import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirValueParameterSymbolPointer
import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionLikeSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionLikeSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.fir.correspondingProperty import org.jetbrains.kotlin.fir.correspondingProperty
import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirFunction
import org.jetbrains.kotlin.fir.renderWithType import org.jetbrains.kotlin.fir.renderWithType
@@ -31,10 +29,8 @@ import org.jetbrains.kotlin.name.Name
internal class KtFirValueParameterSymbol( internal class KtFirValueParameterSymbol(
override val firSymbol: FirValueParameterSymbol, override val firSymbol: FirValueParameterSymbol,
override val firResolveSession: LLFirResolveSession, override val analysisSession: KtFirAnalysisSession,
private val builder: KtSymbolByFirBuilder
) : KtValueParameterSymbol(), KtFirSymbol<FirValueParameterSymbol> { ) : KtValueParameterSymbol(), KtFirSymbol<FirValueParameterSymbol> {
override val token: KtLifetimeToken get() = builder.token
override val psi: PsiElement? by cached { firSymbol.findPsi() } override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val name: Name get() = withValidityAssertion { firSymbol.name } override val name: Name get() = withValidityAssertion { firSymbol.name }
@@ -67,7 +63,7 @@ internal class KtFirValueParameterSymbol(
override val annotationsList by cached { override val annotationsList by cached {
KtFirAnnotationListForDeclaration.create( KtFirAnnotationListForDeclaration.create(
firSymbol, firSymbol,
firResolveSession.useSiteFirSession, analysisSession.useSiteSession,
token, token,
) )
} }
@@ -37,5 +37,5 @@ internal abstract class KtTopLevelCallableSymbolPointer<S : KtCallableSymbol>(
} }
private fun KtFirAnalysisSession.getCallableSymbols(callableId: CallableId) = private fun KtFirAnalysisSession.getCallableSymbols(callableId: CallableId) =
firResolveSession.useSiteFirSession.symbolProvider.getTopLevelCallableSymbols(callableId.packageName, callableId.callableName) useSiteSession.symbolProvider.getTopLevelCallableSymbols(callableId.packageName, callableId.callableName)
@@ -56,4 +56,4 @@ internal inline fun <reified D : FirCallableDeclaration> Collection<FirCallableS
} }
internal fun KtFirAnalysisSession.getClassLikeSymbol(classId: ClassId) = internal fun KtFirAnalysisSession.getClassLikeSymbol(classId: ClassId) =
firResolveSession.useSiteFirSession.symbolProvider.getClassLikeSymbolByClassId(classId)?.fir useSiteSession.symbolProvider.getClassLikeSymbolByClassId(classId)?.fir