[FIR] Add symbol to FirAnonymousInitializer

This commit is contained in:
Dmitriy Novozhilov
2020-03-31 15:54:57 +03:00
parent bcd2e5ed2c
commit 16b5b2dcef
8 changed files with 32 additions and 2 deletions
@@ -263,6 +263,10 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
useTypes(stubReferenceType)
}
builder(anonymousInitializer) {
default("symbol", "FirAnonymousInitializerSymbol()")
}
val elementsWithDefaultTypeRef = listOf(
thisReceiverExpression,
callableReferenceAccess,
@@ -26,7 +26,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val statement = element("Statement", Expression, annotationContainer)
val expression = element("Expression", Expression, statement)
val declaration = element("Declaration", Declaration)
val anonymousInitializer = element("AnonymousInitializer", Declaration, declaration)
val anonymousInitializer = element("AnonymousInitializer", Declaration, declaration, symbolOwner)
val typedDeclaration = element("TypedDeclaration", Declaration, declaration, annotationContainer)
val callableDeclaration = element("CallableDeclaration", Declaration, typedDeclaration, symbolOwner)
val typeParameter = element("TypeParameter", Declaration, declaration, symbolOwner, annotationContainer)
@@ -366,7 +366,9 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
anonymousInitializer.configure {
parentArg(symbolOwner, "E", anonymousInitializer)
+body(nullable = true)
+symbol(anonymousInitializerSymbolType.type)
+controlFlowGraphReferenceField
}
@@ -60,6 +60,7 @@ 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 pureAbstractElementType = generatedType("FirPureAbstractElement")
val effectDeclarationType = type("fir.contracts.description", "ConeEffectDeclaration")