]> git.lizzy.rs Git - rust.git/commitdiff
rustc: Accept commas to separate tag variants
authorPatrick Walton <pcwalton@mimiga.net>
Wed, 18 Jan 2012 00:06:32 +0000 (16:06 -0800)
committerPatrick Walton <pcwalton@mimiga.net>
Wed, 18 Jan 2012 20:27:12 +0000 (12:27 -0800)
src/comp/syntax/parse/parser.rs

index b8f55dcba963ee88d5ee2de9be23ca14487b24bd..4a4b22c3e120a2f59a2953533e9888a2d6cb6489 100644 (file)
@@ -2047,7 +2047,8 @@ fn parse_item_tag(p: parser, attrs: [ast::attribute]) -> @ast::item {
     expect(p, token::LBRACE);
     let all_nullary = true;
     let have_disr = false;
-    while p.token != token::RBRACE {
+    let done = false;
+    while !done {
         let tok = p.token;
         alt tok {
           token::IDENT(name, _) {
@@ -2075,13 +2076,21 @@ fn parse_item_tag(p: parser, attrs: [ast::attribute]) -> @ast::item {
               }
               _ {/* empty */ }
             }
-            expect(p, token::SEMI);
+
+            alt p.token {
+              token::SEMI. | token::COMMA. {
+                p.bump();
+                if p.token == token::RBRACE { done = true; }
+              }
+              token::RBRACE. { done = true; }
+              _ { /* fall through */ }
+            }
+
             p.get_id();
             let vr = {name: p.get_str(name), args: args, id: p.get_id(),
                       disr_expr: disr_expr};
             variants += [spanned(vlo, vhi, vr)];
           }
-          token::RBRACE. {/* empty */ }
           _ {
             p.fatal("expected name of variant or '}' but found '" +
                         token::to_str(p.reader, tok) + "'");