[flang] Improve dumping of enums in parse tree
Change dump-parse-tree.h to dump enumerator names rather than just type names for data members whose types are defined with ENUM_CLASS. Original-commit: flang-compiler/f18@57bd4f3af9 Reviewed-on: https://github.com/flang-compiler/f18/pull/175 Tree-same-pre-rewrite: false
This commit is contained in:
parent
47d3e5d0a1
commit
8fddf6b34f
|
@ -25,6 +25,8 @@
|
|||
|
||||
namespace Fortran::semantics {
|
||||
|
||||
using namespace std::string_literals;
|
||||
|
||||
//
|
||||
// Dump the Parse Tree hierarchy of any node 'x' of the parse tree.
|
||||
//
|
||||
|
@ -36,6 +38,10 @@ 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_ENUM(T, E) \
|
||||
std::string GetNodeName(const T::E &x) { \
|
||||
return #E " = "s + T::EnumToString(x); \
|
||||
}
|
||||
#define NODE(T1, T2) NODE_NAME(T1::T2, #T2)
|
||||
NODE_NAME(bool, "bool")
|
||||
NODE_NAME(int, "int")
|
||||
|
@ -53,7 +59,7 @@ public:
|
|||
NODE(parser, AccessStmt)
|
||||
NODE(parser, AccessId)
|
||||
NODE(parser, AccessSpec)
|
||||
NODE(parser::AccessSpec, Kind)
|
||||
NODE_ENUM(parser::AccessSpec, Kind)
|
||||
NODE(parser, AcSpec)
|
||||
NODE(parser, ActionStmt)
|
||||
NODE(parser, ActualArg)
|
||||
|
@ -96,7 +102,7 @@ public:
|
|||
NODE(parser::BindAttr, Deferred)
|
||||
NODE(parser::BindAttr, Non_Overridable)
|
||||
NODE(parser, BindEntity)
|
||||
NODE(parser::BindEntity, Kind)
|
||||
NODE_ENUM(parser::BindEntity, Kind)
|
||||
NODE(parser, BindStmt)
|
||||
NODE(parser, Block)
|
||||
NODE(parser, BlockConstruct)
|
||||
|
@ -148,7 +154,7 @@ public:
|
|||
NODE(parser, ConcurrentHeader)
|
||||
NODE(parser, ConnectSpec)
|
||||
NODE(parser::ConnectSpec, CharExpr)
|
||||
NODE(parser::ConnectSpec::CharExpr, Kind)
|
||||
NODE_ENUM(parser::ConnectSpec::CharExpr, Kind)
|
||||
NODE(parser::ConnectSpec, Newunit)
|
||||
NODE(parser::ConnectSpec, Recl)
|
||||
NODE(parser, ConstantValue)
|
||||
|
@ -182,7 +188,7 @@ public:
|
|||
NODE(parser, DeferredShapeSpecList)
|
||||
NODE(parser, DefinedOpName)
|
||||
NODE(parser, DefinedOperator)
|
||||
NODE(parser::DefinedOperator, IntrinsicOperator)
|
||||
NODE_ENUM(parser::DefinedOperator, IntrinsicOperator)
|
||||
NODE(parser, DerivedTypeDef)
|
||||
NODE(parser, DerivedTypeSpec)
|
||||
NODE(parser, DerivedTypeStmt)
|
||||
|
@ -304,7 +310,7 @@ public:
|
|||
NODE(parser, ImplicitPartStmt)
|
||||
NODE(parser, ImplicitSpec)
|
||||
NODE(parser, ImplicitStmt)
|
||||
NODE(parser::ImplicitStmt, ImplicitNoneNameSpec)
|
||||
NODE_ENUM(parser::ImplicitStmt, ImplicitNoneNameSpec)
|
||||
NODE(parser, ImpliedShapeSpec)
|
||||
NODE(parser, ImportStmt)
|
||||
NODE(parser, Initialization)
|
||||
|
@ -312,16 +318,16 @@ public:
|
|||
NODE(parser, InputItem)
|
||||
NODE(parser, InquireSpec)
|
||||
NODE(parser::InquireSpec, CharVar)
|
||||
NODE(parser::InquireSpec::CharVar, Kind)
|
||||
NODE_ENUM(parser::InquireSpec::CharVar, Kind)
|
||||
NODE(parser::InquireSpec, IntVar)
|
||||
NODE(parser::InquireSpec::IntVar, Kind)
|
||||
NODE_ENUM(parser::InquireSpec::IntVar, Kind)
|
||||
NODE(parser::InquireSpec, LogVar)
|
||||
NODE(parser::InquireSpec::LogVar, Kind)
|
||||
NODE_ENUM(parser::InquireSpec::LogVar, Kind)
|
||||
NODE(parser, InquireStmt)
|
||||
NODE(parser::InquireStmt, Iolength)
|
||||
NODE(parser, IntegerTypeSpec)
|
||||
NODE(parser, IntentSpec)
|
||||
NODE(parser::IntentSpec, Intent)
|
||||
NODE_ENUM(parser::IntentSpec, Intent)
|
||||
NODE(parser, IntentStmt)
|
||||
NODE(parser, InterfaceBlock)
|
||||
NODE(parser, InterfaceBody)
|
||||
|
@ -345,7 +351,7 @@ public:
|
|||
NODE(parser, IoControlSpec)
|
||||
NODE(parser::IoControlSpec, Asynchronous)
|
||||
NODE(parser::IoControlSpec, CharExpr)
|
||||
NODE(parser::IoControlSpec::CharExpr, Kind)
|
||||
NODE_ENUM(parser::IoControlSpec::CharExpr, Kind)
|
||||
NODE(parser::IoControlSpec, Pos)
|
||||
NODE(parser::IoControlSpec, Rec)
|
||||
NODE(parser::IoControlSpec, Size)
|
||||
|
@ -464,30 +470,30 @@ public:
|
|||
NODE(parser::OmpClause, Untied)
|
||||
NODE(parser::OmpClause, UseDevicePtr)
|
||||
NODE(parser, OmpDefaultClause)
|
||||
NODE(parser::OmpDefaultClause, Type)
|
||||
NODE_ENUM(parser::OmpDefaultClause, Type)
|
||||
NODE(parser, OmpDependClause)
|
||||
NODE(parser::OmpDependClause, InOut)
|
||||
NODE(parser::OmpDependClause, Sink)
|
||||
NODE(parser::OmpDependClause, Source)
|
||||
NODE(parser, OmpDependenceType)
|
||||
NODE(parser::OmpDependenceType, Type)
|
||||
NODE_ENUM(parser::OmpDependenceType, Type)
|
||||
NODE(parser, OmpDependSinkVec)
|
||||
NODE(parser, OmpDependSinkVecLength)
|
||||
NODE(parser, OmpEndBlockDirective)
|
||||
NODE(parser, OmpIfClause)
|
||||
NODE(parser::OmpIfClause, DirectiveNameModifier)
|
||||
NODE_ENUM(parser::OmpIfClause, DirectiveNameModifier)
|
||||
NODE(parser, OmpLinearClause)
|
||||
NODE(parser::OmpLinearClause, WithModifier)
|
||||
NODE(parser::OmpLinearClause, WithoutModifier)
|
||||
NODE(parser, OmpLinearModifier)
|
||||
NODE(parser::OmpLinearModifier, Type)
|
||||
NODE_ENUM(parser::OmpLinearModifier, Type)
|
||||
NODE(parser, OpenMPDeclareReductionConstruct)
|
||||
NODE(parser, OmpReductionInitializerClause)
|
||||
NODE(parser, OmpReductionCombiner)
|
||||
NODE(parser::OmpReductionCombiner, FunctionCombiner)
|
||||
NODE(parser, OpenMPDeclareSimdConstruct)
|
||||
NODE(parser, OmpDeclareTargetMapType)
|
||||
NODE(parser::OmpDeclareTargetMapType, Type)
|
||||
NODE_ENUM(parser::OmpDeclareTargetMapType, Type)
|
||||
NODE(parser, OpenMPEndLoopDirective)
|
||||
NODE(parser, OpenMPDeclareTargetConstruct)
|
||||
NODE(parser::OpenMPDeclareTargetConstruct, Implicit)
|
||||
|
@ -520,21 +526,21 @@ public:
|
|||
NODE(parser::OmpLoopDirective, TeamsDistributeSimd)
|
||||
NODE(parser, OmpNowait)
|
||||
NODE(parser, OmpScheduleClause)
|
||||
NODE(parser::OmpScheduleClause, ScheduleType)
|
||||
NODE_ENUM(parser::OmpScheduleClause, ScheduleType)
|
||||
NODE(parser, OmpScheduleModifier)
|
||||
NODE(parser::OmpScheduleModifier, Modifier1)
|
||||
NODE(parser::OmpScheduleModifier, Modifier2)
|
||||
NODE(parser, OmpScheduleModifierType)
|
||||
NODE(parser::OmpScheduleModifierType, ModType)
|
||||
NODE_ENUM(parser::OmpScheduleModifierType, ModType)
|
||||
NODE(parser, OmpMapClause)
|
||||
NODE(parser, OmpMapType)
|
||||
NODE(parser::OmpMapType, Always)
|
||||
NODE(parser::OmpMapType, Type)
|
||||
NODE_ENUM(parser::OmpMapType, Type)
|
||||
NODE(parser, OmpObject)
|
||||
NODE(parser::OmpObject, Kind)
|
||||
NODE_ENUM(parser::OmpObject, Kind)
|
||||
NODE(parser, OmpObjectList)
|
||||
NODE(parser, OmpProcBindClause)
|
||||
NODE(parser::OmpProcBindClause, Type)
|
||||
NODE_ENUM(parser::OmpProcBindClause, Type)
|
||||
NODE(parser, OmpReductionOperator)
|
||||
NODE(parser, OmpSection)
|
||||
NODE(parser, OmpStandaloneDirective)
|
||||
|
@ -542,7 +548,7 @@ public:
|
|||
NODE(parser, OpenMPCancelConstruct)
|
||||
NODE(parser::OpenMPCancelConstruct, If)
|
||||
NODE(parser, OmpCancelType)
|
||||
NODE(parser::OmpCancelType, Type)
|
||||
NODE_ENUM(parser::OmpCancelType, Type)
|
||||
NODE(parser, OpenMPFlushConstruct)
|
||||
NODE(parser::OmpStandaloneDirective, TargetEnterData)
|
||||
NODE(parser::OmpStandaloneDirective, TargetExitData)
|
||||
|
@ -598,7 +604,7 @@ public:
|
|||
NODE(parser, ProcedureDeclarationStmt)
|
||||
NODE(parser, ProcedureDesignator)
|
||||
NODE(parser, ProcedureStmt)
|
||||
NODE(parser::ProcedureStmt, Kind)
|
||||
NODE_ENUM(parser::ProcedureStmt, Kind)
|
||||
NODE(parser, Program)
|
||||
NODE(parser, ProgramStmt)
|
||||
NODE(parser, ProgramUnit)
|
||||
|
@ -615,7 +621,7 @@ public:
|
|||
NODE(parser, Save)
|
||||
NODE(parser, SaveStmt)
|
||||
NODE(parser, SavedEntity)
|
||||
NODE(parser::SavedEntity, Kind)
|
||||
NODE_ENUM(parser::SavedEntity, Kind)
|
||||
NODE(parser, SectionSubscript)
|
||||
NODE(parser, SelectCaseStmt)
|
||||
NODE(parser, SelectRankCaseStmt)
|
||||
|
@ -643,7 +649,7 @@ public:
|
|||
NODE(parser, StmtFunctionStmt)
|
||||
NODE(parser, StopCode)
|
||||
NODE(parser, StopStmt)
|
||||
NODE(parser::StopStmt, Kind)
|
||||
NODE_ENUM(parser::StopStmt, Kind)
|
||||
NODE(parser, StructureComponent)
|
||||
NODE(parser, StructureConstructor)
|
||||
NODE(parser, StructureDef)
|
||||
|
@ -691,7 +697,7 @@ public:
|
|||
NODE(parser::Union, UnionStmt)
|
||||
NODE(parser, UnlockStmt)
|
||||
NODE(parser, UseStmt)
|
||||
NODE(parser::UseStmt, ModuleNature)
|
||||
NODE_ENUM(parser::UseStmt, ModuleNature)
|
||||
NODE(parser, Value)
|
||||
NODE(parser, ValueStmt)
|
||||
NODE(parser, Variable)
|
||||
|
|
Loading…
Reference in a new issue