about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorJeffrey Seyfried <jeffrey.seyfried@gmail.com>2016-11-15 07:37:10 +0000
committerJeffrey Seyfried <jeffrey.seyfried@gmail.com>2016-11-20 12:36:30 +0000
commite97686d048141d8a514337531f72f9471bc7c424 (patch)
treeab28bcc9e28be5186cf898f7bfade44fc4e500cc /src/libsyntax/parse
parent4b9b0d3474ec64133fe797d8fcf8a03c803bac8a (diff)
downloadrust-e97686d048141d8a514337531f72f9471bc7c424.tar.gz
rust-e97686d048141d8a514337531f72f9471bc7c424.zip
Move `MetaItemKind`'s `Name` to a field of `MetaItem`.
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/attr.rs26
1 files changed, 9 insertions, 17 deletions
diff --git a/src/libsyntax/parse/attr.rs b/src/libsyntax/parse/attr.rs
index c72c4646a23..f6405807a25 100644
--- a/src/libsyntax/parse/attr.rs
+++ b/src/libsyntax/parse/attr.rs
@@ -227,23 +227,15 @@ impl<'a> Parser<'a> {
 
         let lo = self.span.lo;
         let ident = self.parse_ident()?;
-        match self.token {
-            token::Eq => {
-                self.bump();
-                let lit = self.parse_unsuffixed_lit()?;
-                let hi = self.prev_span.hi;
-                Ok(P(spanned(lo, hi, ast::MetaItemKind::NameValue(ident.name, lit))))
-            }
-            token::OpenDelim(token::Paren) => {
-                let inner_items = self.parse_meta_seq()?;
-                let hi = self.prev_span.hi;
-                Ok(P(spanned(lo, hi, ast::MetaItemKind::List(ident.name, inner_items))))
-            }
-            _ => {
-                let hi = self.prev_span.hi;
-                Ok(P(spanned(lo, hi, ast::MetaItemKind::Word(ident.name))))
-            }
-        }
+        let node = if self.eat(&token::Eq) {
+            ast::MetaItemKind::NameValue(self.parse_unsuffixed_lit()?)
+        } else if self.token == token::OpenDelim(token::Paren) {
+            ast::MetaItemKind::List(self.parse_meta_seq()?)
+        } else {
+            ast::MetaItemKind::Word
+        };
+        let hi = self.prev_span.hi;
+        Ok(P(ast::MetaItem { name: ident.name, node: node, span: mk_sp(lo, hi) }))
     }
 
     /// matches meta_item_inner : (meta_item | UNSUFFIXED_LIT) ;