Skip to content

Commit 207cf11

Browse files
committed
Resolve errors with rustdoc issue rust-lang#20700 fix
1 parent a801a42 commit 207cf11

File tree

1 file changed

+33
-22
lines changed

1 file changed

+33
-22
lines changed

src/librustdoc/html/render.rs

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1704,23 +1704,23 @@ fn item_trait(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
17041704
try!(write!(w, "{{\n"));
17051705
for t in types.iter() {
17061706
try!(write!(w, " "));
1707-
try!(render_method(w, t.item()));
1707+
try!(render_method(w, t.item(), cx.current.connect(",").as_slice()));
17081708
try!(write!(w, ";\n"));
17091709
}
17101710
if types.len() > 0 && required.len() > 0 {
17111711
try!(w.write_str("\n"));
17121712
}
17131713
for m in required.iter() {
17141714
try!(write!(w, " "));
1715-
try!(render_method(w, m.item()));
1715+
try!(render_method(w, m.item(), cx.current.connect(",").as_slice()));
17161716
try!(write!(w, ";\n"));
17171717
}
17181718
if required.len() > 0 && provided.len() > 0 {
17191719
try!(w.write_str("\n"));
17201720
}
17211721
for m in provided.iter() {
17221722
try!(write!(w, " "));
1723-
try!(render_method(w, m.item()));
1723+
try!(render_method(w, m.item(), cx.current.connect(",").as_slice()));
17241724
try!(write!(w, " {{ ... }}\n"));
17251725
}
17261726
try!(write!(w, "}}"));
@@ -1732,11 +1732,16 @@ fn item_trait(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
17321732

17331733
fn trait_item(w: &mut fmt::Formatter, m: &clean::TraitMethod)
17341734
-> fmt::Result {
1735+
let ctx_s: &str = match m.item().name {
1736+
Some(ref name) => name.as_slice(),
1737+
None => ""
1738+
};
1739+
17351740
try!(write!(w, "<h3 id='{}.{}' class='method'>{}<code>",
17361741
shortty(m.item()),
17371742
*m.item().name.as_ref().unwrap(),
17381743
ConciseStability(&m.item().stability)));
1739-
try!(render_method(w, m.item()));
1744+
try!(render_method(w, m.item(), ctx_s));
17401745
try!(write!(w, "</code></h3>"));
17411746
try!(document(w, m.item()));
17421747
Ok(())
@@ -1806,7 +1811,8 @@ fn item_trait(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
18061811
Ok(())
18071812
}
18081813

1809-
fn assoc_type(w: &mut fmt::Formatter, it: &clean::Item,
1814+
fn assoc_type(w: &mut fmt::Formatter,
1815+
it: &clean::Item,
18101816
typ: &clean::TyParam) -> fmt::Result {
18111817
try!(write!(w, "type {}", it.name.as_ref().unwrap()));
18121818
if typ.bounds.len() > 0 {
@@ -1843,7 +1849,7 @@ fn render_method(w: &mut fmt::Formatter, meth: &clean::Item, ctx_s: &str) -> fmt
18431849
method(w, meth, ctx_s, m.unsafety, &m.generics, &m.self_, &m.decl)
18441850
}
18451851
clean::AssociatedTypeItem(ref typ) => {
1846-
assoc_type(w, meth, ctx_s, typ)
1852+
assoc_type(w, meth, typ)
18471853
}
18481854
_ => panic!("render_method called on non-method")
18491855
}
@@ -2083,17 +2089,16 @@ fn render_methods(w: &mut fmt::Formatter, it: &clean::Item) -> fmt::Result {
20832089
}
20842090

20852091
fn render_impl(w: &mut fmt::Formatter, i: &Impl) -> fmt::Result {
2086-
let mut method_context: &str = "";
2087-
20882092
try!(write!(w, "<h3 class='impl'>{}<code>impl{} ",
20892093
ConciseStability(&i.stability),
20902094
i.impl_.generics));
2091-
match i.impl_.trait_ {
2092-
Some(ref ty) => {method_context = format!("{}", *ty).as_slice();
2093-
try!(write!(w, "{} for ", *ty))},
2094-
None => {}
2095-
}
2096-
method_context = format!("{}:{}", i.impl_.for_, method_context).as_slice();
2095+
let method_context = format!("{}:{}",
2096+
i.impl_.for_,
2097+
match i.impl_.trait_ {
2098+
Some(ref ty) => {try!(write!(w, "{} for ", *ty));
2099+
format!("{}", *ty)},
2100+
None => String::from_str("")
2101+
});
20972102
try!(write!(w, "{}{}</code></h3>", i.impl_.for_, WhereClause(&i.impl_.generics)));
20982103
match i.dox {
20992104
Some(ref dox) => {
@@ -2103,8 +2108,10 @@ fn render_impl(w: &mut fmt::Formatter, i: &Impl) -> fmt::Result {
21032108
None => {}
21042109
}
21052110

2106-
fn doctraititem(w: &mut fmt::Formatter, item: &clean::Item, dox: bool)
2107-
-> fmt::Result {
2111+
fn doctraititem(w: &mut fmt::Formatter,
2112+
item: &clean::Item,
2113+
dox: bool,
2114+
method_context: &str) -> fmt::Result {
21082115
match item.inner {
21092116
clean::MethodItem(..) | clean::TyMethodItem(..) => {
21102117
try!(write!(w, "<h4 id='{}:method.{}' class='{}'>{}<code>",
@@ -2146,20 +2153,21 @@ fn render_impl(w: &mut fmt::Formatter, i: &Impl) -> fmt::Result {
21462153

21472154
try!(write!(w, "<div class='impl-items'>"));
21482155
for trait_item in i.impl_.items.iter() {
2149-
try!(doctraititem(w, trait_item, true));
2156+
try!(doctraititem(w, trait_item, true, method_context.as_slice()));
21502157
}
21512158

2152-
fn render_default_methods(w: &mut fmt::Formatter,
2153-
t: &clean::Trait,
2154-
i: &clean::Impl) -> fmt::Result {
2159+
fn render_default_methods(w: &mut fmt::Formatter,
2160+
t: &clean::Trait,
2161+
i: &clean::Impl,
2162+
method_context: &str) -> fmt::Result {
21552163
for trait_item in t.items.iter() {
21562164
let n = trait_item.item().name.clone();
21572165
match i.items.iter().find(|m| { m.name == n }) {
21582166
Some(..) => continue,
21592167
None => {}
21602168
}
21612169

2162-
try!(doctraititem(w, trait_item.item(), false));
2170+
try!(doctraititem(w, trait_item.item(), false, method_context.as_slice()));
21632171
}
21642172
Ok(())
21652173
}
@@ -2172,7 +2180,10 @@ fn render_impl(w: &mut fmt::Formatter, i: &Impl) -> fmt::Result {
21722180
Some(clean::ResolvedPath { did, .. }) => {
21732181
try!({
21742182
match cache().traits.get(&did) {
2175-
Some(t) => try!(render_default_methods(w, t, &i.impl_)),
2183+
Some(t) => try!(render_default_methods(w,
2184+
t,
2185+
&i.impl_,
2186+
method_context.as_slice())),
21762187
None => {}
21772188
}
21782189
Ok(())

0 commit comments

Comments
 (0)