diff options
| author | Jeremy Fitzhardinge <jsgf@fb.com> | 2020-06-01 16:21:27 -0700 |
|---|---|---|
| committer | Jeremy Fitzhardinge <jsgf@fb.com> | 2020-06-01 16:29:25 -0700 |
| commit | 3dd6f2cd75102af36faf345e62a06a58cdaf15b9 (patch) | |
| tree | 0e18089fdb31cd7a7029a9a42267295b9945fb22 | |
| parent | ad4bc3323b9299d867697e9653dcea1b5e1ad283 (diff) | |
| download | rust-3dd6f2cd75102af36faf345e62a06a58cdaf15b9.tar.gz rust-3dd6f2cd75102af36faf345e62a06a58cdaf15b9.zip | |
Don't count pathless --extern options for unused-crate-dependencies warnings
`--extern proc_macro` is used to add the proc_macro crate to the extern prelude for all procmacros. In general pathless `--extern` only references sysroot/standard libraries and so should be exempt from unused-crate-dependencies warnings.
| -rw-r--r-- | src/librustc_metadata/creader.rs | 8 | ||||
| -rw-r--r-- | src/test/ui/unused-crate-deps/ignore-pathless-extern.rs | 12 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/librustc_metadata/creader.rs b/src/librustc_metadata/creader.rs index db29e953899..7e902f0ade2 100644 --- a/src/librustc_metadata/creader.rs +++ b/src/librustc_metadata/creader.rs @@ -18,7 +18,7 @@ use rustc_middle::middle::cstore::{ CrateSource, ExternCrate, ExternCrateSource, MetadataLoaderDyn, }; use rustc_middle::ty::TyCtxt; -use rustc_session::config::{self, CrateType}; +use rustc_session::config::{self, CrateType, ExternLocation}; use rustc_session::lint; use rustc_session::output::validate_crate_name; use rustc_session::search_paths::PathKind; @@ -850,7 +850,11 @@ impl<'a> CrateLoader<'a> { // Make a point span rather than covering the whole file let span = krate.span.shrink_to_lo(); // Complain about anything left over - for (name, _) in self.sess.opts.externs.iter() { + for (name, entry) in self.sess.opts.externs.iter() { + if let ExternLocation::FoundInLibrarySearchDirectories = entry.location { + // Don't worry about pathless `--extern foo` sysroot references + continue; + } if !self.used_extern_options.contains(&Symbol::intern(name)) { self.sess.parse_sess.buffer_lint( lint::builtin::UNUSED_CRATE_DEPENDENCIES, diff --git a/src/test/ui/unused-crate-deps/ignore-pathless-extern.rs b/src/test/ui/unused-crate-deps/ignore-pathless-extern.rs new file mode 100644 index 00000000000..8c273cb534d --- /dev/null +++ b/src/test/ui/unused-crate-deps/ignore-pathless-extern.rs @@ -0,0 +1,12 @@ +// Pathless --extern references don't count + +// edition:2018 +// check-pass +// aux-crate:bar=bar.rs +// compile-flags:--extern proc_macro + +#![warn(unused_crate_dependencies)] + +use bar as _; + +fn main() {} |
