diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2021-03-07 18:09:35 +0100 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2021-03-24 21:48:34 +0100 |
| commit | 0cde85523f60b8de774bda91d171c9277464d489 (patch) | |
| tree | be80e7d44e9c12894f4212bf861c618e1b5c76bd /src/librustdoc/html/render | |
| parent | f5fe425c925ef36d5f4c18cfa44173fc42de31b8 (diff) | |
| download | rust-0cde85523f60b8de774bda91d171c9277464d489.tar.gz rust-0cde85523f60b8de774bda91d171c9277464d489.zip | |
Rework rustdoc const type
Diffstat (limited to 'src/librustdoc/html/render')
| -rw-r--r-- | src/librustdoc/html/render/mod.rs | 96 | ||||
| -rw-r--r-- | src/librustdoc/html/render/print_item.rs | 128 | ||||
| -rw-r--r-- | src/librustdoc/html/render/write_shared.rs | 2 |
3 files changed, 126 insertions, 100 deletions
diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 05d30187aa8..25e0be41094 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -67,8 +67,8 @@ use crate::formats::item_type::ItemType; use crate::formats::{AssocItemRender, FormatRenderer, Impl, RenderMode}; use crate::html::escape::Escape; use crate::html::format::{ - href, print_abi_with_space, print_default_space, print_generic_bounds, Buffer, Function, - PrintWithSpace, WhereClause, + href, print_abi_with_space, print_default_space, print_generic_bounds, print_where_clause, + Buffer, PrintWithSpace, }; use crate::html::layout; use crate::html::markdown::{self, ErrorCodes, Markdown, MarkdownHtml, MarkdownSummaryLine}; @@ -918,7 +918,7 @@ fn assoc_const( it.visibility.print_with_space(cx.tcx(), it.def_id, cx.cache()), naive_assoc_href(it, link, cx.cache()), it.name.as_ref().unwrap(), - ty.print(cx.cache()) + ty.print(cx.cache(), cx.tcx()) ); } @@ -930,6 +930,7 @@ fn assoc_type( link: AssocItemLink<'_>, extra: &str, cache: &Cache, + tcx: TyCtxt<'_>, ) { write!( w, @@ -939,10 +940,10 @@ fn assoc_type( it.name.as_ref().unwrap() ); if !bounds.is_empty() { - write!(w, ": {}", print_generic_bounds(bounds, cache)) + write!(w, ": {}", print_generic_bounds(bounds, cache, tcx)) } if let Some(default) = default { - write!(w, " = {}", default.print(cache)) + write!(w, " = {}", default.print(cache, tcx)) } } @@ -1017,7 +1018,7 @@ fn render_assoc_item( let defaultness = print_default_space(meth.is_default()); let abi = print_abi_with_space(header.abi).to_string(); // NOTE: `{:#}` does not print HTML formatting, `{}` does. So `g.print` can't be reused between the length calculation and `write!`. - let generics_len = format!("{:#}", g.print(cx.cache())).len(); + let generics_len = format!("{:#}", g.print(cx.cache(), tcx)).len(); let mut header_len = "fn ".len() + vis.len() + constness.len() @@ -1049,11 +1050,10 @@ fn render_assoc_item( abi, href = href, name = name, - generics = g.print(cx.cache()), - decl = Function { decl: d, header_len, indent, asyncness: header.asyncness } - .print(cx.cache()), - spotlight = spotlight_decl(&d, cx.cache()), - where_clause = WhereClause { gens: g, indent, end_newline }.print(cx.cache()) + generics = g.print(cx.cache(), cx.tcx()), + decl = d.full_print(cx.cache(), cx.tcx(), header_len, indent, header.asyncness), + spotlight = spotlight_decl(&d, cx.cache(), cx.tcx()), + where_clause = print_where_clause(g, cx.cache(), cx.tcx(), indent, end_newline), ) } match *item.kind { @@ -1081,6 +1081,7 @@ fn render_assoc_item( link, if parent == ItemType::Trait { " " } else { "" }, cx.cache(), + cx.tcx(), ), _ => panic!("render_assoc_item called on non-associated-item"), } @@ -1169,9 +1170,9 @@ fn render_assoc_items( AssocItemRender::DerefFor { trait_, type_, deref_mut_ } => { let id = cx.derive_id(small_url_encode(format!( "deref-methods-{:#}", - type_.print(cx.cache()) + type_.print(cx.cache(), cx.tcx()) ))); - debug!("Adding {} to deref id map", type_.print(cx.cache())); + debug!("Adding {} to deref id map", type_.print(cx.cache(), cx.tcx())); cx.deref_id_map .borrow_mut() .insert(type_.def_id_full(cx.cache()).unwrap(), id.clone()); @@ -1182,8 +1183,8 @@ fn render_assoc_items( <a href=\"#{id}\" class=\"anchor\"></a>\ </h2>", id = id, - trait_ = trait_.print(cx.cache()), - type_ = type_.print(cx.cache()), + trait_ = trait_.print(cx.cache(), cx.tcx()), + type_ = type_.print(cx.cache(), cx.tcx()), ); RenderMode::ForDeref { mut_: deref_mut_ } } @@ -1335,7 +1336,7 @@ fn should_render_item(item: &clean::Item, deref_mut_: bool, cache: &Cache) -> bo } } -fn spotlight_decl(decl: &clean::FnDecl, cache: &Cache) -> String { +fn spotlight_decl(decl: &clean::FnDecl, cache: &Cache, tcx: TyCtxt<'_>) -> String { let mut out = Buffer::html(); let mut trait_ = String::new(); @@ -1351,16 +1352,16 @@ fn spotlight_decl(decl: &clean::FnDecl, cache: &Cache) -> String { &mut out, "<h3 class=\"notable\">Notable traits for {}</h3>\ <code class=\"content\">", - impl_.for_.print(cache) + impl_.for_.print(cache, tcx) ); - trait_.push_str(&impl_.for_.print(cache).to_string()); + trait_.push_str(&impl_.for_.print(cache, tcx).to_string()); } //use the "where" class here to make it small write!( &mut out, "<span class=\"where fmt-newline\">{}</span>", - impl_.print(cache, false) + impl_.print(cache, false, tcx) ); let t_did = impl_.trait_.def_id_full(cache).unwrap(); for it in &impl_.items { @@ -1374,6 +1375,7 @@ fn spotlight_decl(decl: &clean::FnDecl, cache: &Cache) -> String { AssocItemLink::GotoSource(t_did, &FxHashSet::default()), "", cache, + tcx, ); out.push_str(";</span>"); } @@ -1419,9 +1421,12 @@ fn render_impl( let id = cx.derive_id(match i.inner_impl().trait_ { Some(ref t) => { if is_on_foreign_type { - get_id_for_impl_on_foreign_type(&i.inner_impl().for_, t, cx.cache()) + get_id_for_impl_on_foreign_type(&i.inner_impl().for_, t, cx.cache(), cx.tcx()) } else { - format!("impl-{}", small_url_encode(format!("{:#}", t.print(cx.cache())))) + format!( + "impl-{}", + small_url_encode(format!("{:#}", t.print(cx.cache(), cx.tcx()))) + ) } } None => "impl".to_string(), @@ -1433,7 +1438,7 @@ fn render_impl( }; if let Some(use_absolute) = use_absolute { write!(w, "<h3 id=\"{}\" class=\"impl\"{}><code class=\"in-band\">", id, aliases); - write!(w, "{}", i.inner_impl().print(cx.cache(), use_absolute)); + write!(w, "{}", i.inner_impl().print(cx.cache(), use_absolute, cx.tcx())); if show_def_docs { for it in &i.inner_impl().items { if let clean::TypedefItem(ref tydef, _) = *it.kind { @@ -1446,6 +1451,7 @@ fn render_impl( AssocItemLink::Anchor(None), "", cx.cache(), + cx.tcx(), ); w.write_str(";</span>"); } @@ -1458,7 +1464,7 @@ fn render_impl( "<h3 id=\"{}\" class=\"impl\"{}><code class=\"in-band\">{}</code>", id, aliases, - i.inner_impl().print(cx.cache(), false) + i.inner_impl().print(cx.cache(), false, cx.tcx()) ); } write!(w, "<a href=\"#{}\" class=\"anchor\"></a>", id); @@ -1558,6 +1564,7 @@ fn render_impl( link.anchor(&id), "", cx.cache(), + cx.tcx(), ); w.write_str("</code></h4>"); } @@ -1579,7 +1586,16 @@ fn render_impl( clean::AssocTypeItem(ref bounds, ref default) => { let id = cx.derive_id(format!("{}.{}", item_type, name)); write!(w, "<h4 id=\"{}\" class=\"{}{}\"><code>", id, item_type, extra_class); - assoc_type(w, item, bounds, default.as_ref(), link.anchor(&id), "", cx.cache()); + assoc_type( + w, + item, + bounds, + default.as_ref(), + link.anchor(&id), + "", + cx.cache(), + cx.tcx(), + ); w.write_str("</code></h4>"); } clean::StrippedItem(..) => return, @@ -1922,9 +1938,10 @@ fn sidebar_assoc_items(cx: &Context<'_>, out: &mut Buffer, it: &clean::Item) { .iter() .filter_map(|it| { if let Some(ref i) = it.inner_impl().trait_ { - let i_display = format!("{:#}", i.print(cx.cache())); + let i_display = format!("{:#}", i.print(cx.cache(), cx.tcx())); let out = Escape(&i_display); - let encoded = small_url_encode(format!("{:#}", i.print(cx.cache()))); + let encoded = + small_url_encode(format!("{:#}", i.print(cx.cache(), cx.tcx()))); let generated = format!( "<a href=\"#impl-{}\">{}{}</a>", encoded, @@ -1988,6 +2005,7 @@ fn sidebar_assoc_items(cx: &Context<'_>, out: &mut Buffer, it: &clean::Item) { fn sidebar_deref_methods(cx: &Context<'_>, out: &mut Buffer, impl_: &Impl, v: &Vec<Impl>) { let c = cx.cache(); + let tcx = cx.tcx(); debug!("found Deref: {:?}", impl_); if let Some((target, real_target)) = @@ -2036,8 +2054,11 @@ fn sidebar_deref_methods(cx: &Context<'_>, out: &mut Buffer, impl_: &Impl, v: &V out, "<a class=\"sidebar-title\" href=\"#{}\">Methods from {}<Target={}></a>", id, - Escape(&format!("{:#}", impl_.inner_impl().trait_.as_ref().unwrap().print(c))), - Escape(&format!("{:#}", real_target.print(c))), + Escape(&format!( + "{:#}", + impl_.inner_impl().trait_.as_ref().unwrap().print(c, tcx) + )), + Escape(&format!("{:#}", real_target.print(c, tcx))), ); // We want links' order to be reproducible so we don't use unstable sort. ret.sort(); @@ -2094,17 +2115,26 @@ fn get_id_for_impl_on_foreign_type( for_: &clean::Type, trait_: &clean::Type, cache: &Cache, + tcx: TyCtxt<'_>, ) -> String { - small_url_encode(format!("impl-{:#}-for-{:#}", trait_.print(cache), for_.print(cache))) + small_url_encode(format!( + "impl-{:#}-for-{:#}", + trait_.print(cache, tcx), + for_.print(cache, tcx) + )) } -fn extract_for_impl_name(item: &clean::Item, cache: &Cache) -> Option<(String, String)> { +fn extract_for_impl_name( + item: &clean::Item, + cache: &Cache, + tcx: TyCtxt<'_>, +) -> Option<(String, String)> { match *item.kind { clean::ItemKind::ImplItem(ref i) => { if let Some(ref trait_) = i.trait_ { Some(( - format!("{:#}", i.for_.print(cache)), - get_id_for_impl_on_foreign_type(&i.for_, trait_, cache), + format!("{:#}", i.for_.print(cache, tcx)), + get_id_for_impl_on_foreign_type(&i.for_, trait_, cache, tcx), )) } else { None @@ -2192,7 +2222,7 @@ fn sidebar_trait(cx: &Context<'_>, buf: &mut Buffer, it: &clean::Item, t: &clean .def_id_full(cx.cache()) .map_or(false, |d| !cx.cache.paths.contains_key(&d)) }) - .filter_map(|i| extract_for_impl_name(&i.impl_item, cx.cache())) + .filter_map(|i| extract_for_impl_name(&i.impl_item, cx.cache(), cx.tcx())) .collect::<Vec<_>>(); if !res.is_empty() { diff --git a/src/librustdoc/html/render/print_item.rs b/src/librustdoc/html/render/print_item.rs index c3c4c4952b3..7662dcf60e3 100644 --- a/src/librustdoc/html/render/print_item.rs +++ b/src/librustdoc/html/render/print_item.rs @@ -19,7 +19,7 @@ use crate::formats::cache::Cache; use crate::formats::item_type::ItemType; use crate::formats::{AssocItemRender, FormatRenderer, Impl, RenderMode}; use crate::html::escape::Escape; -use crate::html::format::{print_abi_with_space, Buffer, Function, PrintWithSpace, WhereClause}; +use crate::html::format::{print_abi_with_space, print_where_clause, Buffer, PrintWithSpace}; use crate::html::highlight; use crate::html::markdown::MarkdownSummaryLine; @@ -266,7 +266,7 @@ fn item_module(w: &mut Buffer, cx: &Context<'_>, item: &clean::Item, items: &[cl w, "<tr><td><code>{}{}</code></td></tr>", myitem.visibility.print_with_space(cx.tcx(), myitem.def_id, cx.cache()), - import.print(cx.cache()) + import.print(cx.cache(), cx.tcx()), ); } @@ -372,7 +372,7 @@ fn item_function(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, f: &clean:: f.header.unsafety.print_with_space(), print_abi_with_space(f.header.abi), it.name.as_ref().unwrap(), - f.generics.print(cx.cache()) + f.generics.print(cx.cache(), cx.tcx()) ) .len(); w.write_str("<pre class=\"rust fn\">"); @@ -387,18 +387,16 @@ fn item_function(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, f: &clean:: unsafety = f.header.unsafety.print_with_space(), abi = print_abi_with_space(f.header.abi), name = it.name.as_ref().unwrap(), - generics = f.generics.print(cx.cache()), - where_clause = - WhereClause { gens: &f.generics, indent: 0, end_newline: true }.print(cx.cache()), - decl = Function { decl: &f.decl, header_len, indent: 0, asyncness: f.header.asyncness } - .print(cx.cache()), - spotlight = spotlight_decl(&f.decl, cx.cache()), + generics = f.generics.print(cx.cache(), cx.tcx()), + where_clause = print_where_clause(&f.generics, cx.cache(), cx.tcx(), 0, true), + decl = f.decl.full_print(cx.cache(), cx.tcx(), header_len, 0, f.header.asyncness), + spotlight = spotlight_decl(&f.decl, cx.cache(), cx.tcx()), ); document(w, cx, it, None) } fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Trait) { - let bounds = bounds(&t.bounds, false, cx.cache()); + let bounds = bounds(&t.bounds, false, cx.cache(), cx.tcx()); let types = t.items.iter().filter(|m| m.is_associated_type()).collect::<Vec<_>>(); let consts = t.items.iter().filter(|m| m.is_associated_const()).collect::<Vec<_>>(); let required = t.items.iter().filter(|m| m.is_ty_method()).collect::<Vec<_>>(); @@ -415,13 +413,12 @@ fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Tra t.unsafety.print_with_space(), if t.is_auto { "auto " } else { "" }, it.name.as_ref().unwrap(), - t.generics.print(cx.cache()), + t.generics.print(cx.cache(), cx.tcx()), bounds ); if !t.generics.where_predicates.is_empty() { - let where_ = WhereClause { gens: &t.generics, indent: 0, end_newline: true }; - write!(w, "{}", where_.print(cx.cache())); + write!(w, "{}", print_where_clause(&t.generics, cx.cache(), cx.tcx(), 0, true)); } else { w.write_str(" "); } @@ -594,8 +591,8 @@ fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Tra let (mut synthetic, mut concrete): (Vec<&&Impl>, Vec<&&Impl>) = local.iter().partition(|i| i.inner_impl().synthetic); - synthetic.sort_by(|a, b| compare_impl(a, b, cx.cache())); - concrete.sort_by(|a, b| compare_impl(a, b, cx.cache())); + synthetic.sort_by(|a, b| compare_impl(a, b, cx.cache(), cx.tcx())); + concrete.sort_by(|a, b| compare_impl(a, b, cx.cache(), cx.tcx())); if !foreign.is_empty() { write_small_section_header(w, "foreign-impls", "Implementations on Foreign Types", ""); @@ -700,9 +697,9 @@ fn item_trait_alias(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clea w, "trait {}{}{} = {};</pre>", it.name.as_ref().unwrap(), - t.generics.print(cx.cache()), - WhereClause { gens: &t.generics, indent: 0, end_newline: true }.print(cx.cache()), - bounds(&t.bounds, true, cx.cache()) + t.generics.print(cx.cache(), cx.tcx()), + print_where_clause(&t.generics, cx.cache(), cx.tcx(), 0, true), + bounds(&t.bounds, true, cx.cache(), cx.tcx()) ); document(w, cx, it, None); @@ -721,10 +718,9 @@ fn item_opaque_ty(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean: w, "type {}{}{where_clause} = impl {bounds};</pre>", it.name.as_ref().unwrap(), - t.generics.print(cx.cache()), - where_clause = - WhereClause { gens: &t.generics, indent: 0, end_newline: true }.print(cx.cache()), - bounds = bounds(&t.bounds, false, cx.cache()) + t.generics.print(cx.cache(), cx.tcx()), + where_clause = print_where_clause(&t.generics, cx.cache(), cx.tcx(), 0, true), + bounds = bounds(&t.bounds, false, cx.cache(), cx.tcx()), ); document(w, cx, it, None); @@ -743,10 +739,9 @@ fn item_typedef(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::T w, "type {}{}{where_clause} = {type_};</pre>", it.name.as_ref().unwrap(), - t.generics.print(cx.cache()), - where_clause = - WhereClause { gens: &t.generics, indent: 0, end_newline: true }.print(cx.cache()), - type_ = t.type_.print(cx.cache()) + t.generics.print(cx.cache(), cx.tcx()), + where_clause = print_where_clause(&t.generics, cx.cache(), cx.tcx(), 0, true), + type_ = t.type_.print(cx.cache(), cx.tcx()), ); document(w, cx, it, None); @@ -793,7 +788,7 @@ fn item_union(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, s: &clean::Uni id = id, name = name, shortty = ItemType::StructField, - ty = ty.print(cx.cache()) + ty = ty.print(cx.cache(), cx.tcx()), ); if let Some(stability_class) = field.stability_class(cx.tcx()) { write!(w, "<span class=\"stab {stab}\"></span>", stab = stability_class); @@ -813,8 +808,8 @@ fn item_enum(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, e: &clean::Enum "{}enum {}{}{}", it.visibility.print_with_space(cx.tcx(), it.def_id, cx.cache()), it.name.as_ref().unwrap(), - e.generics.print(cx.cache()), - WhereClause { gens: &e.generics, indent: 0, end_newline: true }.print(cx.cache()) + e.generics.print(cx.cache(), cx.tcx()), + print_where_clause(&e.generics, cx.cache(), cx.tcx(), 0, true), ); if e.variants.is_empty() && !e.variants_stripped { w.write_str(" {}"); @@ -832,7 +827,7 @@ fn item_enum(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, e: &clean::Enum if i > 0 { w.write_str(", ") } - write!(w, "{}", ty.print(cx.cache())); + write!(w, "{}", ty.print(cx.cache(), cx.tcx())); } w.write_str(")"); } @@ -879,7 +874,7 @@ fn item_enum(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, e: &clean::Enum if i > 0 { w.write_str(", "); } - write!(w, "{}", ty.print(cx.cache())); + write!(w, "{}", ty.print(cx.cache(), cx.tcx())); } w.write_str(")"); } @@ -916,7 +911,7 @@ fn item_enum(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, e: &clean::Enum </span>", id = id, f = field.name.as_ref().unwrap(), - t = ty.print(cx.cache()) + t = ty.print(cx.cache(), cx.tcx()) ); document(w, cx, field, Some(variant)); } @@ -987,19 +982,22 @@ fn item_constant(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, c: &clean:: "{vis}const {name}: {typ}", vis = it.visibility.print_with_space(cx.tcx(), it.def_id, cx.cache()), name = it.name.as_ref().unwrap(), - typ = c.type_.print(cx.cache()), + typ = c.type_().print(cx.cache(), cx.tcx()), ); - if c.value.is_some() || c.is_literal { - write!(w, " = {expr};", expr = Escape(&c.expr)); + let value = c.value(cx.tcx()); + let is_literal = c.is_literal(cx.tcx()); + let expr = c.expr(cx.tcx()); + if value.is_some() || is_literal { + write!(w, " = {expr};", expr = Escape(&expr)); } else { w.write_str(";"); } - if let Some(value) = &c.value { - if !c.is_literal { + if !is_literal { + if let Some(value) = &value { let value_lowercase = value.to_lowercase(); - let expr_lowercase = c.expr.to_lowercase(); + let expr_lowercase = expr.to_lowercase(); if value_lowercase != expr_lowercase && value_lowercase.trim_end_matches("i32") != expr_lowercase @@ -1054,7 +1052,7 @@ fn item_struct(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, s: &clean::St item_type = ItemType::StructField, id = id, name = field.name.as_ref().unwrap(), - ty = ty.print(cx.cache()) + ty = ty.print(cx.cache(), cx.tcx()) ); document(w, cx, field, Some(it)); } @@ -1072,7 +1070,7 @@ fn item_static(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, s: &clean::St vis = it.visibility.print_with_space(cx.tcx(), it.def_id, cx.cache()), mutability = s.mutability.print_with_space(), name = it.name.as_ref().unwrap(), - typ = s.type_.print(cx.cache()) + typ = s.type_.print(cx.cache(), cx.tcx()) ); document(w, cx, it, None) } @@ -1147,7 +1145,12 @@ pub(super) fn item_path(ty: ItemType, name: &str) -> String { } } -fn bounds(t_bounds: &[clean::GenericBound], trait_alias: bool, cache: &Cache) -> String { +fn bounds( + t_bounds: &[clean::GenericBound], + trait_alias: bool, + cache: &Cache, + tcx: TyCtxt<'_>, +) -> String { let mut bounds = String::new(); if !t_bounds.is_empty() { if !trait_alias { @@ -1157,7 +1160,7 @@ fn bounds(t_bounds: &[clean::GenericBound], trait_alias: bool, cache: &Cache) -> if i > 0 { bounds.push_str(" + "); } - bounds.push_str(&p.print(cache).to_string()); + bounds.push_str(&p.print(cache, tcx).to_string()); } } bounds @@ -1187,9 +1190,14 @@ fn render_stability_since( ) } -fn compare_impl<'a, 'b>(lhs: &'a &&Impl, rhs: &'b &&Impl, cache: &Cache) -> Ordering { - let lhs = format!("{}", lhs.inner_impl().print(cache, false)); - let rhs = format!("{}", rhs.inner_impl().print(cache, false)); +fn compare_impl<'a, 'b>( + lhs: &'a &&Impl, + rhs: &'b &&Impl, + cache: &Cache, + tcx: TyCtxt<'_>, +) -> Ordering { + let lhs = format!("{}", lhs.inner_impl().print(cache, false, tcx)); + let rhs = format!("{}", rhs.inner_impl().print(cache, false, tcx)); // lhs and rhs are formatted as HTML, which may be unnecessary compare_names(&lhs, &rhs) @@ -1247,8 +1255,8 @@ fn render_union( it.name.as_ref().unwrap() ); if let Some(g) = g { - write!(w, "{}", g.print(cx.cache())); - write!(w, "{}", WhereClause { gens: g, indent: 0, end_newline: true }.print(cx.cache())); + write!(w, "{}", g.print(cx.cache(), cx.tcx())); + write!(w, "{}", print_where_clause(&g, cx.cache(), cx.tcx(), 0, true)); } write!(w, " {{\n{}", tab); @@ -1259,7 +1267,7 @@ fn render_union( " {}{}: {},\n{}", field.visibility.print_with_space(cx.tcx(), field.def_id, cx.cache()), field.name.as_ref().unwrap(), - ty.print(cx.cache()), + ty.print(cx.cache(), cx.tcx()), tab ); } @@ -1289,16 +1297,12 @@ fn render_struct( it.name.as_ref().unwrap() ); if let Some(g) = g { - write!(w, "{}", g.print(cx.cache())) + write!(w, "{}", g.print(cx.cache(), cx.tcx())) } match ty { CtorKind::Fictive => { if let Some(g) = g { - write!( - w, - "{}", - WhereClause { gens: g, indent: 0, end_newline: true }.print(cx.cache()) - ) + write!(w, "{}", print_where_clause(g, cx.cache(), cx.tcx(), 0, true),) } let mut has_visible_fields = false; w.write_str(" {"); @@ -1310,7 +1314,7 @@ fn render_struct( tab, field.visibility.print_with_space(cx.tcx(), field.def_id, cx.cache()), field.name.as_ref().unwrap(), - ty.print(cx.cache()) + ty.print(cx.cache(), cx.tcx()), ); has_visible_fields = true; } @@ -1341,7 +1345,7 @@ fn render_struct( w, "{}{}", field.visibility.print_with_space(cx.tcx(), field.def_id, cx.cache()), - ty.print(cx.cache()) + ty.print(cx.cache(), cx.tcx()), ) } _ => unreachable!(), @@ -1349,22 +1353,14 @@ fn render_struct( } w.write_str(")"); if let Some(g) = g { - write!( - w, - "{}", - WhereClause { gens: g, indent: 0, end_newline: false }.print(cx.cache()) - ) + write!(w, "{}", print_where_clause(g, cx.cache(), cx.tcx(), 0, false),) } w.write_str(";"); } CtorKind::Const => { // Needed for PhantomData. if let Some(g) = g { - write!( - w, - "{}", - WhereClause { gens: g, indent: 0, end_newline: false }.print(cx.cache()) - ) + write!(w, "{}", print_where_clause(g, cx.cache(), cx.tcx(), 0, false),) } w.write_str(";"); } diff --git a/src/librustdoc/html/render/write_shared.rs b/src/librustdoc/html/render/write_shared.rs index 501d8e8e02e..dc967552116 100644 --- a/src/librustdoc/html/render/write_shared.rs +++ b/src/librustdoc/html/render/write_shared.rs @@ -430,7 +430,7 @@ pub(super) fn write_shared( None } else { Some(Implementor { - text: imp.inner_impl().print(cx.cache(), false).to_string(), + text: imp.inner_impl().print(cx.cache(), false, cx.tcx()).to_string(), synthetic: imp.inner_impl().synthetic, types: collect_paths_for_type(imp.inner_impl().for_.clone(), cx.cache()), }) |
