Skip to content

Commit 7edd181

Browse files
committed
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.
1 parent 3ffea60 commit 7edd181

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

src/librustdoc/core.rs

+4-5
Original file line numberDiff line numberDiff line change
@@ -428,16 +428,15 @@ crate fn create_resolver<'a>(
428428
sess.time("load_extern_crates", || {
429429
for extern_name in &extern_names {
430430
debug!("loading extern crate {}", extern_name);
431-
resolver
431+
if let Err(()) = resolver
432432
.resolve_str_path_error(
433433
DUMMY_SP,
434434
extern_name,
435435
TypeNS,
436436
LocalDefId { local_def_index: CRATE_DEF_INDEX }.to_def_id(),
437-
)
438-
.unwrap_or_else(|()| {
439-
panic!("Unable to resolve external crate {}", extern_name)
440-
});
437+
) {
438+
warn!("unable to resolve external crate {} (do you have an unused `--extern` crate?)", extern_name)
439+
}
441440
}
442441
});
443442
});
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;
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)