summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRik Huijzer <github@huijzer.xyz>2023-12-23 21:48:33 +0100
committerGitHub <noreply@github.com>2023-12-23 21:48:33 +0100
commit061e4f24b24a3b59d73a94dc6f2f0d21a2b7beac (patch)
treed41f0fb745ffee12db0b8606f7bae763b14b6e06
parentacacec3bbf4586ef9bc6c4f31707d3515d5215a1 (diff)
[mlir][doc] Escape effects, interfaces, and traits (#76297)
Fixes https://github.com/llvm/llvm-project/issues/76270. Thanks to @scottamain for the clear description. Co-authored-by: Scott Main <scott@modular.com>
-rw-r--r--mlir/test/mlir-tblgen/gen-dialect-doc.td6
-rw-r--r--mlir/tools/mlir-tblgen/OpDocGen.cpp12
2 files changed, 12 insertions, 6 deletions
diff --git a/mlir/test/mlir-tblgen/gen-dialect-doc.td b/mlir/test/mlir-tblgen/gen-dialect-doc.td
index ca0b6e38edf8..c9492eb9ac3c 100644
--- a/mlir/test/mlir-tblgen/gen-dialect-doc.td
+++ b/mlir/test/mlir-tblgen/gen-dialect-doc.td
@@ -81,9 +81,9 @@ def TestTypeDefParams : TypeDef<Test_Dialect, "TestTypeDefParams"> {
// CHECK: Other group
// CHECK: test.b
// CHECK: test.c
-// CHECK: Traits: SingleBlock, SingleBlockImplicitTerminator<YieldOp>
-// CHECK: Interfaces: NoMemoryEffect (MemoryEffectOpInterface)
-// CHECK: Effects: MemoryEffects::Effect{}
+// CHECK: Traits: `SingleBlockImplicitTerminator<YieldOp>`, `SingleBlock`
+// CHECK: Interfaces: `NoMemoryEffect (MemoryEffectOpInterface)`
+// CHECK: Effects: `MemoryEffects::Effect{}`
// CHECK: ## Attribute constraints
// CHECK: ### attribute summary
diff --git a/mlir/tools/mlir-tblgen/OpDocGen.cpp b/mlir/tools/mlir-tblgen/OpDocGen.cpp
index 877ef1089dce..7cd2690ea815 100644
--- a/mlir/tools/mlir-tblgen/OpDocGen.cpp
+++ b/mlir/tools/mlir-tblgen/OpDocGen.cpp
@@ -123,6 +123,12 @@ static void emitAssemblyFormat(StringRef opName, StringRef format,
os << "```\n\n";
}
+/// Place `text` between backticks so that the Markdown processor renders it as
+/// inline code.
+static std::string backticks(const std::string &text) {
+ return '`' + text + '`';
+}
+
static void emitOpTraitsDoc(const Operator &op, raw_ostream &os) {
// TODO: We should link to the trait/documentation of it. That also means we
// should add descriptions to traits that can be queried.
@@ -155,14 +161,14 @@ static void emitOpTraitsDoc(const Operator &op, raw_ostream &os) {
os << effect << " on " << rec->getValueAsString("resource");
});
os << "}";
- effects.insert(os.str());
+ effects.insert(backticks(os.str()));
name.append(llvm::formatv(" ({0})", traitName).str());
}
- interfaces.insert(name);
+ interfaces.insert(backticks(name));
continue;
}
- traits.insert(name);
+ traits.insert(backticks(name));
}
if (!traits.empty()) {
llvm::interleaveComma(traits, os << "\nTraits: ");