[Mlir-commits] [mlir] [mlir] Decouple enum generation from attributes, adding EnumInfo and EnumCase (PR #132148)
Matthias Springer
llvmlistbot at llvm.org
Fri Mar 21 03:01:09 PDT 2025
================
@@ -66,20 +67,34 @@ static void emitEnumClass(const Record &enumDef, StringRef enumName,
os << "};\n\n";
}
-static void emitParserPrinter(const EnumAttr &enumAttr, StringRef qualName,
+static void emitParserPrinter(const EnumInfo &enumInfo, StringRef qualName,
StringRef cppNamespace, raw_ostream &os) {
- if (enumAttr.getUnderlyingType().empty() ||
- enumAttr.getConstBuilderTemplate().empty())
+ std::optional<Attribute> enumAttrInfo = enumInfo.asEnumAttr();
+ if (enumInfo.getUnderlyingType().empty() ||
+ (enumAttrInfo && enumAttrInfo->getConstBuilderTemplate().empty()))
return;
- auto cases = enumAttr.getAllCases();
+ auto cases = enumInfo.getAllCases();
// Check which cases shouldn't be printed using a keyword.
llvm::BitVector nonKeywordCases(cases.size());
- for (auto [index, caseVal] : llvm::enumerate(cases))
- if (!mlir::tblgen::canFormatStringAsKeyword(caseVal.getStr()))
+ std::string casesList;
+ llvm::raw_string_ostream caseListOs(casesList);
+ caseListOs << "[";
+ for (auto [index, caseVal] : llvm::enumerate(cases)) {
+ if (index != 0)
----------------
matthias-springer wrote:
Can you use `llvm::interleaveComma` here?
https://github.com/llvm/llvm-project/pull/132148
More information about the Mlir-commits
mailing list