rustdoc: Fix names of items in cross crate reexported modules
For renamed reexports the new name should be used.
This commit is contained in:
parent
14f30da613
commit
0cb6a1fad3
@ -41,26 +41,11 @@ use super::Clean;
|
||||
///
|
||||
/// The returned value is `None` if the definition could not be inlined,
|
||||
/// and `Some` of a vector of items if it was successfully expanded.
|
||||
pub fn try_inline(cx: &DocContext, def: Def, into: Option<ast::Name>)
|
||||
pub fn try_inline(cx: &DocContext, def: Def, name: ast::Name)
|
||||
-> Option<Vec<clean::Item>> {
|
||||
if def == Def::Err { return None }
|
||||
let did = def.def_id();
|
||||
if did.is_local() { return None }
|
||||
try_inline_def(cx, def).map(|vec| {
|
||||
vec.into_iter().map(|mut item| {
|
||||
match into {
|
||||
Some(into) if item.name.is_some() => {
|
||||
item.name = Some(into.clean(cx));
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
item
|
||||
}).collect()
|
||||
})
|
||||
}
|
||||
|
||||
fn try_inline_def(cx: &DocContext, def: Def) -> Option<Vec<clean::Item>> {
|
||||
let tcx = cx.tcx;
|
||||
let mut ret = Vec::new();
|
||||
let inner = match def {
|
||||
Def::Trait(did) => {
|
||||
@ -112,16 +97,15 @@ fn try_inline_def(cx: &DocContext, def: Def) -> Option<Vec<clean::Item>> {
|
||||
}
|
||||
_ => return None,
|
||||
};
|
||||
let did = def.def_id();
|
||||
cx.renderinfo.borrow_mut().inlined.insert(did);
|
||||
ret.push(clean::Item {
|
||||
source: tcx.def_span(did).clean(cx),
|
||||
name: Some(tcx.item_name(did).to_string()),
|
||||
source: cx.tcx.def_span(did).clean(cx),
|
||||
name: Some(name.clean(cx)),
|
||||
attrs: load_attrs(cx, did),
|
||||
inner: inner,
|
||||
visibility: Some(clean::Public),
|
||||
stability: tcx.lookup_stability(did).clean(cx),
|
||||
deprecation: tcx.lookup_deprecation(did).clean(cx),
|
||||
stability: cx.tcx.lookup_stability(did).clean(cx),
|
||||
deprecation: cx.tcx.lookup_deprecation(did).clean(cx),
|
||||
def_id: did,
|
||||
});
|
||||
Some(ret)
|
||||
@ -463,7 +447,7 @@ fn build_module(cx: &DocContext, did: DefId) -> clean::Module {
|
||||
let def_id = item.def.def_id();
|
||||
if cx.tcx.sess.cstore.visibility(def_id) == ty::Visibility::Public {
|
||||
if !visited.insert(def_id) { continue }
|
||||
if let Some(i) = try_inline_def(cx, item.def) {
|
||||
if let Some(i) = try_inline(cx, item.def, item.name) {
|
||||
items.extend(i)
|
||||
}
|
||||
}
|
||||
|
@ -2618,7 +2618,7 @@ impl Clean<Vec<Item>> for doctree::Import {
|
||||
} else {
|
||||
let name = self.name;
|
||||
if !denied {
|
||||
if let Some(items) = inline::try_inline(cx, path.def, Some(name)) {
|
||||
if let Some(items) = inline::try_inline(cx, path.def, name) {
|
||||
return items;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,19 @@
|
||||
// Copyright 2017 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.
|
||||
|
||||
#![crate_name = "foo"]
|
||||
|
||||
pub mod iter {
|
||||
mod range {
|
||||
pub struct StepBy;
|
||||
}
|
||||
pub use self::range::StepBy as DeprecatedStepBy;
|
||||
pub struct StepBy;
|
||||
}
|
34
src/test/rustdoc/inline_cross/renamed-via-module.rs
Normal file
34
src/test/rustdoc/inline_cross/renamed-via-module.rs
Normal file
@ -0,0 +1,34 @@
|
||||
// Copyright 2017 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:renamed-via-module.rs
|
||||
// build-aux-docs
|
||||
// ignore-cross-compile
|
||||
|
||||
#![crate_name = "bar"]
|
||||
|
||||
extern crate foo;
|
||||
|
||||
// @has foo/iter/index.html
|
||||
// @has - '//a/[@href="struct.DeprecatedStepBy.html"]' "DeprecatedStepBy"
|
||||
// @has - '//a/[@href="struct.StepBy.html"]' "StepBy"
|
||||
// @has foo/iter/struct.DeprecatedStepBy.html
|
||||
// @has - '//h1' "Struct foo::iter::DeprecatedStepBy"
|
||||
// @has foo/iter/struct.StepBy.html
|
||||
// @has - '//h1' "Struct foo::iter::StepBy"
|
||||
|
||||
// @has bar/iter/index.html
|
||||
// @has - '//a/[@href="struct.DeprecatedStepBy.html"]' "DeprecatedStepBy"
|
||||
// @has - '//a/[@href="struct.StepBy.html"]' "StepBy"
|
||||
// @has bar/iter/struct.DeprecatedStepBy.html
|
||||
// @has - '//h1' "Struct bar::iter::DeprecatedStepBy"
|
||||
// @has bar/iter/struct.StepBy.html
|
||||
// @has - '//h1' "Struct bar::iter::StepBy"
|
||||
pub use foo::iter;
|
Loading…
Reference in New Issue
Block a user