[FIR IDE] Handle FirBackingField in buildVariableLikeSymbol
Do a small refactoring of `buildBackingFieldSymbol`
This commit is contained in:
committed by
teamcityserver
parent
57608d7eeb
commit
3c69a5efc8
+7
-5
@@ -54,7 +54,7 @@ internal class KtSymbolByFirBuilder private constructor(
|
|||||||
val withReadOnlyCaching: Boolean,
|
val withReadOnlyCaching: Boolean,
|
||||||
private val symbolsCache: BuilderCache<FirDeclaration, KtSymbol>,
|
private val symbolsCache: BuilderCache<FirDeclaration, KtSymbol>,
|
||||||
private val filesCache: BuilderCache<FirFile, KtFileSymbol>,
|
private val filesCache: BuilderCache<FirFile, KtFileSymbol>,
|
||||||
private val backingFieldCache: BuilderCache<FirBackingFieldSymbol, KtBackingFieldSymbol>,
|
private val backingFieldCache: BuilderCache<FirBackingField, KtBackingFieldSymbol>,
|
||||||
private val typesCache: BuilderCache<ConeKotlinType, KtType>,
|
private val typesCache: BuilderCache<ConeKotlinType, KtType>,
|
||||||
) : ValidityTokenOwner {
|
) : ValidityTokenOwner {
|
||||||
private val resolveState by weakRef(resolveState)
|
private val resolveState by weakRef(resolveState)
|
||||||
@@ -244,7 +244,9 @@ internal class KtSymbolByFirBuilder private constructor(
|
|||||||
is FirValueParameter -> buildValueParameterSymbol(fir)
|
is FirValueParameter -> buildValueParameterSymbol(fir)
|
||||||
is FirField -> buildFieldSymbol(fir)
|
is FirField -> buildFieldSymbol(fir)
|
||||||
is FirEnumEntry -> buildEnumEntrySymbol(fir) // TODO enum entry should not be callable
|
is FirEnumEntry -> buildEnumEntrySymbol(fir) // TODO enum entry should not be callable
|
||||||
else -> throwUnexpectedElementError(fir)
|
is FirBackingField -> buildBackingFieldSymbol(fir)
|
||||||
|
|
||||||
|
is FirErrorProperty -> throwUnexpectedElementError(fir)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -289,14 +291,14 @@ internal class KtSymbolByFirBuilder private constructor(
|
|||||||
return symbolsCache.cache(fir) { KtFirJavaFieldSymbol(fir, resolveState, token, this@KtSymbolByFirBuilder) }
|
return symbolsCache.cache(fir) { KtFirJavaFieldSymbol(fir, resolveState, token, this@KtSymbolByFirBuilder) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun buildBackingFieldSymbol(fir: FirBackingFieldSymbol): KtFirBackingFieldSymbol {
|
fun buildBackingFieldSymbol(fir: FirBackingField): KtFirBackingFieldSymbol {
|
||||||
return backingFieldCache.cache(fir) {
|
return backingFieldCache.cache(fir) {
|
||||||
KtFirBackingFieldSymbol(fir.fir.propertySymbol.fir, resolveState, token, this@KtSymbolByFirBuilder)
|
KtFirBackingFieldSymbol(fir.propertySymbol.fir, resolveState, token, this@KtSymbolByFirBuilder)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun buildBackingFieldSymbolByProperty(fir: FirProperty): KtFirBackingFieldSymbol {
|
fun buildBackingFieldSymbolByProperty(fir: FirProperty): KtFirBackingFieldSymbol {
|
||||||
val backingFieldSymbol = fir.backingField?.symbol
|
val backingFieldSymbol = fir.backingField
|
||||||
?: error("FirProperty backingField is null")
|
?: error("FirProperty backingField is null")
|
||||||
return buildBackingFieldSymbol(backingFieldSymbol)
|
return buildBackingFieldSymbol(backingFieldSymbol)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -83,7 +83,7 @@ internal object FirReferenceResolveHelper {
|
|||||||
fun FirReference.toTargetSymbol(session: FirSession, symbolBuilder: KtSymbolByFirBuilder): Collection<KtSymbol> {
|
fun FirReference.toTargetSymbol(session: FirSession, symbolBuilder: KtSymbolByFirBuilder): Collection<KtSymbol> {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is FirBackingFieldReference -> {
|
is FirBackingFieldReference -> {
|
||||||
listOfNotNull(symbolBuilder.variableLikeBuilder.buildBackingFieldSymbol(resolvedSymbol))
|
listOfNotNull(resolvedSymbol.fir.buildSymbol(symbolBuilder))
|
||||||
}
|
}
|
||||||
is FirResolvedNamedReference -> {
|
is FirResolvedNamedReference -> {
|
||||||
val fir = when (val symbol = resolvedSymbol) {
|
val fir = when (val symbol = resolvedSymbol) {
|
||||||
|
|||||||
Reference in New Issue
Block a user