FIR: Derive FirMemberDeclaration from FirAnnotatedDeclaration

It's necessary to have the sane logic that FirMemberDeclaration is a subtype of FirDeclaration
The only kind of controversial change here is making FirAnonymousObject
also be FirMemberDeclaration, thus having its own declaration status
This commit is contained in:
Denis.Zharkov
2021-10-13 15:58:27 +03:00
committed by TeamCityServer
parent 603655d63f
commit f441024fd4
18 changed files with 43 additions and 37 deletions
@@ -27,13 +27,13 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val statement by element(Expression, annotationContainer)
val expression by element(Expression, statement)
val declaration by sealedElement(Declaration)
val annotatedDeclaration by sealedElement(Declaration, declaration, annotationContainer)
val anonymousInitializer by element(Declaration, declaration, controlFlowGraphOwner)
val typedDeclaration by sealedElement(Declaration, annotatedDeclaration)
val typeParameterRefsOwner by sealedElement(Declaration)
val typeParametersOwner by sealedElement(Declaration, typeParameterRefsOwner)
val memberDeclaration by sealedElement(Declaration, typeParameterRefsOwner)
val callableDeclaration by sealedElement(Declaration, typedDeclaration, memberDeclaration)
val annotatedDeclaration by sealedElement(Declaration, declaration, annotationContainer)
val memberDeclaration by sealedElement(Declaration, annotatedDeclaration, typeParameterRefsOwner)
val anonymousInitializer by element(Declaration, declaration, controlFlowGraphOwner)
val typedDeclaration by sealedElement(Declaration, memberDeclaration)
val callableDeclaration by sealedElement(Declaration, typedDeclaration)
val typeParameterRef by element(Declaration)
val typeParameter by element(Declaration, typeParameterRef, annotatedDeclaration)
@@ -43,10 +43,10 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val field by element(Declaration, variable)
val enumEntry by element(Declaration, variable)
val classLikeDeclaration by sealedElement(Declaration, annotatedDeclaration, statement)
val classLikeDeclaration by sealedElement(Declaration, memberDeclaration, statement)
val klass by sealedElement("Class", Declaration, classLikeDeclaration, statement, typeParameterRefsOwner)
val regularClass by element(Declaration, klass, memberDeclaration, controlFlowGraphOwner)
val typeAlias by element(Declaration, classLikeDeclaration, memberDeclaration, typeParametersOwner)
val regularClass by element(Declaration, klass, controlFlowGraphOwner)
val typeAlias by element(Declaration, classLikeDeclaration, typeParametersOwner)
val function by sealedElement(Declaration, callableDeclaration, targetElement, controlFlowGraphOwner, statement)