@@ -82,6 +82,8 @@ struct AstValidator<'a> {
82
82
/// Used to ban explicit safety on foreign items when the extern block is not marked as unsafe.
83
83
extern_mod_safety : Option < Safety > ,
84
84
85
+ lint_node_id : NodeId ,
86
+
85
87
lint_buffer : & ' a mut LintBuffer ,
86
88
}
87
89
@@ -839,6 +841,8 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
839
841
self . has_proc_macro_decls = true ;
840
842
}
841
843
844
+ let previous_lint_node_id = mem:: replace ( & mut self . lint_node_id , item. id ) ;
845
+
842
846
if let Some ( ident) = item. kind . ident ( )
843
847
&& attr:: contains_name ( & item. attrs , sym:: no_mangle)
844
848
{
@@ -1128,6 +1132,8 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
1128
1132
}
1129
1133
_ => visit:: walk_item ( self , item) ,
1130
1134
}
1135
+
1136
+ self . lint_node_id = previous_lint_node_id;
1131
1137
}
1132
1138
1133
1139
fn visit_foreign_item ( & mut self , fi : & ' a ForeignItem ) {
@@ -1694,6 +1700,7 @@ pub fn check_crate(
1694
1700
outer_impl_trait_span : None ,
1695
1701
disallow_tilde_const : Some ( TildeConstReason :: Item ) ,
1696
1702
extern_mod_safety : None ,
1703
+ lint_node_id : CRATE_NODE_ID ,
1697
1704
lint_buffer : lints,
1698
1705
} ;
1699
1706
visit:: walk_crate ( & mut validator, krate) ;
0 commit comments