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:
@@ -762,6 +762,7 @@ fn write_shared(cx: &Context,
|
||||
}
|
||||
};
|
||||
|
||||
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 write_shared(cx: &Context,
|
||||
// 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);
|
||||
|
||||
Reference in New Issue
Block a user