@@ -3,7 +3,7 @@ use rustc_hir::{HirId, ItemId, ItemKind, Mod};
3
3
use rustc_lint:: { LateContext , LateLintPass , LintContext } ;
4
4
use rustc_middle:: lint:: in_external_macro;
5
5
use rustc_session:: { declare_lint_pass, declare_tool_lint} ;
6
- use rustc_span:: { sym, Span } ;
6
+ use rustc_span:: sym;
7
7
8
8
declare_clippy_lint ! {
9
9
/// ### What it does
@@ -43,7 +43,7 @@ declare_lint_pass!(ItemsAfterTestModule => [ITEMS_AFTER_TEST_MODULE]);
43
43
impl LateLintPass < ' _ > for ItemsAfterTestModule {
44
44
fn check_mod ( & mut self , cx : & LateContext < ' _ > , _: & Mod < ' _ > , _: HirId ) {
45
45
let mut was_test_mod_visited = false ;
46
- let mut test_mod_span : Option < Span > = None ;
46
+ let mut test_mod_hash : Option < u128 > = None ;
47
47
48
48
let hir = cx. tcx . hir ( ) ;
49
49
let items = hir. items ( ) . collect :: < Vec < ItemId > > ( ) ;
@@ -54,8 +54,8 @@ impl LateLintPass<'_> for ItemsAfterTestModule {
54
54
if_chain ! {
55
55
if was_test_mod_visited;
56
56
if cx. sess( ) . source_map( ) . lookup_char_pos( item. span. lo( ) ) . file. name_hash
57
- == cx . sess ( ) . source_map ( ) . lookup_char_pos ( test_mod_span . unwrap( ) . lo ( ) ) . file . name_hash ;
58
- if !matches!( item. kind, ItemKind :: Mod ( _) ) ;
57
+ == test_mod_hash . unwrap( ) ; // Will never fail
58
+ if !matches!( item. kind, ItemKind :: Mod ( _) | ItemKind :: Macro ( _ , _ ) ) ;
59
59
if !is_in_cfg_test( cx. tcx, itid. hir_id( ) ) ; // The item isn't in the testing module itself
60
60
61
61
if !in_external_macro( cx. sess( ) , item. span) ;
@@ -66,15 +66,15 @@ impl LateLintPass<'_> for ItemsAfterTestModule {
66
66
if matches ! ( item. kind, ItemKind :: Mod ( _) ) {
67
67
for attr in cx. tcx . get_attrs ( item. owner_id . to_def_id ( ) , sym:: cfg) {
68
68
if_chain ! {
69
- if attr. has_name( sym:: cfg) ;
70
- if let Some ( mitems) = attr. meta_item_list( ) ;
71
- if let [ mitem] = & * mitems;
72
- if mitem. has_name( sym:: test) ;
73
- then {
74
- was_test_mod_visited = true ;
75
- test_mod_span = Some ( item. span) ;
76
- }
77
- }
69
+ if attr. has_name( sym:: cfg) ;
70
+ if let Some ( mitems) = attr. meta_item_list( ) ;
71
+ if let [ mitem] = & * mitems;
72
+ if mitem. has_name( sym:: test) ;
73
+ then {
74
+ was_test_mod_visited = true ;
75
+ test_mod_hash = Some ( cx . sess ( ) . source_map ( ) . lookup_char_pos ( item. span. lo ( ) ) . file . name_hash ) ;
76
+ }
77
+ }
78
78
}
79
79
}
80
80
}
0 commit comments