Просмотр исходного кода

Flatten two terminator kind macros into one. (#2948)

As requested in #2942.
Richard Smith 2 лет назад
Родитель
Сommit
3a9bc01ec4

+ 2 - 4
toolchain/semantics/semantics_node_kind.cpp

@@ -14,10 +14,8 @@ CARBON_DEFINE_ENUM_CLASS_NAMES(SemanticsNodeKind) = {
 auto SemanticsNodeKind::terminator_kind() const -> SemanticsTerminatorKind {
   static constexpr SemanticsTerminatorKind Table[] = {
 #define CARBON_SEMANTICS_NODE_KIND(Name) SemanticsTerminatorKind::NotTerminator,
-#define CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND(Name) \
-  SemanticsTerminatorKind::TerminatorSequence,
-#define CARBON_SEMANTICS_TERMINATOR_KIND(Name) \
-  SemanticsTerminatorKind::Terminator,
+#define CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(Name, TerminatorKind) \
+  SemanticsTerminatorKind::TerminatorKind,
 #include "toolchain/semantics/semantics_node_kind.def"
   };
   return Table[AsInt()];

+ 9 - 19
toolchain/semantics/semantics_node_kind.def

@@ -10,27 +10,18 @@
 // Supported x-macros are:
 // - CARBON_SEMANTICS_NODE_KIND(Name)
 //   Defines a node kind.
-// - CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND(Name)
-//   Defines a node kind for a node in the terminator sequence, such as
-//   BranchIf. These nodes can only appear at the end of a block, after all
-//   nodes that are not in the terminator sequence, before the terminator.
-// - CARBON_SEMANTICS_TERMINATOR_KIND(Name)
+// - CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(Name, TerminatorKind)
 //   Defines a node kind for a terminator node.
 
 #ifndef CARBON_SEMANTICS_NODE_KIND
 #error "Must define the x-macro to use this file."
 #endif
 
-#ifndef CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND
-#define CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND(Name) \
+#ifndef CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND
+#define CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(Name, TerminatorKind) \
   CARBON_SEMANTICS_NODE_KIND(Name)
 #endif
 
-#ifndef CARBON_SEMANTICS_TERMINATOR_KIND
-#define CARBON_SEMANTICS_TERMINATOR_KIND(Name) \
-  CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND(Name)
-#endif
-
 CARBON_SEMANTICS_NODE_KIND(Invalid)
 
 // A cross-reference between IRs.
@@ -41,16 +32,16 @@ CARBON_SEMANTICS_NODE_KIND(BinaryOperatorAdd)
 CARBON_SEMANTICS_NODE_KIND(BindName)
 CARBON_SEMANTICS_NODE_KIND(BlockArg)
 CARBON_SEMANTICS_NODE_KIND(BoolLiteral)
-CARBON_SEMANTICS_TERMINATOR_KIND(Branch)
-CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND(BranchIf)
-CARBON_SEMANTICS_TERMINATOR_KIND(BranchWithArg)
+CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(Branch, Terminator)
+CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(BranchIf, TerminatorSequence)
+CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(BranchWithArg, Terminator)
 CARBON_SEMANTICS_NODE_KIND(Builtin)
 CARBON_SEMANTICS_NODE_KIND(Call)
 CARBON_SEMANTICS_NODE_KIND(FunctionDeclaration)
 CARBON_SEMANTICS_NODE_KIND(IntegerLiteral)
 CARBON_SEMANTICS_NODE_KIND(RealLiteral)
-CARBON_SEMANTICS_TERMINATOR_KIND(Return)
-CARBON_SEMANTICS_TERMINATOR_KIND(ReturnExpression)
+CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(Return, Terminator)
+CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(ReturnExpression, Terminator)
 CARBON_SEMANTICS_NODE_KIND(StringLiteral)
 CARBON_SEMANTICS_NODE_KIND(StructMemberAccess)
 CARBON_SEMANTICS_NODE_KIND(StructType)
@@ -60,6 +51,5 @@ CARBON_SEMANTICS_NODE_KIND(StubReference)
 CARBON_SEMANTICS_NODE_KIND(UnaryOperatorNot)
 CARBON_SEMANTICS_NODE_KIND(VarStorage)
 
-#undef CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND
-#undef CARBON_SEMANTICS_TERMINATOR_KIND
+#undef CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND
 #undef CARBON_SEMANTICS_NODE_KIND