mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Flatten two terminator kind macros into one. (#2948)
As requested in #2942.
This commit is contained in:
@@ -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()];
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user