[FIR] Make SyntheticPropertySymbol derived from FirAccessorSymbol

This commit is contained in:
Mikhail Glukhikh
2020-02-05 14:38:21 +03:00
parent a7f9e3ab09
commit a569e29091
6 changed files with 12 additions and 15 deletions
@@ -106,12 +106,12 @@ class JavaClassEnhancementScope(
return symbol
}
is FirSyntheticProperty -> {
original as FirAccessorSymbol
val accessorSymbol = firElement.symbol
val enhancedFunctionSymbol = enhanceMethod(
firElement.getter.delegate, original.accessorId, original.accessorId.callableName
firElement.getter.delegate, accessorSymbol.accessorId, accessorSymbol.accessorId.callableName
)
val enhancedProperty = FirSyntheticProperty(
session, name, FirAccessorSymbol(original.callableId, original.accessorId),
session, name, FirAccessorSymbol(accessorSymbol.callableId, accessorSymbol.accessorId),
enhancedFunctionSymbol.fir as FirSimpleFunction
)
return enhancedProperty.symbol
@@ -49,7 +49,7 @@ class JavaClassUseSiteMemberScope(
syntheticPropertyName: Name,
overrideCandidates: MutableSet<FirCallableSymbol<*>>,
isGetter: Boolean
): FirPropertySymbol? {
): FirAccessorSymbol? {
if (functionSymbol !is FirNamedFunctionSymbol) {
return null
}
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.declarations.isStatic
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.symbols.AccessorSymbol
import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
import org.jetbrains.kotlin.fir.symbols.SyntheticSymbol
@@ -25,7 +24,7 @@ import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeFirstWord
class SyntheticPropertySymbol(
callableId: CallableId,
override val accessorId: CallableId
) : FirPropertySymbol(callableId), AccessorSymbol, SyntheticSymbol
) : FirAccessorSymbol(callableId, accessorId), SyntheticSymbol
class FirSyntheticFunctionSymbol(
callableId: CallableId
@@ -68,9 +68,7 @@ class FirClassSubstitutionScope(
processor(field)
}
is FirAccessorSymbol -> {
val accessor = fakeOverrideAccessors.getOrPut(original) {
createFakeOverrideAccessor(original) as FirAccessorSymbol
}
val accessor = fakeOverrideAccessors.getOrPut(original) { createFakeOverrideAccessor(original) }
processor(accessor)
}
else -> {
@@ -197,7 +195,7 @@ class FirClassSubstitutionScope(
return createFakeOverrideField(session, member, original, newReturnType)
}
private fun createFakeOverrideAccessor(original: FirAccessorSymbol): FirPropertySymbol {
private fun createFakeOverrideAccessor(original: FirAccessorSymbol): FirAccessorSymbol {
val member = original.fir as FirSyntheticProperty
val returnType = typeCalculator.tryCalculateReturnType(member).type
@@ -330,7 +328,7 @@ class FirClassSubstitutionScope(
baseSymbol: FirAccessorSymbol,
newReturnType: ConeKotlinType? = null,
newParameterTypes: List<ConeKotlinType?>? = null
): FirPropertySymbol {
): FirAccessorSymbol {
val functionSymbol = FirNamedFunctionSymbol(baseSymbol.accessorId)
val function = createFakeOverrideFunction(
functionSymbol, session, baseProperty.getter.delegate, null, newReturnType, newParameterTypes
@@ -13,9 +13,9 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.FirTransformer
import org.jetbrains.kotlin.fir.visitors.FirVisitor
@@ -27,7 +27,7 @@ class FirSyntheticProperty(
override val returnTypeRef: FirTypeRef,
override val name: Name,
override val isVar: Boolean,
override val symbol: FirPropertySymbol,
override val symbol: FirAccessorSymbol,
override val status: FirDeclarationStatus,
override val resolvePhase: FirResolvePhase,
override val getter: FirSyntheticPropertyAccessor,
@@ -40,7 +40,7 @@ class FirSyntheticProperty(
constructor(
session: FirSession,
name: Name,
symbol: FirPropertySymbol,
symbol: FirAccessorSymbol,
delegateGetter: FirSimpleFunction
) : this(
session, delegateGetter.returnTypeRef, name, false, symbol,
@@ -33,7 +33,7 @@ class FirConstructorSymbol(
override val overriddenSymbol: FirConstructorSymbol? = null
) : FirFunctionSymbol<FirConstructor>(callableId)
class FirAccessorSymbol(
open class FirAccessorSymbol(
callableId: CallableId,
override val accessorId: CallableId
) : FirPropertySymbol(callableId), AccessorSymbol