about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorSeiichi Uchida <seuchida@gmail.com>2017-08-17 21:58:01 +0900
committerSeiichi Uchida <seuchida@gmail.com>2017-08-17 21:58:01 +0900
commitceb2c240a6722f2b2ba3a3612af21d943c18fd30 (patch)
tree335be79594730f8e31451b795c484041bb601861 /src/libsyntax
parentea222160d0384a0b231624e80301397874d6b21c (diff)
downloadrust-ceb2c240a6722f2b2ba3a3612af21d943c18fd30.tar.gz
rust-ceb2c240a6722f2b2ba3a3612af21d943c18fd30.zip
Include the closing paren to the span of ast::NestedMetaItem
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/attr.rs17
1 files changed, 6 insertions, 11 deletions
diff --git a/src/libsyntax/attr.rs b/src/libsyntax/attr.rs
index bca662c3363..ca87c807103 100644
--- a/src/libsyntax/attr.rs
+++ b/src/libsyntax/attr.rs
@@ -1064,26 +1064,21 @@ impl MetaItem {
             },
             _ => return None,
         };
+        let list_closing_paren_pos = tokens.peek().map(|tt| tt.span().hi);
         let node = match MetaItemKind::from_tokens(tokens) {
             Some(node) => node,
             _ => return None,
         };
-        if let Some(last_span) = node.last_span() {
-            span.hi = last_span.hi;
-        }
+        span.hi = match node {
+            MetaItemKind::NameValue(ref lit) => lit.span.hi,
+            MetaItemKind::List(..) => list_closing_paren_pos.unwrap_or(span.hi),
+            _ => span.hi,
+        };
         Some(MetaItem { name: name, span: span, node: node })
     }
 }
 
 impl MetaItemKind {
-    fn last_span(&self) -> Option<Span> {
-        match *self {
-            MetaItemKind::Word => None,
-            MetaItemKind::List(ref list) => list.last().map(NestedMetaItem::span),
-            MetaItemKind::NameValue(ref lit) => Some(lit.span),
-        }
-    }
-
     pub fn tokens(&self, span: Span) -> TokenStream {
         match *self {
             MetaItemKind::Word => TokenStream::empty(),