mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-03 22:02:51 +01:00
Refactor NodeCategory for X-macros (#5029)
Taking an approach similar to NameId in #5018
This commit is contained in:
@@ -9,37 +9,6 @@
|
||||
|
||||
namespace Carbon::Parse {
|
||||
|
||||
auto NodeCategory::Print(llvm::raw_ostream& out) const -> void {
|
||||
llvm::ListSeparator sep("|");
|
||||
auto value = value_;
|
||||
do {
|
||||
// The lowest set bit in the value, or 0 (`None`) if no bits are set.
|
||||
auto lowest_bit = static_cast<RawEnumType>(value & -value);
|
||||
switch (lowest_bit) {
|
||||
#define CARBON_NODE_CATEGORY(Name) \
|
||||
case NodeCategory::Name: { \
|
||||
out << sep << #Name; \
|
||||
break; \
|
||||
}
|
||||
CARBON_NODE_CATEGORY(Decl);
|
||||
CARBON_NODE_CATEGORY(Expr);
|
||||
CARBON_NODE_CATEGORY(ImplAs);
|
||||
CARBON_NODE_CATEGORY(MemberExpr);
|
||||
CARBON_NODE_CATEGORY(MemberName);
|
||||
CARBON_NODE_CATEGORY(Modifier);
|
||||
CARBON_NODE_CATEGORY(Pattern);
|
||||
CARBON_NODE_CATEGORY(Statement);
|
||||
CARBON_NODE_CATEGORY(IntConst);
|
||||
CARBON_NODE_CATEGORY(Requirement);
|
||||
CARBON_NODE_CATEGORY(NonExprIdentifierName);
|
||||
CARBON_NODE_CATEGORY(PackageName);
|
||||
CARBON_NODE_CATEGORY(None);
|
||||
#undef CARBON_NODE_CATEGORY
|
||||
}
|
||||
value &= ~lowest_bit;
|
||||
} while (value);
|
||||
}
|
||||
|
||||
CARBON_DEFINE_ENUM_CLASS_NAMES(NodeKind) = {
|
||||
#define CARBON_PARSE_NODE_KIND(Name) CARBON_ENUM_CLASS_NAME_STRING(Name)
|
||||
#include "toolchain/parse/node_kind.def"
|
||||
|
||||
Reference in New Issue
Block a user