[FIR] Add specific symbols for value parameters and enum entries
Make FirVariableSymbol a sealed class
This commit is contained in:
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -35,7 +35,6 @@ abstract class FirEnumEntry : FirVariable<FirEnumEntry>() {
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
abstract override val dispatchReceiverType: ConeKotlinType?
|
||||
abstract override val name: Name
|
||||
abstract override val symbol: FirVariableSymbol<FirEnumEntry>
|
||||
abstract override val initializer: FirExpression?
|
||||
abstract override val delegate: FirExpression?
|
||||
abstract override val isVar: Boolean
|
||||
@@ -43,6 +42,7 @@ abstract class FirEnumEntry : FirVariable<FirEnumEntry>() {
|
||||
abstract override val getter: FirPropertyAccessor?
|
||||
abstract override val setter: FirPropertyAccessor?
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val symbol: FirEnumEntrySymbol
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitEnumEntry(this, data)
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
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.symbols.impl.FirVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -36,7 +36,6 @@ abstract class FirValueParameter : FirVariable<FirValueParameter>(), FirControlF
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
abstract override val dispatchReceiverType: ConeKotlinType?
|
||||
abstract override val name: Name
|
||||
abstract override val symbol: FirVariableSymbol<FirValueParameter>
|
||||
abstract override val initializer: FirExpression?
|
||||
abstract override val delegate: FirExpression?
|
||||
abstract override val isVar: Boolean
|
||||
@@ -45,6 +44,7 @@ abstract class FirValueParameter : FirVariable<FirValueParameter>(), FirControlF
|
||||
abstract override val setter: FirPropertyAccessor?
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
|
||||
abstract override val symbol: FirValueParameterSymbol
|
||||
abstract val defaultValue: FirExpression?
|
||||
abstract val isCrossinline: Boolean
|
||||
abstract val isNoinline: Boolean
|
||||
|
||||
+3
-3
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
|
||||
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.symbols.impl.FirVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
@@ -45,7 +45,6 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
var receiverTypeRef: FirTypeRef? = null
|
||||
var containerSource: DeserializedContainerSource? = null
|
||||
var dispatchReceiverType: ConeKotlinType? = null
|
||||
lateinit var symbol: FirVariableSymbol<FirValueParameter>
|
||||
var initializer: FirExpression? = null
|
||||
var delegate: FirExpression? = null
|
||||
var isVar: Boolean = false
|
||||
@@ -53,6 +52,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
var getter: FirPropertyAccessor? = null
|
||||
var setter: FirPropertyAccessor? = null
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
lateinit var symbol: FirValueParameterSymbol
|
||||
var defaultValue: FirExpression? = null
|
||||
var isCrossinline: Boolean = false
|
||||
var isNoinline: Boolean = false
|
||||
@@ -69,7 +69,6 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
receiverTypeRef,
|
||||
containerSource,
|
||||
dispatchReceiverType,
|
||||
symbol,
|
||||
initializer,
|
||||
delegate,
|
||||
isVar,
|
||||
@@ -77,6 +76,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
getter,
|
||||
setter,
|
||||
annotations,
|
||||
symbol,
|
||||
defaultValue,
|
||||
isCrossinline,
|
||||
isNoinline,
|
||||
|
||||
+3
-3
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirEnumEntryImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
@@ -45,9 +45,9 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder {
|
||||
var containerSource: DeserializedContainerSource? = null
|
||||
var dispatchReceiverType: ConeKotlinType? = null
|
||||
lateinit var name: Name
|
||||
lateinit var symbol: FirVariableSymbol<FirEnumEntry>
|
||||
var initializer: FirExpression? = null
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
lateinit var symbol: FirEnumEntrySymbol
|
||||
|
||||
override fun build(): FirEnumEntry {
|
||||
return FirEnumEntryImpl(
|
||||
@@ -62,9 +62,9 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder {
|
||||
containerSource,
|
||||
dispatchReceiverType,
|
||||
name,
|
||||
symbol,
|
||||
initializer,
|
||||
annotations,
|
||||
symbol,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
|
||||
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.symbols.impl.FirVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
@@ -45,8 +45,8 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
open var containerSource: DeserializedContainerSource? = null
|
||||
open var dispatchReceiverType: ConeKotlinType? = null
|
||||
open lateinit var name: Name
|
||||
open lateinit var symbol: FirVariableSymbol<FirValueParameter>
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
open lateinit var symbol: FirValueParameterSymbol
|
||||
open var defaultValue: FirExpression? = null
|
||||
open var isCrossinline: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
|
||||
open var isNoinline: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
|
||||
@@ -63,8 +63,8 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
containerSource,
|
||||
dispatchReceiverType,
|
||||
name,
|
||||
symbol,
|
||||
annotations,
|
||||
symbol,
|
||||
defaultValue,
|
||||
isCrossinline,
|
||||
isNoinline,
|
||||
@@ -97,8 +97,8 @@ inline fun buildValueParameterCopy(original: FirValueParameter, init: FirValuePa
|
||||
copyBuilder.containerSource = original.containerSource
|
||||
copyBuilder.dispatchReceiverType = original.dispatchReceiverType
|
||||
copyBuilder.name = original.name
|
||||
copyBuilder.symbol = original.symbol
|
||||
copyBuilder.annotations.addAll(original.annotations)
|
||||
copyBuilder.symbol = original.symbol
|
||||
copyBuilder.defaultValue = original.defaultValue
|
||||
copyBuilder.isCrossinline = original.isCrossinline
|
||||
copyBuilder.isNoinline = original.isNoinline
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
|
||||
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.symbols.impl.FirVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -40,7 +40,6 @@ internal class FirDefaultSetterValueParameter(
|
||||
override var receiverTypeRef: FirTypeRef?,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
override val symbol: FirVariableSymbol<FirValueParameter>,
|
||||
override var initializer: FirExpression?,
|
||||
override var delegate: FirExpression?,
|
||||
override val isVar: Boolean,
|
||||
@@ -48,6 +47,7 @@ internal class FirDefaultSetterValueParameter(
|
||||
override var getter: FirPropertyAccessor?,
|
||||
override var setter: FirPropertyAccessor?,
|
||||
override val annotations: MutableList<FirAnnotationCall>,
|
||||
override val symbol: FirValueParameterSymbol,
|
||||
override var defaultValue: FirExpression?,
|
||||
override val isCrossinline: Boolean,
|
||||
override val isNoinline: Boolean,
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -40,9 +40,9 @@ internal class FirEnumEntryImpl(
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
override val name: Name,
|
||||
override val symbol: FirVariableSymbol<FirEnumEntry>,
|
||||
override var initializer: FirExpression?,
|
||||
override val annotations: MutableList<FirAnnotationCall>,
|
||||
override val symbol: FirEnumEntrySymbol,
|
||||
) : FirEnumEntry() {
|
||||
override val receiverTypeRef: FirTypeRef? get() = null
|
||||
override val delegate: FirExpression? get() = null
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
|
||||
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.symbols.impl.FirVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -40,8 +40,8 @@ internal class FirValueParameterImpl(
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
override val name: Name,
|
||||
override val symbol: FirVariableSymbol<FirValueParameter>,
|
||||
override val annotations: MutableList<FirAnnotationCall>,
|
||||
override val symbol: FirValueParameterSymbol,
|
||||
override var defaultValue: FirExpression?,
|
||||
override val isCrossinline: Boolean,
|
||||
override val isNoinline: Boolean,
|
||||
|
||||
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildEmptyExpressionBlock
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitStringTypeRef
|
||||
@@ -93,7 +93,7 @@ fun FirRegularClassBuilder.generateValueOfFunction(
|
||||
this.moduleData = moduleData
|
||||
returnTypeRef = FirImplicitStringTypeRef(source)
|
||||
name = VALUE
|
||||
this@vp.symbol = FirVariableSymbol(VALUE)
|
||||
this@vp.symbol = FirValueParameterSymbol(VALUE)
|
||||
isCrossinline = false
|
||||
isNoinline = false
|
||||
isVararg = false
|
||||
|
||||
+2
-1
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildDefaultSetterValueParameter
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef
|
||||
@@ -120,7 +121,7 @@ class FirDefaultPropertySetter(
|
||||
this@builder.moduleData = moduleData
|
||||
this@builder.origin = origin
|
||||
this@builder.returnTypeRef = propertyTypeRef
|
||||
this@builder.symbol = FirVariableSymbol(CallableId(FqName.ROOT, Name.special("<default-setter-parameter>")))
|
||||
this@builder.symbol = FirValueParameterSymbol(Name.special("<default-setter-parameter>"))
|
||||
}
|
||||
),
|
||||
isGetter = false,
|
||||
|
||||
@@ -5,19 +5,14 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirErrorProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.FirField
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.FirVariable
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
open class FirVariableSymbol<E : FirVariable<E>>(override val callableId: CallableId) : FirCallableSymbol<E>() {
|
||||
constructor(name: Name) : this(CallableId(name)) // TODO?
|
||||
}
|
||||
sealed class FirVariableSymbol<E : FirVariable<E>>(override val callableId: CallableId) : FirCallableSymbol<E>()
|
||||
|
||||
open class FirPropertySymbol(
|
||||
callableId: CallableId,
|
||||
@@ -40,6 +35,13 @@ class FirDelegateFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirProp
|
||||
|
||||
class FirFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirField>(callableId)
|
||||
|
||||
class FirEnumEntrySymbol(callableId: CallableId) : FirVariableSymbol<FirEnumEntry>(callableId)
|
||||
|
||||
class FirValueParameterSymbol(name: Name) : FirVariableSymbol<FirValueParameter>(CallableId(name)) {
|
||||
val name: Name
|
||||
get() = callableId.callableName
|
||||
}
|
||||
|
||||
class FirErrorPropertySymbol(
|
||||
val diagnostic: ConeDiagnostic
|
||||
) : FirVariableSymbol<FirErrorProperty>(CallableId(FqName.ROOT, null, NAME)) {
|
||||
|
||||
+4
-7
@@ -46,11 +46,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
+annotations
|
||||
}
|
||||
|
||||
// symbolOwner.configure {
|
||||
// withArg("DE, symbolOwner, declaration)
|
||||
// +symbolWithPackage("fir.symbols", "FirBasedSymbol", "DE)
|
||||
// }
|
||||
|
||||
typeParameterRef.configure {
|
||||
+symbol(typeParameterSymbolType.type)
|
||||
}
|
||||
@@ -383,6 +378,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
|
||||
valueParameter.configure {
|
||||
parentArg(variable, "E", valueParameter)
|
||||
+symbol("FirValueParameterSymbol")
|
||||
+field("defaultValue", expression, nullable = true)
|
||||
generateBooleanFields("crossinline", "noinline", "vararg")
|
||||
}
|
||||
@@ -408,6 +404,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
|
||||
enumEntry.configure {
|
||||
parentArg(variable, "E", enumEntry)
|
||||
+symbol("FirEnumEntrySymbol")
|
||||
}
|
||||
|
||||
field.configure {
|
||||
@@ -417,7 +414,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
anonymousInitializer.configure {
|
||||
parentArg(declaration, "E", anonymousInitializer)
|
||||
+body(nullable = true)
|
||||
+symbol(anonymousInitializerSymbolType.type)
|
||||
+symbol("FirAnonymousInitializerSymbol")
|
||||
}
|
||||
|
||||
file.configure {
|
||||
@@ -426,7 +423,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
+declarations.withTransform()
|
||||
+stringField("name")
|
||||
+field("packageFqName", fqNameType)
|
||||
+symbol(fileSymbolType.type)
|
||||
+symbol("FirFileSymbol")
|
||||
}
|
||||
|
||||
import.configure {
|
||||
|
||||
@@ -71,8 +71,6 @@ val classLikeSymbolType = type("fir.symbols.impl", "FirClassLikeSymbol<*>")
|
||||
val typeParameterSymbolType = type("fir.symbols.impl", "FirTypeParameterSymbol")
|
||||
val emptyArgumentListType = type("fir.expressions", "FirEmptyArgumentList")
|
||||
val firScopeProviderType = type("fir.scopes", "FirScopeProvider")
|
||||
val anonymousInitializerSymbolType = type("fir.symbols.impl", "FirAnonymousInitializerSymbol")
|
||||
val fileSymbolType = type("fir.symbols.impl", "FirFileSymbol")
|
||||
|
||||
val pureAbstractElementType = generatedType("FirPureAbstractElement")
|
||||
val coneEffectDeclarationType = type("fir.contracts.description", "ConeEffectDeclaration")
|
||||
|
||||
Reference in New Issue
Block a user