Skip to content

Commit 901b9a2

Browse files
authored
Rollup merge of rust-lang#80372 - jyn514:fix-panics, r=Manishearth
Don't panic when an external crate can't be resolved This isn't actually a bug, it can occur when rustdoc tries to resolve a crate that isn't used in the main code. Fixes rust-lang#72381. r? `@kinnison` if you have time, otherwise `@Manishearth`
2 parents 0afd72e + 7edd181 commit 901b9a2

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

Diff for: src/librustdoc/core.rs

+4-5
Original file line numberDiff line numberDiff line change
@@ -434,16 +434,15 @@ crate fn create_resolver<'a>(
434434
sess.time("load_extern_crates", || {
435435
for extern_name in &extern_names {
436436
debug!("loading extern crate {}", extern_name);
437-
resolver
437+
if let Err(()) = resolver
438438
.resolve_str_path_error(
439439
DUMMY_SP,
440440
extern_name,
441441
TypeNS,
442442
LocalDefId { local_def_index: CRATE_DEF_INDEX }.to_def_id(),
443-
)
444-
.unwrap_or_else(|()| {
445-
panic!("Unable to resolve external crate {}", extern_name)
446-
});
443+
) {
444+
warn!("unable to resolve external crate {} (do you have an unused `--extern` crate?)", extern_name)
445+
}
447446
}
448447
});
449448
});

Diff for: src/test/rustdoc-ui/intra-doc/unused-extern-crate.rs

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// compile-flags: --extern zip=whatever.rlib
2+
#![deny(broken_intra_doc_links)]
3+
/// See [zip] crate.
4+
//~^ ERROR unresolved
5+
pub struct ArrayZip;
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
error: unresolved link to `zip`
2+
--> $DIR/unused-extern-crate.rs:3:10
3+
|
4+
LL | /// See [zip] crate.
5+
| ^^^ no item named `zip` in scope
6+
|
7+
note: the lint level is defined here
8+
--> $DIR/unused-extern-crate.rs:2:9
9+
|
10+
LL | #![deny(broken_intra_doc_links)]
11+
| ^^^^^^^^^^^^^^^^^^^^^^
12+
= help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
13+
14+
error: aborting due to previous error
15+

0 commit comments

Comments
 (0)