@@ -39,7 +39,6 @@ use std::cell::RefCell;
3939use std:: cmp;
4040use std:: default:: Default as StdDefault ;
4141use std:: mem;
42- use syntax:: ast_util:: { self , IdVisitingOperation } ;
4342use syntax:: attr:: { self , AttrMetaMethods } ;
4443use syntax:: codemap:: Span ;
4544use syntax:: errors:: DiagnosticBuilder ;
@@ -48,7 +47,7 @@ use syntax::ast;
4847use syntax:: attr:: ThinAttributesExt ;
4948use hir;
5049use hir:: intravisit as hir_visit;
51- use hir:: intravisit:: IdVisitor ;
50+ use hir:: intravisit:: { IdVisitor , IdVisitingOperation } ;
5251use syntax:: visit as ast_visit;
5352
5453/// Information about the registered lints.
@@ -654,16 +653,6 @@ impl<'a> EarlyContext<'a> {
654653 level_stack : vec ! [ ] ,
655654 }
656655 }
657-
658- fn visit_ids < F > ( & mut self , f : F )
659- where F : FnOnce ( & mut ast_util:: IdVisitor < EarlyContext > )
660- {
661- let mut v = ast_util:: IdVisitor {
662- operation : self ,
663- visited_outermost : false ,
664- } ;
665- f ( & mut v) ;
666- }
667656}
668657
669658impl < ' a , ' tcx > LateContext < ' a , ' tcx > {
@@ -928,7 +917,6 @@ impl<'a, 'v> ast_visit::Visitor<'v> for EarlyContext<'a> {
928917 fn visit_item ( & mut self , it : & ast:: Item ) {
929918 self . with_lint_attrs ( & it. attrs , |cx| {
930919 run_lints ! ( cx, check_item, early_passes, it) ;
931- cx. visit_ids ( |v| v. visit_item ( it) ) ;
932920 ast_visit:: walk_item ( cx, it) ;
933921 run_lints ! ( cx, check_item_post, early_passes, it) ;
934922 } )
@@ -1042,7 +1030,6 @@ impl<'a, 'v> ast_visit::Visitor<'v> for EarlyContext<'a> {
10421030 fn visit_trait_item ( & mut self , trait_item : & ast:: TraitItem ) {
10431031 self . with_lint_attrs ( & trait_item. attrs , |cx| {
10441032 run_lints ! ( cx, check_trait_item, early_passes, trait_item) ;
1045- cx. visit_ids ( |v| v. visit_trait_item ( trait_item) ) ;
10461033 ast_visit:: walk_trait_item ( cx, trait_item) ;
10471034 run_lints ! ( cx, check_trait_item_post, early_passes, trait_item) ;
10481035 } ) ;
@@ -1051,7 +1038,6 @@ impl<'a, 'v> ast_visit::Visitor<'v> for EarlyContext<'a> {
10511038 fn visit_impl_item ( & mut self , impl_item : & ast:: ImplItem ) {
10521039 self . with_lint_attrs ( & impl_item. attrs , |cx| {
10531040 run_lints ! ( cx, check_impl_item, early_passes, impl_item) ;
1054- cx. visit_ids ( |v| v. visit_impl_item ( impl_item) ) ;
10551041 ast_visit:: walk_impl_item ( cx, impl_item) ;
10561042 run_lints ! ( cx, check_impl_item_post, early_passes, impl_item) ;
10571043 } ) ;
@@ -1099,18 +1085,6 @@ impl<'a, 'tcx> IdVisitingOperation for LateContext<'a, 'tcx> {
10991085 }
11001086 }
11011087}
1102- impl < ' a > IdVisitingOperation for EarlyContext < ' a > {
1103- fn visit_id ( & mut self , id : ast:: NodeId ) {
1104- match self . sess . lints . borrow_mut ( ) . remove ( & id) {
1105- None => { }
1106- Some ( lints) => {
1107- for ( lint_id, span, msg) in lints {
1108- self . span_lint ( lint_id. lint , span, & msg[ ..] )
1109- }
1110- }
1111- }
1112- }
1113- }
11141088
11151089// This lint pass is defined here because it touches parts of the `LateContext`
11161090// that we don't want to expose. It records the lint level at certain AST
@@ -1292,11 +1266,12 @@ pub fn check_ast_crate(sess: &Session, krate: &ast::Crate) {
12921266
12931267 // Visit the whole crate.
12941268 cx. with_lint_attrs ( & krate. attrs , |cx| {
1295- cx. visit_id ( ast:: CRATE_NODE_ID ) ;
1296- cx. visit_ids ( |v| {
1297- v. visited_outermost = true ;
1298- ast_visit:: walk_crate ( v, krate) ;
1299- } ) ;
1269+ // Lints may be assigned to the whole crate.
1270+ if let Some ( lints) = cx. sess . lints . borrow_mut ( ) . remove ( & ast:: CRATE_NODE_ID ) {
1271+ for ( lint_id, span, msg) in lints {
1272+ cx. span_lint ( lint_id. lint , span, & msg[ ..] )
1273+ }
1274+ }
13001275
13011276 // since the root module isn't visited as an item (because it isn't an
13021277 // item), warn for it here.
0 commit comments