@@ -19,6 +19,7 @@ use metadata::cstore::find_extern_mod_stmt_cnum;
19
19
use metadata:: decoder:: { def_like, dl_def, dl_field, dl_impl} ;
20
20
use middle:: lang_items:: LanguageItems ;
21
21
use middle:: lint:: { deny, allow, forbid, level, unused_imports, warn} ;
22
+ use middle:: lint:: { get_lint_level, get_lint_settings_level} ;
22
23
use middle:: pat_util:: { pat_bindings} ;
23
24
24
25
use core:: cmp;
@@ -508,16 +509,6 @@ pub impl Module {
508
509
}
509
510
}
510
511
511
- pub fn unused_import_lint_level(session: Session) -> level {
512
- for session.opts.lint_opts.each |lint_option_pair| {
513
- let (lint_type, lint_level) = *lint_option_pair;
514
- if lint_type == unused_imports {
515
- return lint_level;
516
- }
517
- }
518
- return allow;
519
- }
520
-
521
512
// Records a possibly-private type definition.
522
513
pub struct TypeNsDef {
523
514
privacy: Privacy,
@@ -770,8 +761,6 @@ pub fn Resolver(session: Session,
770
761
771
762
graph_root: graph_root,
772
763
773
- unused_import_lint_level: unused_import_lint_level(session),
774
-
775
764
trait_info: @HashMap(),
776
765
structs: @HashMap(),
777
766
@@ -816,8 +805,6 @@ pub struct Resolver {
816
805
817
806
graph_root: @mut NameBindings,
818
807
819
- unused_import_lint_level: level,
820
-
821
808
trait_info: @HashMap<def_id,@HashMap<ident,()>>,
822
809
structs: @HashMap<def_id,()>,
823
810
@@ -5232,8 +5219,17 @@ pub impl Resolver {
5232
5219
// resolve data structures.
5233
5220
//
5234
5221
5222
+ fn unused_import_lint_level( @mut self , m: @mut Module ) -> level {
5223
+ let settings = self . session. lint_settings;
5224
+ match m. def_id {
5225
+ Some ( def) => get_lint_settings_level( settings, unused_imports,
5226
+ def. node, def. node) ,
5227
+ None => get_lint_level( settings. default_settings, unused_imports)
5228
+ }
5229
+ }
5230
+
5235
5231
fn check_for_unused_imports_if_necessary( @mut self ) {
5236
- if self . unused_import_lint_level == allow {
5232
+ if self . unused_import_lint_level( self . current_module ) == allow {
5237
5233
return ;
5238
5234
}
5239
5235
@@ -5293,7 +5289,7 @@ pub impl Resolver {
5293
5289
import_resolution. span != dummy_sp( ) &&
5294
5290
import_resolution. privacy != Public {
5295
5291
import_resolution. state. warned = true ;
5296
- match self . unused_import_lint_level {
5292
+ match self . unused_import_lint_level( module_ ) {
5297
5293
warn => {
5298
5294
self . session. span_warn( copy import_resolution. span,
5299
5295
~"unused import") ;
@@ -5302,11 +5298,7 @@ pub impl Resolver {
5302
5298
self . session. span_err( copy import_resolution. span,
5303
5299
~"unused import") ;
5304
5300
}
5305
- allow => {
5306
- self . session. span_bug( copy import_resolution. span,
5307
- ~"shouldn' t be here if lint \
5308
- is allowed") ;
5309
- }
5301
+ allow => ( )
5310
5302
}
5311
5303
}
5312
5304
}
0 commit comments