[FIR] Add specific symbols for value parameters and enum entries

Make FirVariableSymbol a sealed class
This commit is contained in:
Dmitriy Novozhilov
2021-06-26 11:54:02 +03:00
parent 62d781a70f
commit 511e564b20
30 changed files with 92 additions and 84 deletions
@@ -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")