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 > {
@@ -357,7 +364,8 @@ impl MetaItem {
357364 _ => path. span . hi ( ) ,
358365 } ;
359366 let span = path. span . with_hi ( hi) ;
360- Some ( MetaItem { path, kind, span } )
367+ // FIX THIS LATER
368+ Some ( MetaItem { unsafety : Unsafe :: No , path, kind, span } )
361369 }
362370}
363371
@@ -547,11 +555,12 @@ pub fn mk_doc_comment(
547555pub fn mk_attr (
548556 g : & AttrIdGenerator ,
549557 style : AttrStyle ,
558+ unsafety : Unsafe ,
550559 path : Path ,
551560 args : AttrArgs ,
552561 span : Span ,
553562) -> Attribute {
554- mk_attr_from_item ( g, AttrItem { path, args, tokens : None } , None , style, span)
563+ mk_attr_from_item ( g, AttrItem { unsafety , path, args, tokens : None } , None , style, span)
555564}
556565
557566pub fn mk_attr_from_item (
@@ -569,15 +578,22 @@ pub fn mk_attr_from_item(
569578 }
570579}
571580
572- pub fn mk_attr_word ( g : & AttrIdGenerator , style : AttrStyle , name : Symbol , span : Span ) -> Attribute {
581+ pub fn mk_attr_word (
582+ g : & AttrIdGenerator ,
583+ style : AttrStyle ,
584+ unsafety : Unsafe ,
585+ name : Symbol ,
586+ span : Span ,
587+ ) -> Attribute {
573588 let path = Path :: from_ident ( Ident :: new ( name, span) ) ;
574589 let args = AttrArgs :: Empty ;
575- mk_attr ( g, style, path, args, span)
590+ mk_attr ( g, style, unsafety , path, args, span)
576591}
577592
578593pub fn mk_attr_nested_word (
579594 g : & AttrIdGenerator ,
580595 style : AttrStyle ,
596+ unsafety : Unsafe ,
581597 outer : Symbol ,
582598 inner : Symbol ,
583599 span : Span ,
@@ -593,12 +609,13 @@ pub fn mk_attr_nested_word(
593609 delim : Delimiter :: Parenthesis ,
594610 tokens : inner_tokens,
595611 } ) ;
596- mk_attr ( g, style, path, attr_args, span)
612+ mk_attr ( g, style, unsafety , path, attr_args, span)
597613}
598614
599615pub fn mk_attr_name_value_str (
600616 g : & AttrIdGenerator ,
601617 style : AttrStyle ,
618+ unsafety : Unsafe ,
602619 name : Symbol ,
603620 val : Symbol ,
604621 span : Span ,
@@ -613,7 +630,7 @@ pub fn mk_attr_name_value_str(
613630 } ) ;
614631 let path = Path :: from_ident ( Ident :: new ( name, span) ) ;
615632 let args = AttrArgs :: Eq ( span, AttrArgsEq :: Ast ( expr) ) ;
616- mk_attr ( g, style, path, args, span)
633+ mk_attr ( g, style, unsafety , path, args, span)
617634}
618635
619636pub fn filter_by_name ( attrs : & [ Attribute ] , name : Symbol ) -> impl Iterator < Item = & Attribute > {
0 commit comments