about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2016-08-18 18:31:47 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2016-09-03 13:39:34 +0300
commitf3b41c18a8dfbcfec4b2a9e8d9e6a921189e3eea (patch)
tree1d6aaf94ca46fd2e08df59767b8b2fb9c799313a /src/libsyntax
parent957971b63abbc816aebc6654dc68cf9ff15837d7 (diff)
downloadrust-f3b41c18a8dfbcfec4b2a9e8d9e6a921189e3eea.tar.gz
rust-f3b41c18a8dfbcfec4b2a9e8d9e6a921189e3eea.zip
Check fields in union patters/expressions
Make parsing of union items backward compatible
Add some tests
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/parse/parser.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 290a59cf1e5..ec9dc1bae5a 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -5957,8 +5957,10 @@ impl<'a> Parser<'a> {
                                     maybe_append(attrs, extra_attrs));
             return Ok(Some(item));
         }
-        if self.eat_keyword(keywords::Union) {
+        if self.check_keyword(keywords::Union) &&
+                self.look_ahead(1, |t| t.is_ident() && !t.is_any_keyword()) {
             // UNION ITEM
+            self.bump();
             let (ident, item_, extra_attrs) = self.parse_item_union()?;
             let last_span = self.last_span;
             let item = self.mk_item(lo,