@@ -174,6 +174,9 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
174174                Attribute :: Parsed ( AttributeKind :: MustUse  {  span,  .. } )  => { 
175175                    self . check_must_use ( hir_id,  * span,  target) 
176176                } 
177+                 Attribute :: Parsed ( AttributeKind :: NoMangle ( attr_span) )  => { 
178+                     self . check_no_mangle ( hir_id,  * attr_span,  span,  target) 
179+                 } 
177180                Attribute :: Unparsed ( attr_item)  => { 
178181                    style = Some ( attr_item. style ) ; 
179182                    match  attr. path ( ) . as_slice ( )  { 
@@ -261,7 +264,6 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
261264                        [ sym:: link,  ..]  => self . check_link ( hir_id,  attr,  span,  target) , 
262265                        [ sym:: link_name,  ..]  => self . check_link_name ( hir_id,  attr,  span,  target) , 
263266                        [ sym:: link_section,  ..]  => self . check_link_section ( hir_id,  attr,  span,  target) , 
264-                         [ sym:: no_mangle,  ..]  => self . check_no_mangle ( hir_id,  attr,  span,  target) , 
265267                        [ sym:: macro_use,  ..]  | [ sym:: macro_escape,  ..]  => { 
266268                            self . check_macro_use ( hir_id,  attr,  target) 
267269                        } 
@@ -698,6 +700,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
698700                            AttributeKind :: Deprecation  {  .. } 
699701                            | AttributeKind :: Repr  {  .. } 
700702                            | AttributeKind :: Align  {  .. } 
703+                             | AttributeKind :: NoMangle ( ..) 
701704                            | AttributeKind :: Cold ( ..) 
702705                            | AttributeKind :: MustUse  {  .. } , 
703706                        )  => { 
@@ -1952,7 +1955,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
19521955    } 
19531956
19541957    /// Checks if `#[no_mangle]` is applied to a function or static. 
1955- fn  check_no_mangle ( & self ,  hir_id :  HirId ,  attr :   & Attribute ,  span :  Span ,  target :  Target )  { 
1958+ fn  check_no_mangle ( & self ,  hir_id :  HirId ,  attr_span :   Span ,  span :  Span ,  target :  Target )  { 
19561959        match  target { 
19571960            Target :: Static  | Target :: Fn  => { } 
19581961            Target :: Method ( ..)  if  self . is_impl_item ( hir_id)  => { } 
@@ -1961,7 +1964,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
19611964            // erroneously allowed it and some crates used it accidentally, to be compatible 
19621965            // with crates depending on them, we can't throw an error here. 
19631966            Target :: Field  | Target :: Arm  | Target :: MacroDef  => { 
1964-                 self . inline_attr_str_error_with_macro_def ( hir_id,  attr . span ( ) ,  "no_mangle" ) ; 
1967+                 self . inline_attr_str_error_with_macro_def ( hir_id,  attr_span ,  "no_mangle" ) ; 
19651968            } 
19661969            // FIXME: #[no_mangle] was previously allowed on non-functions/statics, this should be an error 
19671970            // The error should specify that the item that is wrong is specifically a *foreign* fn/static 
@@ -1975,8 +1978,8 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
19751978                self . tcx . emit_node_span_lint ( 
19761979                    UNUSED_ATTRIBUTES , 
19771980                    hir_id, 
1978-                     attr . span ( ) , 
1979-                     errors:: NoMangleForeign  {  span,  attr_span :  attr . span ( ) ,  foreign_item_kind } , 
1981+                     attr_span , 
1982+                     errors:: NoMangleForeign  {  span,  attr_span,  foreign_item_kind } , 
19801983                ) ; 
19811984            } 
19821985            _ => { 
@@ -1985,7 +1988,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
19851988                self . tcx . emit_node_span_lint ( 
19861989                    UNUSED_ATTRIBUTES , 
19871990                    hir_id, 
1988-                     attr . span ( ) , 
1991+                     attr_span , 
19891992                    errors:: NoMangle  {  span } , 
19901993                ) ; 
19911994            } 
0 commit comments