fix doc links on use
items
This commit is contained in:
parent
a342617059
commit
9ebd8095fa
2 changed files with 27 additions and 2 deletions
|
@ -549,6 +549,7 @@ enum MaybeExported<'a> {
|
||||||
Ok(NodeId),
|
Ok(NodeId),
|
||||||
Impl(Option<DefId>),
|
Impl(Option<DefId>),
|
||||||
ImplItem(Result<DefId, &'a Visibility>),
|
ImplItem(Result<DefId, &'a Visibility>),
|
||||||
|
NestedUse(&'a Visibility),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MaybeExported<'_> {
|
impl MaybeExported<'_> {
|
||||||
|
@ -559,7 +560,9 @@ impl MaybeExported<'_> {
|
||||||
trait_def_id.as_local()
|
trait_def_id.as_local()
|
||||||
}
|
}
|
||||||
MaybeExported::Impl(None) => return true,
|
MaybeExported::Impl(None) => return true,
|
||||||
MaybeExported::ImplItem(Err(vis)) => return vis.kind.is_pub(),
|
MaybeExported::ImplItem(Err(vis)) | MaybeExported::NestedUse(vis) => {
|
||||||
|
return vis.kind.is_pub();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
def_id.map_or(true, |def_id| r.effective_visibilities.is_exported(def_id))
|
def_id.map_or(true, |def_id| r.effective_visibilities.is_exported(def_id))
|
||||||
}
|
}
|
||||||
|
@ -2284,7 +2287,7 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> {
|
||||||
fn resolve_item(&mut self, item: &'ast Item) {
|
fn resolve_item(&mut self, item: &'ast Item) {
|
||||||
let mod_inner_docs =
|
let mod_inner_docs =
|
||||||
matches!(item.kind, ItemKind::Mod(..)) && rustdoc::inner_docs(&item.attrs);
|
matches!(item.kind, ItemKind::Mod(..)) && rustdoc::inner_docs(&item.attrs);
|
||||||
if !mod_inner_docs && !matches!(item.kind, ItemKind::Impl(..)) {
|
if !mod_inner_docs && !matches!(item.kind, ItemKind::Impl(..) | ItemKind::Use(..)) {
|
||||||
self.resolve_doc_links(&item.attrs, MaybeExported::Ok(item.id));
|
self.resolve_doc_links(&item.attrs, MaybeExported::Ok(item.id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2428,6 +2431,12 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemKind::Use(ref use_tree) => {
|
ItemKind::Use(ref use_tree) => {
|
||||||
|
let maybe_exported = match use_tree.kind {
|
||||||
|
UseTreeKind::Simple(_) | UseTreeKind::Glob => MaybeExported::Ok(item.id),
|
||||||
|
UseTreeKind::Nested(_) => MaybeExported::NestedUse(&item.vis),
|
||||||
|
};
|
||||||
|
self.resolve_doc_links(&item.attrs, maybe_exported);
|
||||||
|
|
||||||
self.future_proof_import(use_tree);
|
self.future_proof_import(use_tree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
16
tests/rustdoc/intra-doc/nested-use.rs
Normal file
16
tests/rustdoc/intra-doc/nested-use.rs
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
// Regression test for issue #113896: Intra-doc links on nested use items.
|
||||||
|
|
||||||
|
#![crate_name = "foo"]
|
||||||
|
|
||||||
|
// @has foo/struct.Foo.html
|
||||||
|
// @has - '//a[@href="struct.Foo.html"]' 'Foo'
|
||||||
|
// @has - '//a[@href="struct.Bar.html"]' 'Bar'
|
||||||
|
|
||||||
|
/// [`Foo`]
|
||||||
|
pub use m::{Foo, Bar};
|
||||||
|
|
||||||
|
mod m {
|
||||||
|
/// [`Bar`]
|
||||||
|
pub struct Foo;
|
||||||
|
pub struct Bar;
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue