Auto merge of #43736 - ollie27:rustdoc_impls_js, r=QuietMisdreavus
rustdoc: Don't add external impls to implementors js Otherwise impls from not documented crates appear. Fixes #43701
This commit is contained in:
commit
14fb329e0a
@ -762,6 +762,7 @@ fn collect(path: &Path, krate: &str,
|
||||
}
|
||||
};
|
||||
|
||||
let mut have_impls = false;
|
||||
let mut implementors = format!(r#"implementors["{}"] = ["#, krate.name);
|
||||
for imp in imps {
|
||||
// If the trait and implementation are in the same crate, then
|
||||
@ -769,10 +770,21 @@ fn collect(path: &Path, krate: &str,
|
||||
// going on). If they're in different crates then the crate defining
|
||||
// the trait will be interested in our implementation.
|
||||
if imp.def_id.krate == did.krate { continue }
|
||||
// If the implementation is from another crate then that crate
|
||||
// should add it.
|
||||
if !imp.def_id.is_local() { continue }
|
||||
have_impls = true;
|
||||
write!(implementors, "{},", as_json(&imp.impl_.to_string())).unwrap();
|
||||
}
|
||||
implementors.push_str("];");
|
||||
|
||||
// Only create a js file if we have impls to add to it. If the trait is
|
||||
// documented locally though we always create the file to avoid dead
|
||||
// links.
|
||||
if !have_impls && !cache.paths.contains_key(&did) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let mut mydst = dst.clone();
|
||||
for part in &remote_path[..remote_path.len() - 1] {
|
||||
mydst.push(part);
|
||||
|
15
src/test/rustdoc/issue-43701.rs
Normal file
15
src/test/rustdoc/issue-43701.rs
Normal file
@ -0,0 +1,15 @@
|
||||
// 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 use std::vec::Vec;
|
||||
|
||||
// @!has implementors/core/clone/trait.Clone.js
|
Loading…
Reference in New Issue
Block a user