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 } ;
@@ -238,7 +240,12 @@ impl AttrItem {
238240 }
239241
240242 pub fn meta ( & self , span : Span ) -> Option < MetaItem > {
241- Some ( MetaItem { path : self . path . clone ( ) , kind : self . meta_kind ( ) ?, span } )
243+ Some ( MetaItem {
244+ unsafety : Unsafe :: No ,
245+ path : self . path . clone ( ) ,
246+ kind : self . meta_kind ( ) ?,
247+ span,
248+ } )
242249 }
243250
244251 pub fn meta_kind ( & self ) -> Option < MetaItemKind > {
@@ -371,7 +378,8 @@ impl MetaItem {
371378 _ => path. span . hi ( ) ,
372379 } ;
373380 let span = path. span . with_hi ( hi) ;
374- Some ( MetaItem { path, kind, span } )
381+ // FIX THIS LATER
382+ Some ( MetaItem { unsafety : Unsafe :: No , path, kind, span } )
375383 }
376384}
377385
@@ -555,11 +563,12 @@ pub fn mk_doc_comment(
555563pub fn mk_attr (
556564 g : & AttrIdGenerator ,
557565 style : AttrStyle ,
566+ unsafety : Unsafe ,
558567 path : Path ,
559568 args : AttrArgs ,
560569 span : Span ,
561570) -> Attribute {
562- mk_attr_from_item ( g, AttrItem { path, args, tokens : None } , None , style, span)
571+ mk_attr_from_item ( g, AttrItem { unsafety , path, args, tokens : None } , None , style, span)
563572}
564573
565574pub fn mk_attr_from_item (
@@ -577,15 +586,22 @@ pub fn mk_attr_from_item(
577586 }
578587}
579588
580- pub fn mk_attr_word ( g : & AttrIdGenerator , style : AttrStyle , name : Symbol , span : Span ) -> Attribute {
589+ pub fn mk_attr_word (
590+ g : & AttrIdGenerator ,
591+ style : AttrStyle ,
592+ unsafety : Unsafe ,
593+ name : Symbol ,
594+ span : Span ,
595+ ) -> Attribute {
581596 let path = Path :: from_ident ( Ident :: new ( name, span) ) ;
582597 let args = AttrArgs :: Empty ;
583- mk_attr ( g, style, path, args, span)
598+ mk_attr ( g, style, unsafety , path, args, span)
584599}
585600
586601pub fn mk_attr_nested_word (
587602 g : & AttrIdGenerator ,
588603 style : AttrStyle ,
604+ unsafety : Unsafe ,
589605 outer : Symbol ,
590606 inner : Symbol ,
591607 span : Span ,
@@ -601,12 +617,13 @@ pub fn mk_attr_nested_word(
601617 delim : Delimiter :: Parenthesis ,
602618 tokens : inner_tokens,
603619 } ) ;
604- mk_attr ( g, style, path, attr_args, span)
620+ mk_attr ( g, style, unsafety , path, attr_args, span)
605621}
606622
607623pub fn mk_attr_name_value_str (
608624 g : & AttrIdGenerator ,
609625 style : AttrStyle ,
626+ unsafety : Unsafe ,
610627 name : Symbol ,
611628 val : Symbol ,
612629 span : Span ,
@@ -621,7 +638,7 @@ pub fn mk_attr_name_value_str(
621638 } ) ;
622639 let path = Path :: from_ident ( Ident :: new ( name, span) ) ;
623640 let args = AttrArgs :: Eq ( span, AttrArgsEq :: Ast ( expr) ) ;
624- mk_attr ( g, style, path, args, span)
641+ mk_attr ( g, style, unsafety , path, args, span)
625642}
626643
627644pub fn filter_by_name ( attrs : & [ Attribute ] , name : Symbol ) -> impl Iterator < Item = & Attribute > {
0 commit comments