diff options
| author | kadmin <julianknodt@gmail.com> | 2022-12-21 23:54:29 +0000 |
|---|---|---|
| committer | kadmin <julianknodt@gmail.com> | 2022-12-22 01:24:43 +0000 |
| commit | 8a4cbf4f7b7777b7553dd6ae05c7d57e5a20ebfa (patch) | |
| tree | 3338b421bdc5ea21401a73e65248c2f9228446af | |
| parent | a8207df49e45edd654965a52ebbad19b30093cff (diff) | |
| download | rust-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.rs | 8 | ||||
| -rw-r--r-- | src/test/rustdoc/issue-105952.rs | 14 |
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 {} |
