diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2013-02-25 12:12:22 -0500 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2013-02-26 17:51:26 -0500 |
| commit | 681e6dd40d5882465f74eebf2f1802c76b0df063 (patch) | |
| tree | e31ce23c60f207a0e3ac293594d1b1402812f194 | |
| parent | 7e08d8f23cf284b95e0d6ca237633b6756898648 (diff) | |
| download | rust-681e6dd40d5882465f74eebf2f1802c76b0df063.tar.gz rust-681e6dd40d5882465f74eebf2f1802c76b0df063.zip | |
Fix using the #[]-style attribute for unused imports
| -rw-r--r-- | src/librustc/middle/resolve.rs | 34 | ||||
| -rw-r--r-- | src/test/compile-fail/unused-imports-warn.rs | 7 |
2 files changed, 19 insertions, 22 deletions
diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs index d087112687d..7058f802bc4 100644 --- a/src/librustc/middle/resolve.rs +++ b/src/librustc/middle/resolve.rs @@ -19,6 +19,7 @@ use metadata::cstore::find_extern_mod_stmt_cnum; use metadata::decoder::{def_like, dl_def, dl_field, dl_impl}; use middle::lang_items::LanguageItems; use middle::lint::{deny, allow, forbid, level, unused_imports, warn}; +use middle::lint::{get_lint_level, get_lint_settings_level}; use middle::pat_util::{pat_bindings}; use core::cmp; @@ -508,16 +509,6 @@ pub impl Module { } } -pub fn unused_import_lint_level(session: Session) -> level { - for session.opts.lint_opts.each |lint_option_pair| { - let (lint_type, lint_level) = *lint_option_pair; - if lint_type == unused_imports { - return lint_level; - } - } - return allow; -} - // Records a possibly-private type definition. pub struct TypeNsDef { privacy: Privacy, @@ -770,8 +761,6 @@ pub fn Resolver(session: Session, graph_root: graph_root, - unused_import_lint_level: unused_import_lint_level(session), - trait_info: @HashMap(), structs: @HashMap(), @@ -816,8 +805,6 @@ pub struct Resolver { graph_root: @mut NameBindings, - unused_import_lint_level: level, - trait_info: @HashMap<def_id,@HashMap<ident,()>>, structs: @HashMap<def_id,()>, @@ -5232,8 +5219,17 @@ pub impl Resolver { // resolve data structures. // + fn unused_import_lint_level(@mut self, m: @mut Module) -> level { + let settings = self.session.lint_settings; + match m.def_id { + Some(def) => get_lint_settings_level(settings, unused_imports, + def.node, def.node), + None => get_lint_level(settings.default_settings, unused_imports) + } + } + fn check_for_unused_imports_if_necessary(@mut self) { - if self.unused_import_lint_level == allow { + if self.unused_import_lint_level(self.current_module) == allow { return; } @@ -5293,7 +5289,7 @@ pub impl Resolver { import_resolution.span != dummy_sp() && import_resolution.privacy != Public { import_resolution.state.warned = true; - match self.unused_import_lint_level { + match self.unused_import_lint_level(module_) { warn => { self.session.span_warn(copy import_resolution.span, ~"unused import"); @@ -5302,11 +5298,7 @@ pub impl Resolver { self.session.span_err(copy import_resolution.span, ~"unused import"); } - allow => { - self.session.span_bug(copy import_resolution.span, - ~"shouldn't be here if lint \ - is allowed"); - } + allow => () } } } diff --git a/src/test/compile-fail/unused-imports-warn.rs b/src/test/compile-fail/unused-imports-warn.rs index 5707c18331c..7756f96b470 100644 --- a/src/test/compile-fail/unused-imports-warn.rs +++ b/src/test/compile-fail/unused-imports-warn.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags: -D unused-imports +#[deny(unused_imports)]; use cal = bar::c::cc; @@ -39,6 +39,11 @@ mod bar { use foo::Square; //~ ERROR unused import pub fn cc(p: Point) -> int { return 2 * (p.x + p.y); } } + + #[allow(unused_imports)] + mod foo { + use core::cmp::Eq; + } } fn main() { |
