@@ -1064,26 +1064,21 @@ impl MetaItem {
10641064 } ,
10651065 _ => return None ,
10661066 } ;
1067+ let list_closing_paren_pos = tokens. peek ( ) . map ( |tt| tt. span ( ) . hi ) ;
10671068 let node = match MetaItemKind :: from_tokens ( tokens) {
10681069 Some ( node) => node,
10691070 _ => return None ,
10701071 } ;
1071- if let Some ( last_span) = node. last_span ( ) {
1072- span. hi = last_span. hi ;
1073- }
1072+ span. hi = match node {
1073+ MetaItemKind :: NameValue ( ref lit) => lit. span . hi ,
1074+ MetaItemKind :: List ( ..) => list_closing_paren_pos. unwrap_or ( span. hi ) ,
1075+ _ => span. hi ,
1076+ } ;
10741077 Some ( MetaItem { name : name, span : span, node : node } )
10751078 }
10761079}
10771080
10781081impl MetaItemKind {
1079- fn last_span ( & self ) -> Option < Span > {
1080- match * self {
1081- MetaItemKind :: Word => None ,
1082- MetaItemKind :: List ( ref list) => list. last ( ) . map ( NestedMetaItem :: span) ,
1083- MetaItemKind :: NameValue ( ref lit) => Some ( lit. span ) ,
1084- }
1085- }
1086-
10871082 pub fn tokens ( & self , span : Span ) -> TokenStream {
10881083 match * self {
10891084 MetaItemKind :: Word => TokenStream :: empty ( ) ,
@@ -1130,7 +1125,7 @@ impl MetaItemKind {
11301125 let mut result = Vec :: new ( ) ;
11311126 while let Some ( ..) = tokens. peek ( ) {
11321127 match NestedMetaItemKind :: from_tokens ( & mut tokens) {
1133- Some ( item) => result. push ( Spanned { span : item. span ( ) , node : item } ) ,
1128+ Some ( item) => result. push ( respan ( item. span ( ) , item) ) ,
11341129 None => return None ,
11351130 }
11361131 match tokens. next ( ) {
@@ -1163,7 +1158,7 @@ impl NestedMetaItemKind {
11631158 if let Some ( TokenTree :: Token ( span, token) ) = tokens. peek ( ) . cloned ( ) {
11641159 if let Some ( node) = LitKind :: from_token ( token) {
11651160 tokens. next ( ) ;
1166- return Some ( NestedMetaItemKind :: Literal ( Spanned { node : node , span : span } ) ) ;
1161+ return Some ( NestedMetaItemKind :: Literal ( respan ( span , node ) ) ) ;
11671162 }
11681163 }
11691164
@@ -1256,7 +1251,7 @@ pub trait HasAttrs: Sized {
12561251impl < T : HasAttrs > HasAttrs for Spanned < T > {
12571252 fn attrs ( & self ) -> & [ ast:: Attribute ] { self . node . attrs ( ) }
12581253 fn map_attrs < F : FnOnce ( Vec < ast:: Attribute > ) -> Vec < ast:: Attribute > > ( self , f : F ) -> Self {
1259- Spanned { node : self . node . map_attrs ( f) , span : self . span }
1254+ respan ( self . span , self . node . map_attrs ( f) )
12601255 }
12611256}
12621257
0 commit comments