Skip to content

Commit ac750a1

Browse files
committed
fix(rustdoc-map): dedup --extern-html-too-url for same unit
1 parent 3c933e8 commit ac750a1

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/cargo/core/compiler/rustdoc.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use crate::sources::CRATES_IO_REGISTRY;
77
use crate::util::errors::{internal, CargoResult};
88
use cargo_util::ProcessBuilder;
99
use std::collections::HashMap;
10+
use std::collections::HashSet;
1011
use std::fmt;
1112
use std::hash;
1213
use url::Url;
@@ -113,8 +114,12 @@ fn build_all_urls(
113114
name2url: &HashMap<&String, Url>,
114115
map: &RustdocExternMap,
115116
unstable_opts: &mut bool,
117+
seen: &mut HashSet<Unit>,
116118
) {
117119
for dep in build_runner.unit_deps(unit) {
120+
if !seen.insert(dep.unit.clone()) {
121+
continue;
122+
}
118123
if !dep.unit.target.is_linkable() || dep.unit.mode.is_doc() {
119124
continue;
120125
}
@@ -155,6 +160,7 @@ fn build_all_urls(
155160
name2url,
156161
map,
157162
unstable_opts,
163+
seen,
158164
);
159165
}
160166
}
@@ -199,6 +205,7 @@ pub fn add_root_urls(
199205
&name2url,
200206
map,
201207
&mut unstable_opts,
208+
&mut HashSet::new(),
202209
);
203210
let std_url = match &map.std {
204211
None | Some(RustdocExternMode::Remote) => None,

tests/testsuite/rustdoc_extern_html.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -452,10 +452,14 @@ fn same_deps_multi_occurrence_in_dep_tree() {
452452
.build();
453453
p.cargo("doc -v --no-deps -Zrustdoc-map")
454454
.masquerade_as_nightly_cargo(&["rustdoc-map"])
455-
.with_stderr_contains(
455+
.with_stderr_does_not_contain(
456456
"[..]--extern-html-root-url[..]bar=https://docs.rs\
457457
[..]--extern-html-root-url[..]baz=https://docs.rs\
458458
[..]--extern-html-root-url[..]baz=https://docs.rs[..]",
459459
)
460+
.with_stderr_contains(
461+
"[..]--extern-html-root-url[..]bar=https://docs.rs\
462+
[..]--extern-html-root-url[..]baz=https://docs.rs[..]",
463+
)
460464
.run();
461465
}

0 commit comments

Comments
 (0)