[FIR] Move delegateFieldSymbol from FirVariable to FirProperty

This commit is contained in:
Dmitriy Novozhilov
2021-06-26 11:34:35 +03:00
parent dc3ee6318c
commit 62d781a70f
30 changed files with 19 additions and 60 deletions
@@ -196,7 +196,7 @@ private fun FirCallableSymbol<*>.toSymbolForCall(declarationStorage: Fir2IrDecla
is FirPropertySymbol -> declarationStorage.getIrPropertySymbol(this) is FirPropertySymbol -> declarationStorage.getIrPropertySymbol(this)
is FirFieldSymbol -> declarationStorage.getIrFieldSymbol(this) is FirFieldSymbol -> declarationStorage.getIrFieldSymbol(this)
is FirBackingFieldSymbol -> declarationStorage.getIrBackingFieldSymbol(this) is FirBackingFieldSymbol -> declarationStorage.getIrBackingFieldSymbol(this)
is FirDelegateFieldSymbol<*> -> declarationStorage.getIrBackingFieldSymbol(this) is FirDelegateFieldSymbol -> declarationStorage.getIrBackingFieldSymbol(this)
is FirVariableSymbol<*> -> declarationStorage.getIrValueSymbol(this) is FirVariableSymbol<*> -> declarationStorage.getIrValueSymbol(this)
else -> null else -> null
} }
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.builder.FirFieldBuilder import org.jetbrains.kotlin.fir.declarations.builder.FirFieldBuilder
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -127,9 +126,6 @@ class FirJavaField @FirImplementationDetail constructor(
override val delegate: FirExpression? override val delegate: FirExpression?
get() = null get() = null
override val delegateFieldSymbol: FirDelegateFieldSymbol<FirField>?
get() = null
override var containerSource: DeserializedContainerSource? = null override var containerSource: DeserializedContainerSource? = null
override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirField { override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirField {
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -70,9 +69,6 @@ class FirJavaValueParameter @FirImplementationDetail constructor(
override val delegate: FirExpression? override val delegate: FirExpression?
get() = null get() = null
override val delegateFieldSymbol: FirDelegateFieldSymbol<FirValueParameter>?
get() = null
override val getter: FirPropertyAccessor? override val getter: FirPropertyAccessor?
get() = null get() = null
@@ -312,7 +312,7 @@ fun FirPropertyBuilder.generateAccessorsByDelegate(
receiver: FirExpression? receiver: FirExpression?
) { ) {
if (delegateBuilder == null) return if (delegateBuilder == null) return
val delegateFieldSymbol = FirDelegateFieldSymbol<FirProperty>(symbol.callableId).also { val delegateFieldSymbol = FirDelegateFieldSymbol(symbol.callableId).also {
this.delegateFieldSymbol = it this.delegateFieldSymbol = it
} }
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -39,7 +38,6 @@ abstract class FirEnumEntry : FirVariable<FirEnumEntry>() {
abstract override val symbol: FirVariableSymbol<FirEnumEntry> abstract override val symbol: FirVariableSymbol<FirEnumEntry>
abstract override val initializer: FirExpression? abstract override val initializer: FirExpression?
abstract override val delegate: FirExpression? abstract override val delegate: FirExpression?
abstract override val delegateFieldSymbol: FirDelegateFieldSymbol<FirEnumEntry>?
abstract override val isVar: Boolean abstract override val isVar: Boolean
abstract override val isVal: Boolean abstract override val isVal: Boolean
abstract override val getter: FirPropertyAccessor? abstract override val getter: FirPropertyAccessor?
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
import org.jetbrains.kotlin.fir.diagnostics.FirDiagnosticHolder import org.jetbrains.kotlin.fir.diagnostics.FirDiagnosticHolder
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirErrorPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirErrorPropertySymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -40,7 +39,6 @@ abstract class FirErrorProperty : FirVariable<FirErrorProperty>(), FirDiagnostic
abstract override val name: Name abstract override val name: Name
abstract override val initializer: FirExpression? abstract override val initializer: FirExpression?
abstract override val delegate: FirExpression? abstract override val delegate: FirExpression?
abstract override val delegateFieldSymbol: FirDelegateFieldSymbol<FirErrorProperty>?
abstract override val isVar: Boolean abstract override val isVar: Boolean
abstract override val isVal: Boolean abstract override val isVal: Boolean
abstract override val getter: FirPropertyAccessor? abstract override val getter: FirPropertyAccessor?
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -39,7 +38,6 @@ abstract class FirField : FirVariable<FirField>() {
abstract override val symbol: FirVariableSymbol<FirField> abstract override val symbol: FirVariableSymbol<FirField>
abstract override val initializer: FirExpression? abstract override val initializer: FirExpression?
abstract override val delegate: FirExpression? abstract override val delegate: FirExpression?
abstract override val delegateFieldSymbol: FirDelegateFieldSymbol<FirField>?
abstract override val isVar: Boolean abstract override val isVar: Boolean
abstract override val isVal: Boolean abstract override val isVal: Boolean
abstract override val getter: FirPropertyAccessor? abstract override val getter: FirPropertyAccessor?
@@ -39,7 +39,6 @@ abstract class FirProperty : FirVariable<FirProperty>(), FirTypeParametersOwner,
abstract override val name: Name abstract override val name: Name
abstract override val initializer: FirExpression? abstract override val initializer: FirExpression?
abstract override val delegate: FirExpression? abstract override val delegate: FirExpression?
abstract override val delegateFieldSymbol: FirDelegateFieldSymbol<FirProperty>?
abstract override val isVar: Boolean abstract override val isVar: Boolean
abstract override val isVal: Boolean abstract override val isVal: Boolean
abstract override val getter: FirPropertyAccessor? abstract override val getter: FirPropertyAccessor?
@@ -48,6 +47,7 @@ abstract class FirProperty : FirVariable<FirProperty>(), FirTypeParametersOwner,
abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val symbol: FirPropertySymbol abstract override val symbol: FirPropertySymbol
abstract val backingFieldSymbol: FirBackingFieldSymbol abstract val backingFieldSymbol: FirBackingFieldSymbol
abstract val delegateFieldSymbol: FirDelegateFieldSymbol?
abstract val isLocal: Boolean abstract val isLocal: Boolean
abstract override val typeParameters: List<FirTypeParameter> abstract override val typeParameters: List<FirTypeParameter>
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -40,7 +39,6 @@ abstract class FirValueParameter : FirVariable<FirValueParameter>(), FirControlF
abstract override val symbol: FirVariableSymbol<FirValueParameter> abstract override val symbol: FirVariableSymbol<FirValueParameter>
abstract override val initializer: FirExpression? abstract override val initializer: FirExpression?
abstract override val delegate: FirExpression? abstract override val delegate: FirExpression?
abstract override val delegateFieldSymbol: FirDelegateFieldSymbol<FirValueParameter>?
abstract override val isVar: Boolean abstract override val isVar: Boolean
abstract override val isVal: Boolean abstract override val isVal: Boolean
abstract override val getter: FirPropertyAccessor? abstract override val getter: FirPropertyAccessor?
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -40,7 +39,6 @@ sealed class FirVariable<E : FirVariable<E>> : FirCallableMemberDeclaration<E>()
abstract override val symbol: FirVariableSymbol<E> abstract override val symbol: FirVariableSymbol<E>
abstract val initializer: FirExpression? abstract val initializer: FirExpression?
abstract val delegate: FirExpression? abstract val delegate: FirExpression?
abstract val delegateFieldSymbol: FirDelegateFieldSymbol<E>?
abstract val isVar: Boolean abstract val isVar: Boolean
abstract val isVal: Boolean abstract val isVal: Boolean
abstract val getter: FirPropertyAccessor? abstract val getter: FirPropertyAccessor?
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -49,7 +48,6 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
lateinit var symbol: FirVariableSymbol<FirValueParameter> lateinit var symbol: FirVariableSymbol<FirValueParameter>
var initializer: FirExpression? = null var initializer: FirExpression? = null
var delegate: FirExpression? = null var delegate: FirExpression? = null
var delegateFieldSymbol: FirDelegateFieldSymbol<FirValueParameter>? = null
var isVar: Boolean = false var isVar: Boolean = false
var isVal: Boolean = true var isVal: Boolean = true
var getter: FirPropertyAccessor? = null var getter: FirPropertyAccessor? = null
@@ -74,7 +72,6 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
symbol, symbol,
initializer, initializer,
delegate, delegate,
delegateFieldSymbol,
isVar, isVar,
isVal, isVal,
getter, getter,
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.impl.FirEnumEntryImpl import org.jetbrains.kotlin.fir.declarations.impl.FirEnumEntryImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirErrorPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirErrorPropertySymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.builder.FirDeclarationBuilder
import org.jetbrains.kotlin.fir.declarations.impl.FirFieldImpl import org.jetbrains.kotlin.fir.declarations.impl.FirFieldImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -52,12 +52,12 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder,
lateinit var name: Name lateinit var name: Name
var initializer: FirExpression? = null var initializer: FirExpression? = null
var delegate: FirExpression? = null var delegate: FirExpression? = null
var delegateFieldSymbol: FirDelegateFieldSymbol<FirProperty>? = null
var isVar: Boolean by kotlin.properties.Delegates.notNull<Boolean>() var isVar: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
var getter: FirPropertyAccessor? = null var getter: FirPropertyAccessor? = null
var setter: FirPropertyAccessor? = null var setter: FirPropertyAccessor? = null
override val annotations: MutableList<FirAnnotationCall> = mutableListOf() override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
lateinit var symbol: FirPropertySymbol lateinit var symbol: FirPropertySymbol
var delegateFieldSymbol: FirDelegateFieldSymbol? = null
var isLocal: Boolean by kotlin.properties.Delegates.notNull<Boolean>() var isLocal: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
override val typeParameters: MutableList<FirTypeParameter> = mutableListOf() override val typeParameters: MutableList<FirTypeParameter> = mutableListOf()
@@ -76,12 +76,12 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder,
name, name,
initializer, initializer,
delegate, delegate,
delegateFieldSymbol,
isVar, isVar,
getter, getter,
setter, setter,
annotations, annotations,
symbol, symbol,
delegateFieldSymbol,
isLocal, isLocal,
typeParameters, typeParameters,
) )
@@ -116,12 +116,12 @@ inline fun buildPropertyCopy(original: FirProperty, init: FirPropertyBuilder.()
copyBuilder.name = original.name copyBuilder.name = original.name
copyBuilder.initializer = original.initializer copyBuilder.initializer = original.initializer
copyBuilder.delegate = original.delegate copyBuilder.delegate = original.delegate
copyBuilder.delegateFieldSymbol = original.delegateFieldSymbol
copyBuilder.isVar = original.isVar copyBuilder.isVar = original.isVar
copyBuilder.getter = original.getter copyBuilder.getter = original.getter
copyBuilder.setter = original.setter copyBuilder.setter = original.setter
copyBuilder.annotations.addAll(original.annotations) copyBuilder.annotations.addAll(original.annotations)
copyBuilder.symbol = original.symbol copyBuilder.symbol = original.symbol
copyBuilder.delegateFieldSymbol = original.delegateFieldSymbol
copyBuilder.isLocal = original.isLocal copyBuilder.isLocal = original.isLocal
copyBuilder.typeParameters.addAll(original.typeParameters) copyBuilder.typeParameters.addAll(original.typeParameters)
return copyBuilder.apply(init).build() return copyBuilder.apply(init).build()
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -44,7 +43,6 @@ internal class FirDefaultSetterValueParameter(
override val symbol: FirVariableSymbol<FirValueParameter>, override val symbol: FirVariableSymbol<FirValueParameter>,
override var initializer: FirExpression?, override var initializer: FirExpression?,
override var delegate: FirExpression?, override var delegate: FirExpression?,
override val delegateFieldSymbol: FirDelegateFieldSymbol<FirValueParameter>?,
override val isVar: Boolean, override val isVar: Boolean,
override val isVal: Boolean, override val isVal: Boolean,
override var getter: FirPropertyAccessor?, override var getter: FirPropertyAccessor?,
@@ -62,7 +60,6 @@ internal class FirDefaultSetterValueParameter(
init { init {
symbol.bind(this) symbol.bind(this)
delegateFieldSymbol?.bind(this)
} }
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -47,7 +46,6 @@ internal class FirEnumEntryImpl(
) : FirEnumEntry() { ) : FirEnumEntry() {
override val receiverTypeRef: FirTypeRef? get() = null override val receiverTypeRef: FirTypeRef? get() = null
override val delegate: FirExpression? get() = null override val delegate: FirExpression? get() = null
override val delegateFieldSymbol: FirDelegateFieldSymbol<FirEnumEntry>? get() = null
override val isVar: Boolean get() = false override val isVar: Boolean get() = false
override val isVal: Boolean get() = true override val isVal: Boolean get() = true
override val getter: FirPropertyAccessor? get() = null override val getter: FirPropertyAccessor? get() = null
@@ -55,7 +53,6 @@ internal class FirEnumEntryImpl(
init { init {
symbol.bind(this) symbol.bind(this)
delegateFieldSymbol?.bind(this)
} }
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirErrorPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirErrorPropertySymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -51,14 +50,12 @@ internal class FirErrorPropertyImpl(
override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS
override val initializer: FirExpression? get() = null override val initializer: FirExpression? get() = null
override val delegate: FirExpression? get() = null override val delegate: FirExpression? get() = null
override val delegateFieldSymbol: FirDelegateFieldSymbol<FirErrorProperty>? get() = null
override val isVar: Boolean get() = false override val isVar: Boolean get() = false
override val isVal: Boolean get() = true override val isVal: Boolean get() = true
override val getter: FirPropertyAccessor? get() = null override val getter: FirPropertyAccessor? get() = null
override val setter: FirPropertyAccessor? get() = null override val setter: FirPropertyAccessor? get() = null
init { init {
delegateFieldSymbol?.bind(this)
symbol.bind(this) symbol.bind(this)
} }
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -49,14 +48,12 @@ class FirFieldImpl @FirImplementationDetail constructor(
) : FirField() { ) : FirField() {
override val receiverTypeRef: FirTypeRef? get() = null override val receiverTypeRef: FirTypeRef? get() = null
override val delegate: FirExpression? get() = null override val delegate: FirExpression? get() = null
override val delegateFieldSymbol: FirDelegateFieldSymbol<FirField>? get() = null
override val isVal: Boolean get() = !isVar override val isVal: Boolean get() = !isVar
override val getter: FirPropertyAccessor? get() = null override val getter: FirPropertyAccessor? get() = null
override val setter: FirPropertyAccessor? get() = null override val setter: FirPropertyAccessor? get() = null
init { init {
symbol.bind(this) symbol.bind(this)
delegateFieldSymbol?.bind(this)
} }
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
@@ -45,12 +45,12 @@ internal class FirPropertyImpl(
override val name: Name, override val name: Name,
override var initializer: FirExpression?, override var initializer: FirExpression?,
override var delegate: FirExpression?, override var delegate: FirExpression?,
override val delegateFieldSymbol: FirDelegateFieldSymbol<FirProperty>?,
override val isVar: Boolean, override val isVar: Boolean,
override var getter: FirPropertyAccessor?, override var getter: FirPropertyAccessor?,
override var setter: FirPropertyAccessor?, override var setter: FirPropertyAccessor?,
override val annotations: MutableList<FirAnnotationCall>, override val annotations: MutableList<FirAnnotationCall>,
override val symbol: FirPropertySymbol, override val symbol: FirPropertySymbol,
override val delegateFieldSymbol: FirDelegateFieldSymbol?,
override val isLocal: Boolean, override val isLocal: Boolean,
override val typeParameters: MutableList<FirTypeParameter>, override val typeParameters: MutableList<FirTypeParameter>,
) : FirProperty() { ) : FirProperty() {
@@ -59,9 +59,9 @@ internal class FirPropertyImpl(
override val backingFieldSymbol: FirBackingFieldSymbol = FirBackingFieldSymbol(symbol.callableId) override val backingFieldSymbol: FirBackingFieldSymbol = FirBackingFieldSymbol(symbol.callableId)
init { init {
delegateFieldSymbol?.bind(this)
symbol.bind(this) symbol.bind(this)
backingFieldSymbol.bind(this) backingFieldSymbol.bind(this)
delegateFieldSymbol?.bind(this)
} }
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -53,7 +52,6 @@ internal class FirValueParameterImpl(
override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS
override val initializer: FirExpression? get() = null override val initializer: FirExpression? get() = null
override val delegate: FirExpression? get() = null override val delegate: FirExpression? get() = null
override val delegateFieldSymbol: FirDelegateFieldSymbol<FirValueParameter>? get() = null
override val isVar: Boolean get() = false override val isVar: Boolean get() = false
override val isVal: Boolean get() = true override val isVal: Boolean get() = true
override val getter: FirPropertyAccessor? get() = null override val getter: FirPropertyAccessor? get() = null
@@ -62,7 +60,6 @@ internal class FirValueParameterImpl(
init { init {
symbol.bind(this) symbol.bind(this)
delegateFieldSymbol?.bind(this)
} }
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
@@ -21,7 +21,7 @@ abstract class FirDelegateFieldReference : FirResolvedNamedReference() {
abstract override val source: FirSourceElement? abstract override val source: FirSourceElement?
abstract override val name: Name abstract override val name: Name
abstract override val candidateSymbol: FirBasedSymbol<*>? abstract override val candidateSymbol: FirBasedSymbol<*>?
abstract override val resolvedSymbol: FirDelegateFieldSymbol<*> abstract override val resolvedSymbol: FirDelegateFieldSymbol
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitDelegateFieldReference(this, data) override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitDelegateFieldReference(this, data)
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.name.Name
class FirDelegateFieldReferenceBuilder { class FirDelegateFieldReferenceBuilder {
var source: FirSourceElement? = null var source: FirSourceElement? = null
var candidateSymbol: FirBasedSymbol<*>? = null var candidateSymbol: FirBasedSymbol<*>? = null
lateinit var resolvedSymbol: FirDelegateFieldSymbol<*> lateinit var resolvedSymbol: FirDelegateFieldSymbol
fun build(): FirDelegateFieldReference { fun build(): FirDelegateFieldReference {
return FirDelegateFieldReferenceImpl( return FirDelegateFieldReferenceImpl(
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.*
internal class FirDelegateFieldReferenceImpl( internal class FirDelegateFieldReferenceImpl(
override val source: FirSourceElement?, override val source: FirSourceElement?,
override val candidateSymbol: FirBasedSymbol<*>?, override val candidateSymbol: FirBasedSymbol<*>?,
override val resolvedSymbol: FirDelegateFieldSymbol<*>, override val resolvedSymbol: FirDelegateFieldSymbol,
) : FirDelegateFieldReference() { ) : FirDelegateFieldReference() {
override val name: Name get() = Name.identifier("\$delegate") override val name: Name get() = Name.identifier("\$delegate")
@@ -53,7 +53,7 @@ class FirSyntheticProperty(
override val delegate: FirExpression? override val delegate: FirExpression?
get() = null get() = null
override val delegateFieldSymbol: FirDelegateFieldSymbol<FirProperty>? override val delegateFieldSymbol: FirDelegateFieldSymbol?
get() = null get() = null
override val isLocal: Boolean override val isLocal: Boolean
@@ -33,7 +33,7 @@ class FirIntersectionOverridePropertySymbol(
class FirBackingFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirProperty>(callableId) class FirBackingFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirProperty>(callableId)
class FirDelegateFieldSymbol<D : FirVariable<D>>(callableId: CallableId) : FirVariableSymbol<D>(callableId) { class FirDelegateFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirProperty>(callableId) {
val delegate: FirExpression val delegate: FirExpression
get() = fir.delegate!! get() = fir.delegate!!
} }
@@ -273,7 +273,7 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
} }
builder(valueParameter, type = "FirDefaultSetterValueParameter") { builder(valueParameter, type = "FirDefaultSetterValueParameter") {
defaultNull("defaultValue", "initializer", "delegate", "receiverTypeRef", "delegateFieldSymbol", "getter", "setter") defaultNull("defaultValue", "initializer", "delegate", "receiverTypeRef", "getter", "setter")
defaultFalse("isCrossinline", "isNoinline", "isVararg", "isVar") defaultFalse("isCrossinline", "isNoinline", "isVararg", "isVar")
defaultTrue("isVal") defaultTrue("isVal")
} }
@@ -206,7 +206,6 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
"receiverTypeRef", "receiverTypeRef",
"initializer", "initializer",
"delegate", "delegate",
"delegateFieldSymbol",
"getter", "setter", "getter", "setter",
withGetter = true withGetter = true
) )
@@ -221,13 +220,13 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
} }
publicImplementation() publicImplementation()
defaultNull("delegateFieldSymbol", "receiverTypeRef", "delegate", "getter", "setter", withGetter = true) defaultNull("receiverTypeRef", "delegate", "getter", "setter", withGetter = true)
} }
impl(enumEntry) { impl(enumEntry) {
defaultTrue("isVal", withGetter = true) defaultTrue("isVal", withGetter = true)
defaultFalse("isVar", withGetter = true) defaultFalse("isVar", withGetter = true)
defaultNull("delegateFieldSymbol", "receiverTypeRef", "delegate", "getter", "setter", withGetter = true) defaultNull("receiverTypeRef", "delegate", "getter", "setter", withGetter = true)
} }
impl(namedArgumentExpression) { impl(namedArgumentExpression) {
@@ -455,7 +454,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
impl(valueParameter) { impl(valueParameter) {
defaultTrue("isVal", withGetter = true) defaultTrue("isVal", withGetter = true)
defaultFalse("isVar", withGetter = true) defaultFalse("isVar", withGetter = true)
defaultNull("getter", "setter", "initializer", "delegate", "receiverTypeRef", "delegateFieldSymbol", withGetter = true) defaultNull("getter", "setter", "initializer", "delegate", "receiverTypeRef", withGetter = true)
} }
impl(valueParameter, "FirDefaultSetterValueParameter") { impl(valueParameter, "FirDefaultSetterValueParameter") {
@@ -336,6 +336,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
parentArg(variable, "E", property) parentArg(variable, "E", property)
+symbol("FirPropertySymbol") +symbol("FirPropertySymbol")
+field("backingFieldSymbol", backingFieldSymbolType) +field("backingFieldSymbol", backingFieldSymbolType)
+field("delegateFieldSymbol", delegateFieldSymbolType, nullable = true)
+booleanField("isLocal") +booleanField("isLocal")
+typeParameters +typeParameters
} }
@@ -393,7 +394,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+symbol("FirVariableSymbol", "E") +symbol("FirVariableSymbol", "E")
+initializer.withTransform().withReplace() +initializer.withTransform().withReplace()
+field("delegate", expression, nullable = true).withTransform() +field("delegate", expression, nullable = true).withTransform()
+field("delegateFieldSymbol", delegateFieldSymbolType, "E", nullable = true)
generateBooleanFields("var", "val") generateBooleanFields("var", "val")
+field("getter", propertyAccessor, nullable = true).withTransform() +field("getter", propertyAccessor, nullable = true).withTransform()
+field("setter", propertyAccessor, nullable = true).withTransform() +field("setter", propertyAccessor, nullable = true).withTransform()
@@ -578,7 +578,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
} }
delegateFieldReference.configure { delegateFieldReference.configure {
+field("resolvedSymbol", delegateFieldSymbolType.withArgs("*")) +field("resolvedSymbol", delegateFieldSymbolType)
} }
backingFieldReference.configure { backingFieldReference.configure {