11//! Functions dealing with attributes and meta items.
22
3- use crate :: ast:: { AttrArgs , AttrArgsEq , AttrId , AttrItem , AttrKind , AttrStyle , AttrVec , Attribute } ;
3+ use crate :: ast:: {
4+ AttrArgs , AttrArgsEq , AttrId , AttrItem , AttrKind , AttrStyle , AttrVec , Attribute , Unsafe ,
5+ } ;
46use crate :: ast:: { DelimArgs , Expr , ExprKind , LitKind , MetaItemLit } ;
57use crate :: ast:: { MetaItem , MetaItemKind , NestedMetaItem , NormalAttr } ;
68use crate :: ast:: { Path , PathSegment , DUMMY_NODE_ID } ;
@@ -227,7 +229,12 @@ impl AttrItem {
227229 }
228230
229231 pub fn meta ( & self , span : Span ) -> Option < MetaItem > {
230- Some ( MetaItem { path : self . path . clone ( ) , kind : self . meta_kind ( ) ?, span } )
232+ Some ( MetaItem {
233+ unsafety : Unsafe :: No ,
234+ path : self . path . clone ( ) ,
235+ kind : self . meta_kind ( ) ?,
236+ span,
237+ } )
231238 }
232239
233240 pub fn meta_kind ( & self ) -> Option < MetaItemKind > {
@@ -360,7 +367,8 @@ impl MetaItem {
360367 _ => path. span . hi ( ) ,
361368 } ;
362369 let span = path. span . with_hi ( hi) ;
363- Some ( MetaItem { path, kind, span } )
370+ // FIX THIS LATER
371+ Some ( MetaItem { unsafety : Unsafe :: No , path, kind, span } )
364372 }
365373}
366374
@@ -544,11 +552,12 @@ pub fn mk_doc_comment(
544552pub fn mk_attr (
545553 g : & AttrIdGenerator ,
546554 style : AttrStyle ,
555+ unsafety : Unsafe ,
547556 path : Path ,
548557 args : AttrArgs ,
549558 span : Span ,
550559) -> Attribute {
551- mk_attr_from_item ( g, AttrItem { path, args, tokens : None } , None , style, span)
560+ mk_attr_from_item ( g, AttrItem { unsafety , path, args, tokens : None } , None , style, span)
552561}
553562
554563pub fn mk_attr_from_item (
@@ -566,15 +575,22 @@ pub fn mk_attr_from_item(
566575 }
567576}
568577
569- pub fn mk_attr_word ( g : & AttrIdGenerator , style : AttrStyle , name : Symbol , span : Span ) -> Attribute {
578+ pub fn mk_attr_word (
579+ g : & AttrIdGenerator ,
580+ style : AttrStyle ,
581+ unsafety : Unsafe ,
582+ name : Symbol ,
583+ span : Span ,
584+ ) -> Attribute {
570585 let path = Path :: from_ident ( Ident :: new ( name, span) ) ;
571586 let args = AttrArgs :: Empty ;
572- mk_attr ( g, style, path, args, span)
587+ mk_attr ( g, style, unsafety , path, args, span)
573588}
574589
575590pub fn mk_attr_nested_word (
576591 g : & AttrIdGenerator ,
577592 style : AttrStyle ,
593+ unsafety : Unsafe ,
578594 outer : Symbol ,
579595 inner : Symbol ,
580596 span : Span ,
@@ -590,12 +606,13 @@ pub fn mk_attr_nested_word(
590606 delim : Delimiter :: Parenthesis ,
591607 tokens : inner_tokens,
592608 } ) ;
593- mk_attr ( g, style, path, attr_args, span)
609+ mk_attr ( g, style, unsafety , path, attr_args, span)
594610}
595611
596612pub fn mk_attr_name_value_str (
597613 g : & AttrIdGenerator ,
598614 style : AttrStyle ,
615+ unsafety : Unsafe ,
599616 name : Symbol ,
600617 val : Symbol ,
601618 span : Span ,
@@ -610,7 +627,7 @@ pub fn mk_attr_name_value_str(
610627 } ) ;
611628 let path = Path :: from_ident ( Ident :: new ( name, span) ) ;
612629 let args = AttrArgs :: Eq ( span, AttrArgsEq :: Ast ( expr) ) ;
613- mk_attr ( g, style, path, args, span)
630+ mk_attr ( g, style, unsafety , path, args, span)
614631}
615632
616633pub fn filter_by_name ( attrs : & [ Attribute ] , name : Symbol ) -> impl Iterator < Item = & Attribute > {
0 commit comments