diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyAccessor.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyAccessor.kt index 74408477d7b..fb77f6a0361 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyAccessor.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyAccessor.kt @@ -15,8 +15,8 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirPropertyAccessorImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference -import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirSyntheticPropertyAccessorSymbol import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.FirTransformer @@ -70,7 +70,7 @@ class FirSyntheticPropertyAccessor @FirImplementationDetail internal constructor override val attributes: FirDeclarationAttributes get() = delegate.attributes - override val symbol: FirPropertyAccessorSymbol = FirPropertyAccessorSymbol().apply { + override val symbol: FirSyntheticPropertyAccessorSymbol = FirSyntheticPropertyAccessorSymbol().apply { bind(this@FirSyntheticPropertyAccessor) } 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 77d86c50ee6..89ee5d5fa0f 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 @@ -9,9 +9,11 @@ import org.jetbrains.kotlin.fir.FirLabel import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty +import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticPropertyAccessor import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.toResolvedConstructorSymbol +import org.jetbrains.kotlin.fir.symbols.SymbolInternals import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.mpp.ConstructorSymbolMarker import org.jetbrains.kotlin.mpp.FunctionSymbolMarker @@ -83,8 +85,15 @@ class FirConstructorSymbol(callableId: CallableId) : FirFunctionSymbol(Name.identifier("accessor")) { +open class FirPropertyAccessorSymbol : FirFunctionWithoutNameSymbol(Name.identifier("accessor")) { val isGetter: Boolean get() = fir.isGetter val isSetter: Boolean get() = fir.isSetter - val propertySymbol get() = fir.propertySymbol + open val propertySymbol: FirPropertySymbol get() = fir.propertySymbol +} + +class FirSyntheticPropertyAccessorSymbol : FirPropertyAccessorSymbol() { + override val propertySymbol: FirSyntheticPropertySymbol + get() = super.propertySymbol as FirSyntheticPropertySymbol + + val delegateFunctionSymbol: FirNamedFunctionSymbol + get() = (fir as FirSyntheticPropertyAccessor).delegate.symbol } class FirErrorFunctionSymbol : FirFunctionWithoutNameSymbol(Name.identifier("error")) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirVariableSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirVariableSymbol.kt index cda061db893..5fe73ea2ddd 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirVariableSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirVariableSymbol.kt @@ -26,10 +26,10 @@ open class FirPropertySymbol(callableId: CallableId, ) : FirVariableSymbol