diff options
| author | Dylan DPC <dylan.dpc@gmail.com> | 2020-06-03 18:05:39 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-03 18:05:39 +0200 |
| commit | 7973d9381fe813abc83b3849fdf1fd9de8b51e5d (patch) | |
| tree | daaf30d423e22e5231137231fd28e53a9c49f50f /src | |
| parent | f94c0df037d9b68fd02fa02ea63a57d008728a3f (diff) | |
| parent | 3dd6f2cd75102af36faf345e62a06a58cdaf15b9 (diff) | |
| download | rust-7973d9381fe813abc83b3849fdf1fd9de8b51e5d.tar.gz rust-7973d9381fe813abc83b3849fdf1fd9de8b51e5d.zip | |
Rollup merge of #72900 - jsgf:no-unused-pathless, r=petrochenkov
Don't count pathless --extern 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. r? @petrochenkov
Diffstat (limited to 'src')
| -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() {} |
