Summary:
The latter simplifies the client code by avoiding the need to handle it
as a separate case statement.
Reviewers: hokein
Reviewed By: hokein
Subscribers: nridge, MaskRay, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67277
llvm-svn: 371375
std::vector<std::vector<std::string>> buildHighlightScopeLookupTable() {
std::vector<std::vector<std::string>> LookupTable;
// HighlightingKind is using as the index.
- for (int KindValue = 0; KindValue < (int)HighlightingKind::NumKinds;
+ for (int KindValue = 0; KindValue <= (int)HighlightingKind::LastKind;
++KindValue)
LookupTable.push_back({toTextMateScope((HighlightingKind)(KindValue))});
return LookupTable;
return OS << "Primitive";
case HighlightingKind::Macro:
return OS << "Macro";
- case HighlightingKind::NumKinds:
- llvm_unreachable("NumKinds is not a valid HighlightingKind");
}
+ llvm_unreachable("invalid HighlightingKind");
}
std::vector<LineHighlightings>
return "storage.type.primitive.cpp";
case HighlightingKind::Macro:
return "entity.name.function.preprocessor.cpp";
- case HighlightingKind::NumKinds:
- llvm_unreachable("must not pass NumKinds to the function");
}
llvm_unreachable("unhandled HighlightingKind");
}
Primitive,
Macro,
- NumKinds,
+ LastKind = Macro
};
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, HighlightingKind K);