[Mlir-commits] [mlir] [mlir][python] Fix recursion error for __str__ (PR #174552)
Jiaxuan Bai
llvmlistbot at llvm.org
Tue Jan 6 01:26:58 PST 2026
https://github.com/JiaxuanBai updated https://github.com/llvm/llvm-project/pull/174552
>From f7c85c1082f2c65fc62ef4b3781f955995cf5b75 Mon Sep 17 00:00:00 2001
From: Your Name <you at example.com>
Date: Tue, 6 Jan 2026 17:11:36 +0800
Subject: [PATCH] fix recursion error for __str__
---
mlir/test/mlir-tblgen/enums-python-bindings.td | 4 ++--
mlir/tools/mlir-tblgen/EnumPythonBindingGen.cpp | 8 ++++----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/mlir/test/mlir-tblgen/enums-python-bindings.td b/mlir/test/mlir-tblgen/enums-python-bindings.td
index cd23b6a2effb9..6d79f0999efed 100644
--- a/mlir/test/mlir-tblgen/enums-python-bindings.td
+++ b/mlir/test/mlir-tblgen/enums-python-bindings.td
@@ -90,8 +90,6 @@ def TestBitEnum_Attr : EnumAttr<Test_Dialect, TestBitEnum, "testbitenum">;
// CHECK: return bin(self).count("1")
// CHECK: def __str__(self):
-// CHECK: if len(self) > 1:
-// CHECK: return " | ".join(map(str, self))
// CHECK: if self is TestBitEnum.User:
// CHECK: return "user"
// CHECK: if self is TestBitEnum.Group:
@@ -100,6 +98,8 @@ def TestBitEnum_Attr : EnumAttr<Test_Dialect, TestBitEnum, "testbitenum">;
// CHECK: return "other"
// CHECK: if self is TestBitEnum.Any:
// CHECK: return "any"
+// CHECK: if len(self) > 1:
+// CHECK: return " | ".join(map(str, self))
// CHECK: raise ValueError("Unknown TestBitEnum enum entry.")
// CHECK: @register_attribute_builder("TestBitEnum")
diff --git a/mlir/tools/mlir-tblgen/EnumPythonBindingGen.cpp b/mlir/tools/mlir-tblgen/EnumPythonBindingGen.cpp
index acc9b61d7121c..fcb81e7704321 100644
--- a/mlir/tools/mlir-tblgen/EnumPythonBindingGen.cpp
+++ b/mlir/tools/mlir-tblgen/EnumPythonBindingGen.cpp
@@ -71,15 +71,15 @@ static void emitEnumClass(EnumInfo enumInfo, raw_ostream &os) {
}
os << formatv(" def __str__(self):\n");
- if (enumInfo.isBitEnum())
- os << formatv(" if len(self) > 1:\n"
- " return \"{0}\".join(map(str, self))\n",
- enumInfo.getDef().getValueAsString("separator"));
for (const EnumCase &enumCase : enumInfo.getAllCases()) {
os << formatv(" if self is {0}.{1}:\n", enumInfo.getEnumClassName(),
makePythonEnumCaseName(enumCase.getSymbol()));
os << formatv(" return \"{0}\"\n", enumCase.getStr());
}
+ if (enumInfo.isBitEnum())
+ os << formatv(" if len(self) > 1:\n"
+ " return \"{0}\".join(map(str, self))\n",
+ enumInfo.getDef().getValueAsString("separator"));
os << formatv(" raise ValueError(\"Unknown {0} enum entry.\")\n\n\n",
enumInfo.getEnumClassName());
os << "\n";
More information about the Mlir-commits
mailing list