From a569e2909188121b7d8e3d24231a52b9ff9020e6 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 5 Feb 2020 14:38:21 +0300 Subject: [PATCH] [FIR] Make SyntheticPropertySymbol derived from FirAccessorSymbol --- .../kotlin/fir/java/scopes/JavaClassEnhancementScope.kt | 6 +++--- .../kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt | 2 +- .../org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt | 3 +-- .../kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt | 8 +++----- .../fir/declarations/synthetic/FirSyntheticProperty.kt | 6 +++--- .../kotlin/fir/symbols/impl/FirFunctionSymbol.kt | 2 +- 6 files changed, 12 insertions(+), 15 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassEnhancementScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassEnhancementScope.kt index 92d4a72b6ca..895b24846ca 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassEnhancementScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassEnhancementScope.kt @@ -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 diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt index be6408eb4a0..2c062fa950c 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt @@ -49,7 +49,7 @@ class JavaClassUseSiteMemberScope( syntheticPropertyName: Name, overrideCandidates: MutableSet>, isGetter: Boolean - ): FirPropertySymbol? { + ): FirAccessorSymbol? { if (functionSymbol !is FirNamedFunctionSymbol) { return null } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt index 73dfd3e8696..37e18456f09 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt @@ -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 diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt index 236a3998fbd..4d50cbe1f2a 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt @@ -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? = null - ): FirPropertySymbol { + ): FirAccessorSymbol { val functionSymbol = FirNamedFunctionSymbol(baseSymbol.accessorId) val function = createFakeOverrideFunction( functionSymbol, session, baseProperty.getter.delegate, null, newReturnType, newParameterTypes diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt index 38d373429de..48f28e11aa6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt @@ -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, diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt index 8a385178461..0b61003367a 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt @@ -33,7 +33,7 @@ class FirConstructorSymbol( override val overriddenSymbol: FirConstructorSymbol? = null ) : FirFunctionSymbol(callableId) -class FirAccessorSymbol( +open class FirAccessorSymbol( callableId: CallableId, override val accessorId: CallableId ) : FirPropertySymbol(callableId), AccessorSymbol