Skip to content

Commit

Permalink
Only skip impls of foreign unstable traits
Browse files Browse the repository at this point in the history
Previously unstable impls were skipped, which meant that any impl with an
unstable method would get skipped.
  • Loading branch information
Mark-Simulacrum committed Jul 19, 2020
1 parent d7f9451 commit e24a017
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 3 deletions.
8 changes: 5 additions & 3 deletions src/librustdoc/clean/inline.rs
Original file line number Diff line number Diff line change
Expand Up @@ -346,9 +346,11 @@ pub fn build_impl(
// such. This helps prevent dependencies of the standard library, for
// example, from getting documented as "traits `u32` implements" which
// isn't really too helpful.
if let Some(stab) = cx.tcx.lookup_stability(did) {
if stab.level.is_unstable() {
return;
if let Some(trait_did) = associated_trait {
if let Some(stab) = cx.tcx.lookup_stability(trait_did.def_id) {
if stab.level.is_unstable() {
return;
}
}
}
}
Expand Down
26 changes: 26 additions & 0 deletions src/test/rustdoc/auxiliary/unstable-trait.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#![feature(staged_api)]
#![stable(feature = "private_general", since = "1.0.0")]

#[unstable(feature = "private_trait", issue = "none")]
pub trait Bar {}

#[stable(feature = "private_general", since = "1.0.0")]
pub struct Foo {
// nothing
}

impl Foo {
#[stable(feature = "private_general", since = "1.0.0")]
pub fn stable_impl() {}
}

impl Foo {
#[unstable(feature = "private_trait", issue = "none")]
pub fn bar() {}

#[stable(feature = "private_general", since = "1.0.0")]
pub fn bar2() {}
}

#[stable(feature = "private_general", since = "1.0.0")]
impl Bar for Foo {}
11 changes: 11 additions & 0 deletions src/test/rustdoc/hide-unstable-trait.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// aux-build:unstable-trait.rs

#![crate_name = "foo"]
#![feature(private_trait)]

extern crate unstable_trait;

// @has foo/struct.Foo.html 'bar'
// @has foo/struct.Foo.html 'bar2'
#[doc(inline)]
pub use unstable_trait::Foo;

0 comments on commit e24a017

Please sign in to comment.