Hide trait impl with private trait type parameter

Trait's implementations with private type parameters were displayed in
the implementing struct's documentation until now.

With this change any trait implementation that uses a private type
parameter is now hidden in the docs.
This commit is contained in:
Christian Duerr 2017-11-30 21:18:36 +01:00
parent ec337b613e
commit 1df13c057a
No known key found for this signature in database
GPG key ID: 85CDAE3C164BA7B4
2 changed files with 28 additions and 0 deletions

View file

@ -184,6 +184,15 @@ impl<'a> fold::DocFolder for ImplStripper<'a> {
return None;
}
}
if let Some(generics) = imp.trait_.as_ref().and_then(|t| t.generics()) {
for typaram in generics {
if let Some(did) = typaram.def_id() {
if did.is_local() && !self.retained.contains(&did) {
return None;
}
}
}
}
}
self.fold_item_recur(i)
}

View file

@ -0,0 +1,19 @@
// Copyright 2015 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 trait PublicTrait<T> {}
// @has issue_46380_2/struct.Public.html
pub struct PublicStruct;
// @!has - '//*[@class="impl"]' 'impl Add<Private> for Public'
impl PublicTrait<PrivateStruct> for PublicStruct {}
struct PrivateStruct;