about summary refs log tree commit diff
diff options
context:
space:
mode:
authorkadmin <julianknodt@gmail.com>2022-12-21 23:54:29 +0000
committerkadmin <julianknodt@gmail.com>2022-12-22 01:24:43 +0000
commit8a4cbf4f7b7777b7553dd6ae05c7d57e5a20ebfa (patch)
tree3338b421bdc5ea21401a73e65248c2f9228446af
parenta8207df49e45edd654965a52ebbad19b30093cff (diff)
downloadrust-8a4cbf4f7b7777b7553dd6ae05c7d57e5a20ebfa.tar.gz
rust-8a4cbf4f7b7777b7553dd6ae05c7d57e5a20ebfa.zip
Fix ICE
Left a todo awhile ago (I think), so fill it in to print a const for `Term`s.
-rw-r--r--src/librustdoc/html/format.rs8
-rw-r--r--src/test/rustdoc/issue-105952.rs14
2 files changed, 18 insertions, 4 deletions
diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index 39e2a902226..5ad24bf2681 100644
--- a/src/librustdoc/html/format.rs
+++ b/src/librustdoc/html/format.rs
@@ -1655,10 +1655,10 @@ impl clean::types::Term {
         &'a self,
         cx: &'a Context<'tcx>,
     ) -> impl fmt::Display + 'a + Captures<'tcx> {
-        match self {
-            clean::types::Term::Type(ty) => ty.print(cx),
-            _ => todo!(),
-        }
+        display_fn(move |f| match self {
+            clean::types::Term::Type(ty) => fmt::Display::fmt(&ty.print(cx), f),
+            clean::types::Term::Constant(ct) => fmt::Display::fmt(&ct.print(cx.tcx()), f),
+        })
     }
 }
 
diff --git a/src/test/rustdoc/issue-105952.rs b/src/test/rustdoc/issue-105952.rs
new file mode 100644
index 00000000000..e3f1df0063d
--- /dev/null
+++ b/src/test/rustdoc/issue-105952.rs
@@ -0,0 +1,14 @@
+#![crate_name = "foo"]
+
+#![feature(associated_const_equality)]
+pub enum ParseMode {
+    Raw,
+}
+pub trait Parse {
+    const PARSE_MODE: ParseMode;
+}
+pub trait RenderRaw {}
+
+// @hasraw foo/trait.RenderRaw.html 'impl'
+// @hasraw foo/trait.RenderRaw.html 'ParseMode::Raw'
+impl<T: Parse<PARSE_MODE = { ParseMode::Raw }>> RenderRaw for T {}