Skip to content

Commit

Permalink
Rollup merge of rust-lang#54087 - ollie27:rustdoc_blanket_impl, r=Qui…
Browse files Browse the repository at this point in the history
…etMisdreavus

rustdoc: Remove generated blanket impls from trait pages

rust-lang#53801 only deduped the generated blanket impls but they shouldn't be displayed at all because the original blanket impl is already in the "Implementors" section. This also removes the impls from the sidebar.

Fixes rust-lang#53689

r? @QuietMisdreavus
  • Loading branch information
kennytm authored Sep 12, 2018
2 parents 85b6bf9 + d3e5685 commit 40d9740
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 14 deletions.
26 changes: 12 additions & 14 deletions src/librustdoc/html/render.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1257,9 +1257,11 @@ impl DocFolder for Cache {
// Collect all the implementors of traits.
if let clean::ImplItem(ref i) = item.inner {
if let Some(did) = i.trait_.def_id() {
self.implementors.entry(did).or_default().push(Impl {
impl_item: item.clone(),
});
if i.blanket_impl.is_none() {
self.implementors.entry(did).or_default().push(Impl {
impl_item: item.clone(),
});
}
}
}

Expand Down Expand Up @@ -2931,7 +2933,6 @@ fn item_trait(


let (synthetic, concrete): (Vec<&&Impl>, Vec<&&Impl>) = local.iter()
.filter(|i| i.inner_impl().blanket_impl.is_none())
.partition(|i| i.inner_impl().synthetic);

if !foreign.is_empty() {
Expand All @@ -2941,17 +2942,14 @@ fn item_trait(
</h2>
")?;

let mut foreign_cache = FxHashSet();
for implementor in foreign {
if foreign_cache.insert(implementor.inner_impl().to_string()) {
let assoc_link = AssocItemLink::GotoSource(
implementor.impl_item.def_id,
&implementor.inner_impl().provided_trait_methods
);
render_impl(w, cx, &implementor, assoc_link,
RenderMode::Normal, implementor.impl_item.stable_since(), false,
None)?;
}
let assoc_link = AssocItemLink::GotoSource(
implementor.impl_item.def_id,
&implementor.inner_impl().provided_trait_methods
);
render_impl(w, cx, &implementor, assoc_link,
RenderMode::Normal, implementor.impl_item.stable_since(), false,
None)?;
}
}

Expand Down
11 changes: 11 additions & 0 deletions src/test/rustdoc/auxiliary/issue-53689.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.

pub struct MyStruct;
26 changes: 26 additions & 0 deletions src/test/rustdoc/issue-53689.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.

// aux-build:issue-53689.rs

#![crate_name = "foo"]

extern crate issue_53689;

// @has foo/trait.MyTrait.html
// @!has - 'MyStruct'
// @count - '//*[code="impl<T> MyTrait for T"]' 1
pub trait MyTrait {}

impl<T> MyTrait for T {}

mod a {
pub use issue_53689::MyStruct;
}

0 comments on commit 40d9740

Please sign in to comment.