rustdoc: Fix visibility of trait and impl items
This commit is contained in:
parent
22ddcd1a13
commit
93e51b185a
@ -1096,7 +1096,10 @@ fn clean(&self, cx: &DocContext<'_>) -> Item {
|
|||||||
AssocTypeItem(bounds.clean(cx), default.clean(cx))
|
AssocTypeItem(bounds.clean(cx), default.clean(cx))
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Item::from_def_id_and_parts(local_did, Some(self.ident.name), inner, cx)
|
let what_rustc_thinks =
|
||||||
|
Item::from_def_id_and_parts(local_did, Some(self.ident.name), inner, cx);
|
||||||
|
// Trait items always inherit the trait's visibility -- we don't want to show `pub`.
|
||||||
|
Item { visibility: Inherited, ..what_rustc_thinks }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1131,7 +1134,21 @@ fn clean(&self, cx: &DocContext<'_>) -> Item {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Item::from_def_id_and_parts(local_did, Some(self.ident.name), inner, cx)
|
|
||||||
|
let what_rustc_thinks =
|
||||||
|
Item::from_def_id_and_parts(local_did, Some(self.ident.name), inner, cx);
|
||||||
|
let parent_item = cx.tcx.hir().expect_item(cx.tcx.hir().get_parent_item(self.hir_id));
|
||||||
|
if let hir::ItemKind::Impl(impl_) = &parent_item.kind {
|
||||||
|
if impl_.of_trait.is_some() {
|
||||||
|
// Trait impl items always inherit the impl's visibility --
|
||||||
|
// we don't want to show `pub`.
|
||||||
|
Item { visibility: Inherited, ..what_rustc_thinks }
|
||||||
|
} else {
|
||||||
|
what_rustc_thinks
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
panic!("found impl item with non-impl parent {:?}", parent_item);
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,3 +42,35 @@ mod b {
|
|||||||
struct FooBPriv;
|
struct FooBPriv;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @has 'foo/trait.PubTrait.html' '//pre' 'pub trait PubTrait'
|
||||||
|
//
|
||||||
|
// @has 'foo/trait.PubTrait.html' '//pre' 'type Type;'
|
||||||
|
// @!has 'foo/trait.PubTrait.html' '//pre' 'pub type Type;'
|
||||||
|
//
|
||||||
|
// @has 'foo/trait.PubTrait.html' '//pre' 'const CONST: usize;'
|
||||||
|
// @!has 'foo/trait.PubTrait.html' '//pre' 'pub const CONST: usize;'
|
||||||
|
//
|
||||||
|
// @has 'foo/trait.PubTrait.html' '//pre' 'fn function();'
|
||||||
|
// @!has 'foo/trait.PubTrait.html' '//pre' 'pub fn function();'
|
||||||
|
|
||||||
|
pub trait PubTrait {
|
||||||
|
type Type;
|
||||||
|
const CONST: usize;
|
||||||
|
fn function();
|
||||||
|
}
|
||||||
|
|
||||||
|
// @has 'foo/struct.FooPublic.html' '//code' 'type Type'
|
||||||
|
// @!has 'foo/struct.FooPublic.html' '//code' 'pub type Type'
|
||||||
|
//
|
||||||
|
// @has 'foo/struct.FooPublic.html' '//code' 'const CONST: usize'
|
||||||
|
// @!has 'foo/struct.FooPublic.html' '//code' 'pub const CONST: usize'
|
||||||
|
//
|
||||||
|
// @has 'foo/struct.FooPublic.html' '//code' 'fn function()'
|
||||||
|
// @!has 'foo/struct.FooPublic.html' '//code' 'pub fn function()'
|
||||||
|
|
||||||
|
impl PubTrait for FooPublic {
|
||||||
|
type Type = usize;
|
||||||
|
const CONST: usize = 0;
|
||||||
|
fn function() {}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user