diff --git a/flang/lib/semantics/dump-parse-tree.h b/flang/lib/semantics/dump-parse-tree.h index 03b52a89dec5..3372ab01eb8e 100644 --- a/flang/lib/semantics/dump-parse-tree.h +++ b/flang/lib/semantics/dump-parse-tree.h @@ -36,17 +36,16 @@ public: constexpr const char *GetNodeName(const char *const &) { return "char *"; } #define NODE_NAME(T, N) \ constexpr const char *GetNodeName(const T &) { return N; } -#define NODE(NS, T) NODE_NAME(NS::T, #T) -#define NESTED_NODE(T1, T2) NODE_NAME(T1::T2, #T2) +#define NODE(T1, T2) NODE_NAME(T1::T2, #T2) NODE_NAME(bool, "bool") NODE_NAME(int, "int") NODE(format, ControlEditDesc) - NESTED_NODE(format::ControlEditDesc, Kind) + NODE(format::ControlEditDesc, Kind) NODE(format, DerivedTypeDataEditDesc) NODE(format, FormatItem) NODE(format, FormatSpecification) NODE(format, IntrinsicTypeDataEditDesc) - NESTED_NODE(format::IntrinsicTypeDataEditDesc, Kind) + NODE(format::IntrinsicTypeDataEditDesc, Kind) NODE(parser, Abstract) NODE(parser, AcImpliedDo) NODE(parser, AcImpliedDoControl) @@ -54,17 +53,17 @@ public: NODE(parser, AccessStmt) NODE(parser, AccessId) NODE(parser, AccessSpec) - NESTED_NODE(parser::AccessSpec, Kind) + NODE(parser::AccessSpec, Kind) NODE(parser, AcSpec) NODE(parser, ActionStmt) NODE(parser, ActualArg) - NESTED_NODE(parser::ActualArg, PercentRef) - NESTED_NODE(parser::ActualArg, PercentVal) + NODE(parser::ActualArg, PercentRef) + NODE(parser::ActualArg, PercentVal) NODE(parser, ActualArgSpec) - NESTED_NODE(parser::AcValue, Triplet) + NODE(parser::AcValue, Triplet) NODE(parser, AllocOpt) - NESTED_NODE(parser::AllocOpt, Mold) - NESTED_NODE(parser::AllocOpt, Source) + NODE(parser::AllocOpt, Mold) + NODE(parser::AllocOpt, Source) NODE(parser, Allocatable) NODE(parser, AllocatableStmt) NODE(parser, AllocateCoarraySpec) @@ -94,10 +93,10 @@ public: NODE(parser, BackspaceStmt) NODE(parser, BasedPointerStmt) NODE(parser, BindAttr) - NESTED_NODE(parser::BindAttr, Deferred) - NESTED_NODE(parser::BindAttr, Non_Overridable) + NODE(parser::BindAttr, Deferred) + NODE(parser::BindAttr, Non_Overridable) NODE(parser, BindEntity) - NESTED_NODE(parser::BindEntity, Kind) + NODE(parser::BindEntity, Kind) NODE(parser, BindStmt) NODE(parser, Block) NODE(parser, BlockConstruct) @@ -110,21 +109,21 @@ public: NODE(parser, Call) NODE(parser, CallStmt) NODE(parser, CaseConstruct) - NESTED_NODE(parser::CaseConstruct, Case) + NODE(parser::CaseConstruct, Case) NODE(parser, CaseSelector) NODE(parser, CaseStmt) NODE(parser, CaseValueRange) - NESTED_NODE(parser::CaseValueRange, Range) + NODE(parser::CaseValueRange, Range) NODE(parser, ChangeTeamConstruct) NODE(parser, ChangeTeamStmt) NODE(parser, CharLength) NODE(parser, CharLiteralConstant) NODE(parser, CharLiteralConstantSubstring) NODE(parser, CharSelector) - NESTED_NODE(parser::CharSelector, LengthAndKind) + NODE(parser::CharSelector, LengthAndKind) NODE(parser, CharVariable) NODE(parser, CloseStmt) - NESTED_NODE(parser::CloseStmt, CloseSpec) + NODE(parser::CloseStmt, CloseSpec) NODE(parser, CoarrayAssociation) NODE(parser, CoarraySpec) NODE(parser, CodimensionDecl) @@ -132,10 +131,10 @@ public: NODE(parser, CoindexedNamedObject) NODE(parser, CommonBlockObject) NODE(parser, CommonStmt) - NESTED_NODE(parser::CommonStmt, Block) + NODE(parser::CommonStmt, Block) NODE(parser, CompilerDirective) - NESTED_NODE(parser::CompilerDirective, IVDEP) - NESTED_NODE(parser::CompilerDirective, IgnoreTKR) + NODE(parser::CompilerDirective, IVDEP) + NODE(parser::CompilerDirective, IgnoreTKR) NODE(parser, ComplexLiteralConstant) NODE(parser, ComplexPart) NODE(parser, ComponentArraySpec) @@ -148,10 +147,10 @@ public: NODE(parser, ConcurrentControl) NODE(parser, ConcurrentHeader) NODE(parser, ConnectSpec) - NESTED_NODE(parser::ConnectSpec, CharExpr) - NESTED_NODE(parser::ConnectSpec::CharExpr, Kind) - NESTED_NODE(parser::ConnectSpec, Newunit) - NESTED_NODE(parser::ConnectSpec, Recl) + NODE(parser::ConnectSpec, CharExpr) + NODE(parser::ConnectSpec::CharExpr, Kind) + NODE(parser::ConnectSpec, Newunit) + NODE(parser::ConnectSpec, Recl) NODE(parser, ConstantValue) NODE(parser, ContainsStmt) NODE(parser, Contiguous) @@ -173,23 +172,23 @@ public: NODE(parser, DeallocateStmt) NODE(parser, DeclarationConstruct) NODE(parser, DeclarationTypeSpec) - NESTED_NODE(parser::DeclarationTypeSpec, Class) - NESTED_NODE(parser::DeclarationTypeSpec, ClassStar) - NESTED_NODE(parser::DeclarationTypeSpec, Record) - NESTED_NODE(parser::DeclarationTypeSpec, Type) - NESTED_NODE(parser::DeclarationTypeSpec, TypeStar) + NODE(parser::DeclarationTypeSpec, Class) + NODE(parser::DeclarationTypeSpec, ClassStar) + NODE(parser::DeclarationTypeSpec, Record) + NODE(parser::DeclarationTypeSpec, Type) + NODE(parser::DeclarationTypeSpec, TypeStar) NODE(parser, Default) NODE(parser, DeferredCoshapeSpecList) NODE(parser, DeferredShapeSpecList) NODE(parser, DefinedOpName) NODE(parser, DefinedOperator) - NESTED_NODE(parser::DefinedOperator, IntrinsicOperator) + NODE(parser::DefinedOperator, IntrinsicOperator) NODE(parser, DerivedTypeDef) NODE(parser, DerivedTypeSpec) NODE(parser, DerivedTypeStmt) NODE(parser, Designator) NODE(parser, DimensionStmt) - NESTED_NODE(parser::DimensionStmt, Declaration) + NODE(parser::DimensionStmt, Declaration) NODE(parser, DoConstruct) NODE(parser, DummyArg) NODE(parser, ElseIfStmt) @@ -229,7 +228,7 @@ public: NODE(parser, ErrorRecovery) NODE(parser, EventPostStmt) NODE(parser, EventWaitStmt) - NESTED_NODE(parser::EventWaitStmt, EventWaitSpec) + NODE(parser::EventWaitStmt, EventWaitSpec) NODE(parser, ExecutableConstruct) NODE(parser, ExecutionPart) NODE(parser, ExecutionPartConstruct) @@ -237,31 +236,31 @@ public: NODE(parser, ExplicitCoshapeSpec) NODE(parser, ExplicitShapeSpec) NODE(parser, Expr) - NESTED_NODE(parser::Expr, Parentheses) - NESTED_NODE(parser::Expr, UnaryPlus) - NESTED_NODE(parser::Expr, Negate) - NESTED_NODE(parser::Expr, NOT) - NESTED_NODE(parser::Expr, PercentLoc) - NESTED_NODE(parser::Expr, DefinedUnary) - NESTED_NODE(parser::Expr, Power) - NESTED_NODE(parser::Expr, Multiply) - NESTED_NODE(parser::Expr, Divide) - NESTED_NODE(parser::Expr, Add) - NESTED_NODE(parser::Expr, Subtract) - NESTED_NODE(parser::Expr, Concat) - NESTED_NODE(parser::Expr, LT) - NESTED_NODE(parser::Expr, LE) - NESTED_NODE(parser::Expr, EQ) - NESTED_NODE(parser::Expr, NE) - NESTED_NODE(parser::Expr, GE) - NESTED_NODE(parser::Expr, GT) - NESTED_NODE(parser::Expr, AND) - NESTED_NODE(parser::Expr, OR) - NESTED_NODE(parser::Expr, EQV) - NESTED_NODE(parser::Expr, NEQV) - NESTED_NODE(parser::Expr, XOR) - NESTED_NODE(parser::Expr, DefinedBinary) - NESTED_NODE(parser::Expr, ComplexConstructor) + NODE(parser::Expr, Parentheses) + NODE(parser::Expr, UnaryPlus) + NODE(parser::Expr, Negate) + NODE(parser::Expr, NOT) + NODE(parser::Expr, PercentLoc) + NODE(parser::Expr, DefinedUnary) + NODE(parser::Expr, Power) + NODE(parser::Expr, Multiply) + NODE(parser::Expr, Divide) + NODE(parser::Expr, Add) + NODE(parser::Expr, Subtract) + NODE(parser::Expr, Concat) + NODE(parser::Expr, LT) + NODE(parser::Expr, LE) + NODE(parser::Expr, EQ) + NODE(parser::Expr, NE) + NODE(parser::Expr, GE) + NODE(parser::Expr, GT) + NODE(parser::Expr, AND) + NODE(parser::Expr, OR) + NODE(parser::Expr, EQV) + NODE(parser::Expr, NEQV) + NODE(parser::Expr, XOR) + NODE(parser::Expr, DefinedBinary) + NODE(parser::Expr, ComplexConstructor) NODE(parser, External) NODE(parser, ExternalStmt) NODE(parser, FailImageStmt) @@ -274,60 +273,60 @@ public: NODE(parser, ForallConstructStmt) NODE(parser, ForallStmt) NODE(parser, FormTeamStmt) - NESTED_NODE(parser::FormTeamStmt, FormTeamSpec) + NODE(parser::FormTeamStmt, FormTeamSpec) NODE(parser, Format) NODE(parser, FormatStmt) NODE(parser, FunctionReference) NODE(parser, FunctionStmt) NODE(parser, FunctionSubprogram) NODE(parser, GenericSpec) - NESTED_NODE(parser::GenericSpec, Assignment) - NESTED_NODE(parser::GenericSpec, ReadFormatted) - NESTED_NODE(parser::GenericSpec, ReadUnformatted) - NESTED_NODE(parser::GenericSpec, WriteFormatted) - NESTED_NODE(parser::GenericSpec, WriteUnformatted) + NODE(parser::GenericSpec, Assignment) + NODE(parser::GenericSpec, ReadFormatted) + NODE(parser::GenericSpec, ReadUnformatted) + NODE(parser::GenericSpec, WriteFormatted) + NODE(parser::GenericSpec, WriteUnformatted) NODE(parser, GenericStmt) NODE(parser, GotoStmt) NODE(parser, HollerithLiteralConstant) NODE(parser, IdExpr) NODE(parser, IdVariable) NODE(parser, IfConstruct) - NESTED_NODE(parser::IfConstruct, ElseBlock) - NESTED_NODE(parser::IfConstruct, ElseIfBlock) + NODE(parser::IfConstruct, ElseBlock) + NODE(parser::IfConstruct, ElseIfBlock) NODE(parser, IfStmt) NODE(parser, IfThenStmt) NODE(parser, ImageSelector) NODE(parser, ImageSelectorSpec) - NESTED_NODE(parser::ImageSelectorSpec, Stat) - NESTED_NODE(parser::ImageSelectorSpec, Team) - NESTED_NODE(parser::ImageSelectorSpec, Team_Number) + NODE(parser::ImageSelectorSpec, Stat) + NODE(parser::ImageSelectorSpec, Team) + NODE(parser::ImageSelectorSpec, Team_Number) NODE(parser, ImplicitPart) NODE(parser, ImplicitPartStmt) NODE(parser, ImplicitSpec) NODE(parser, ImplicitStmt) - NESTED_NODE(parser::ImplicitStmt, ImplicitNoneNameSpec) + NODE(parser::ImplicitStmt, ImplicitNoneNameSpec) NODE(parser, ImpliedShapeSpec) NODE(parser, ImportStmt) NODE(parser, Initialization) NODE(parser, InputImpliedDo) NODE(parser, InputItem) NODE(parser, InquireSpec) - NESTED_NODE(parser::InquireSpec, CharVar) - NESTED_NODE(parser::InquireSpec::CharVar, Kind) - NESTED_NODE(parser::InquireSpec, IntVar) - NESTED_NODE(parser::InquireSpec::IntVar, Kind) - NESTED_NODE(parser::InquireSpec, LogVar) - NESTED_NODE(parser::InquireSpec::LogVar, Kind) + NODE(parser::InquireSpec, CharVar) + NODE(parser::InquireSpec::CharVar, Kind) + NODE(parser::InquireSpec, IntVar) + NODE(parser::InquireSpec::IntVar, Kind) + NODE(parser::InquireSpec, LogVar) + NODE(parser::InquireSpec::LogVar, Kind) NODE(parser, InquireStmt) - NESTED_NODE(parser::InquireStmt, Iolength) + NODE(parser::InquireStmt, Iolength) NODE(parser, IntegerTypeSpec) NODE(parser, IntentSpec) - NESTED_NODE(parser::IntentSpec, Intent) + NODE(parser::IntentSpec, Intent) NODE(parser, IntentStmt) NODE(parser, InterfaceBlock) NODE(parser, InterfaceBody) - NESTED_NODE(parser::InterfaceBody, Function) - NESTED_NODE(parser::InterfaceBody, Subroutine) + NODE(parser::InterfaceBody, Function) + NODE(parser::InterfaceBody, Subroutine) NODE(parser, InterfaceSpecification) NODE(parser, InterfaceStmt) NODE(parser, InternalSubprogram) @@ -336,47 +335,47 @@ public: NODE(parser, Intrinsic) NODE(parser, IntrinsicStmt) NODE(parser, IntrinsicTypeSpec) - NESTED_NODE(parser::IntrinsicTypeSpec, Character) - NESTED_NODE(parser::IntrinsicTypeSpec, Complex) - NESTED_NODE(parser::IntrinsicTypeSpec, DoubleComplex) - NESTED_NODE(parser::IntrinsicTypeSpec, DoublePrecision) - NESTED_NODE(parser::IntrinsicTypeSpec, Logical) - NESTED_NODE(parser::IntrinsicTypeSpec, NCharacter) - NESTED_NODE(parser::IntrinsicTypeSpec, Real) + NODE(parser::IntrinsicTypeSpec, Character) + NODE(parser::IntrinsicTypeSpec, Complex) + NODE(parser::IntrinsicTypeSpec, DoubleComplex) + NODE(parser::IntrinsicTypeSpec, DoublePrecision) + NODE(parser::IntrinsicTypeSpec, Logical) + NODE(parser::IntrinsicTypeSpec, NCharacter) + NODE(parser::IntrinsicTypeSpec, Real) NODE(parser, IoControlSpec) - NESTED_NODE(parser::IoControlSpec, Asynchronous) - NESTED_NODE(parser::IoControlSpec, CharExpr) - NESTED_NODE(parser::IoControlSpec::CharExpr, Kind) - NESTED_NODE(parser::IoControlSpec, Pos) - NESTED_NODE(parser::IoControlSpec, Rec) - NESTED_NODE(parser::IoControlSpec, Size) + NODE(parser::IoControlSpec, Asynchronous) + NODE(parser::IoControlSpec, CharExpr) + NODE(parser::IoControlSpec::CharExpr, Kind) + NODE(parser::IoControlSpec, Pos) + NODE(parser::IoControlSpec, Rec) + NODE(parser::IoControlSpec, Size) NODE(parser, IoUnit) NODE(parser, Keyword) NODE(parser, KindParam) - NESTED_NODE(parser::KindParam, Kanji) + NODE(parser::KindParam, Kanji) NODE(parser, KindSelector) - NESTED_NODE(parser::KindSelector, StarSize) + NODE(parser::KindSelector, StarSize) NODE(parser, LabelDoStmt) NODE(parser, LanguageBindingSpec) NODE(parser, LengthSelector) NODE(parser, LetterSpec) NODE(parser, LiteralConstant) NODE(parser, LocalitySpec) - NESTED_NODE(parser::LocalitySpec, DefaultNone) - NESTED_NODE(parser::LocalitySpec, Local) - NESTED_NODE(parser::LocalitySpec, LocalInit) - NESTED_NODE(parser::LocalitySpec, Shared) + NODE(parser::LocalitySpec, DefaultNone) + NODE(parser::LocalitySpec, Local) + NODE(parser::LocalitySpec, LocalInit) + NODE(parser::LocalitySpec, Shared) NODE(parser, LockStmt) - NESTED_NODE(parser::LockStmt, LockStat) + NODE(parser::LockStmt, LockStat) NODE(parser, LogicalLiteralConstant) NODE_NAME(parser::LoopBounds, "LoopBounds") NODE_NAME(parser::LoopBounds, "LoopBounds") NODE(parser, LoopControl) - NESTED_NODE(parser::LoopControl, Concurrent) + NODE(parser::LoopControl, Concurrent) NODE(parser, MainProgram) NODE(parser, Map) - NESTED_NODE(parser::Map, EndMapStmt) - NESTED_NODE(parser::Map, MapStmt) + NODE(parser::Map, EndMapStmt) + NODE(parser::Map, MapStmt) NODE(parser, MaskedElsewhereStmt) NODE(parser, Module) NODE(parser, ModuleStmt) @@ -387,7 +386,7 @@ public: NODE(parser, NamedConstant) NODE(parser, NamedConstantDef) NODE(parser, NamelistStmt) - NESTED_NODE(parser::NamelistStmt, Group) + NODE(parser::NamelistStmt, Group) NODE(parser, NonLabelDoStmt) NODE(parser, NoPass) NODE(parser, NullifyStmt) @@ -408,18 +407,18 @@ public: NODE(parser, PauseStmt) NODE(parser, Pointer) NODE(parser, PointerAssignmentStmt) - NESTED_NODE(parser::PointerAssignmentStmt, Bounds) + NODE(parser::PointerAssignmentStmt, Bounds) NODE(parser, PointerDecl) NODE(parser, PointerObject) NODE(parser, PointerStmt) NODE(parser, PositionOrFlushSpec) NODE(parser, PrefixSpec) - NESTED_NODE(parser::PrefixSpec, Elemental) - NESTED_NODE(parser::PrefixSpec, Impure) - NESTED_NODE(parser::PrefixSpec, Module) - NESTED_NODE(parser::PrefixSpec, Non_Recursive) - NESTED_NODE(parser::PrefixSpec, Pure) - NESTED_NODE(parser::PrefixSpec, Recursive) + NODE(parser::PrefixSpec, Elemental) + NODE(parser::PrefixSpec, Impure) + NODE(parser::PrefixSpec, Module) + NODE(parser::PrefixSpec, Non_Recursive) + NODE(parser::PrefixSpec, Pure) + NODE(parser::PrefixSpec, Recursive) NODE(parser, PrintStmt) NODE(parser, PrivateStmt) NODE(parser, PrivateOrSequence) @@ -433,7 +432,7 @@ public: NODE(parser, ProcedureDeclarationStmt) NODE(parser, ProcedureDesignator) NODE(parser, ProcedureStmt) - NESTED_NODE(parser::ProcedureStmt, Kind) + NODE(parser::ProcedureStmt, Kind) NODE(parser, Program) NODE(parser, ProgramStmt) NODE(parser, ProgramUnit) @@ -441,25 +440,25 @@ public: NODE(parser, ProtectedStmt) NODE(parser, ReadStmt) NODE(parser, RealLiteralConstant) - NESTED_NODE(parser::RealLiteralConstant, Real) + NODE(parser::RealLiteralConstant, Real) NODE(parser, Rename) - NESTED_NODE(parser::Rename, Names) - NESTED_NODE(parser::Rename, Operators) + NODE(parser::Rename, Names) + NODE(parser::Rename, Operators) NODE(parser, ReturnStmt) NODE(parser, RewindStmt) NODE(parser, Save) NODE(parser, SaveStmt) NODE(parser, SavedEntity) - NESTED_NODE(parser::SavedEntity, Kind) + NODE(parser::SavedEntity, Kind) NODE(parser, SectionSubscript) NODE(parser, SelectCaseStmt) NODE(parser, SelectRankCaseStmt) - NESTED_NODE(parser::SelectRankCaseStmt, Rank) + NODE(parser::SelectRankCaseStmt, Rank) NODE(parser, SelectRankConstruct) - NESTED_NODE(parser::SelectRankConstruct, RankCase) + NODE(parser::SelectRankConstruct, RankCase) NODE(parser, SelectRankStmt) NODE(parser, SelectTypeConstruct) - NESTED_NODE(parser::SelectTypeConstruct, TypeCase) + NODE(parser::SelectTypeConstruct, TypeCase) NODE(parser, SelectTypeStmt) NODE(parser, Selector) NODE(parser, SeparateModuleSubprogram) @@ -478,11 +477,11 @@ public: NODE(parser, StmtFunctionStmt) NODE(parser, StopCode) NODE(parser, StopStmt) - NESTED_NODE(parser::StopStmt, Kind) + NODE(parser::StopStmt, Kind) NODE(parser, StructureComponent) NODE(parser, StructureConstructor) NODE(parser, StructureDef) - NESTED_NODE(parser::StructureDef, EndStructureStmt) + NODE(parser::StructureDef, EndStructureStmt) NODE(parser, StructureField) NODE(parser, StructureStmt) NODE(parser, Submodule) @@ -495,38 +494,38 @@ public: NODE(parser, Suffix) NODE(parser, SyncAllStmt) NODE(parser, SyncImagesStmt) - NESTED_NODE(parser::SyncImagesStmt, ImageSet) + NODE(parser::SyncImagesStmt, ImageSet) NODE(parser, SyncMemoryStmt) NODE(parser, SyncTeamStmt) NODE(parser, Target) NODE(parser, TargetStmt) NODE(parser, TypeAttrSpec) - NESTED_NODE(parser::TypeAttrSpec, BindC) - NESTED_NODE(parser::TypeAttrSpec, Extends) + NODE(parser::TypeAttrSpec, BindC) + NODE(parser::TypeAttrSpec, Extends) NODE(parser, TypeBoundGenericStmt) NODE(parser, TypeBoundProcBinding) NODE(parser, TypeBoundProcDecl) NODE(parser, TypeBoundProcedurePart) NODE(parser, TypeBoundProcedureStmt) - NESTED_NODE(parser::TypeBoundProcedureStmt, WithInterface) - NESTED_NODE(parser::TypeBoundProcedureStmt, WithoutInterface) + NODE(parser::TypeBoundProcedureStmt, WithInterface) + NODE(parser::TypeBoundProcedureStmt, WithoutInterface) NODE(parser, TypeDeclarationStmt) NODE(parser, TypeGuardStmt) - NESTED_NODE(parser::TypeGuardStmt, Guard) + NODE(parser::TypeGuardStmt, Guard) NODE(parser, TypeParamDecl) NODE(parser, TypeParamDefStmt) - NESTED_NODE(parser::TypeParamDefStmt, KindOrLen) + NODE(parser::TypeParamDefStmt, KindOrLen) NODE(parser, TypeParamInquiry) NODE(parser, TypeParamSpec) NODE(parser, TypeParamValue) - NESTED_NODE(parser::TypeParamValue, Deferred) + NODE(parser::TypeParamValue, Deferred) NODE(parser, TypeSpec) NODE(parser, Union) - NESTED_NODE(parser::Union, EndUnionStmt) - NESTED_NODE(parser::Union, UnionStmt) + NODE(parser::Union, EndUnionStmt) + NODE(parser::Union, UnionStmt) NODE(parser, UnlockStmt) NODE(parser, UseStmt) - NESTED_NODE(parser::UseStmt, ModuleNature) + NODE(parser::UseStmt, ModuleNature) NODE(parser, Value) NODE(parser, ValueStmt) NODE(parser, Variable) @@ -536,16 +535,14 @@ public: NODE(parser, WaitStmt) NODE(parser, WhereBodyConstruct) NODE(parser, WhereConstruct) - NESTED_NODE(parser::WhereConstruct, Elsewhere) - NESTED_NODE(parser::WhereConstruct, MaskedElsewhere) + NODE(parser::WhereConstruct, Elsewhere) + NODE(parser::WhereConstruct, MaskedElsewhere) NODE(parser, WhereConstructStmt) NODE(parser, WhereStmt) NODE(parser, WriteStmt) -#undef NESTED_NODE #undef NODE #undef NODE_NAME - template bool Pre(const T &x) { IndentEmptyLine(); if (UnionTrait || WrapperTrait) {