X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=compiler%2Frustc_metadata%2Fsrc%2Fcreader.rs;h=3c545e6a0d2404f040c0f405bdc05b265a731f07;hb=c6bafa7322943643f37f8818bcb16dad28f53d26;hp=566d27212d08dcbfee7b44a6f50553222b1b69d5;hpb=3dced8029843ac9cfdeaa11400dec99d331a2779;p=rust.git diff --git a/compiler/rustc_metadata/src/creader.rs b/compiler/rustc_metadata/src/creader.rs index 566d27212d0..3c545e6a0d2 100644 --- a/compiler/rustc_metadata/src/creader.rs +++ b/compiler/rustc_metadata/src/creader.rs @@ -13,11 +13,10 @@ use rustc_hir::definitions::Definitions; use rustc_index::vec::IndexVec; use rustc_middle::ty::TyCtxt; -use rustc_serialize::json::ToJson; use rustc_session::config::{self, CrateType, ExternLocation}; use rustc_session::cstore::{CrateDepKind, CrateSource, ExternCrate}; use rustc_session::cstore::{ExternCrateSource, MetadataLoaderDyn}; -use rustc_session::lint::{self, BuiltinLintDiagnostics, ExternDepSpec}; +use rustc_session::lint; use rustc_session::output::validate_crate_name; use rustc_session::search_paths::PathKind; use rustc_session::Session; @@ -27,7 +26,6 @@ use rustc_target::spec::{PanicStrategy, TargetTriple}; use proc_macro::bridge::client::ProcMacro; -use std::collections::BTreeMap; use std::ops::Fn; use std::path::Path; use std::{cmp, env}; @@ -197,10 +195,12 @@ fn crate_dependencies_in_reverse_postorder(&self, cnum: CrateNum) -> Vec) { + let json_unused_externs = tcx.sess.opts.json_unused_externs; + // We put the check for the option before the lint_level_at_node call // because the call mutates internal state and introducing it // leads to some ui tests failing. - if !tcx.sess.opts.json_unused_externs { + if !json_unused_externs.is_enabled() { return; } let level = tcx @@ -210,10 +210,11 @@ pub fn report_unused_deps(&self, tcx: TyCtxt<'_>) { let unused_externs = self.unused_externs.iter().map(|ident| ident.to_ident_string()).collect::>(); let unused_externs = unused_externs.iter().map(String::as_str).collect::>(); - tcx.sess - .parse_sess - .span_diagnostic - .emit_unused_externs(level.as_str(), &unused_externs); + tcx.sess.parse_sess.span_diagnostic.emit_unused_externs( + level, + json_unused_externs.is_loud(), + &unused_externs, + ); } } } @@ -909,31 +910,22 @@ fn report_unused_deps(&mut self, krate: &ast::Crate) { // Don't worry about pathless `--extern foo` sysroot references continue; } + if entry.nounused_dep { + // We're not worried about this one + continue; + } let name_interned = Symbol::intern(name); if self.used_extern_options.contains(&name_interned) { continue; } // Got a real unused --extern - if self.sess.opts.json_unused_externs { + if self.sess.opts.json_unused_externs.is_enabled() { self.cstore.unused_externs.push(name_interned); continue; } - let diag = match self.sess.opts.extern_dep_specs.get(name) { - Some(loc) => BuiltinLintDiagnostics::ExternDepSpec(name.clone(), loc.into()), - None => { - // If we don't have a specific location, provide a json encoding of the `--extern` - // option. - let meta: BTreeMap = - std::iter::once(("name".to_string(), name.to_string())).collect(); - BuiltinLintDiagnostics::ExternDepSpec( - name.clone(), - ExternDepSpec::Json(meta.to_json()), - ) - } - }; - self.sess.parse_sess.buffer_lint_with_diagnostic( + self.sess.parse_sess.buffer_lint( lint::builtin::UNUSED_CRATE_DEPENDENCIES, span, ast::CRATE_NODE_ID, @@ -942,7 +934,6 @@ fn report_unused_deps(&mut self, krate: &ast::Crate) { name, self.local_crate_name, name), - diag, ); } }