提交 9a0e85a9 编写于 作者: P Paul Stansifer

Change "etc" syntax for record patterns from `{a:b ...}` to `{a:b, _}`.

上级 48dbee6b
......@@ -1465,10 +1465,11 @@ fn parse_pat(&parser p) -> @ast::pat {
auto etc = false;
auto first = true;
while (p.peek() != token::RBRACE) {
if (p.peek() == token::DOT) {
if (first) { first = false; }
else { expect(p, token::COMMA); }
if (p.peek() == token::UNDERSCORE) {
p.bump();
expect(p, token::DOT);
expect(p, token::DOT);
if (p.peek() != token::RBRACE) {
p.fatal("expecting }, found " +
token::to_str(p.get_reader(), p.peek()));
......@@ -1476,8 +1477,7 @@ fn parse_pat(&parser p) -> @ast::pat {
etc = true;
break;
}
if (first) { first = false; }
else { expect(p, token::COMMA); }
auto fieldname = parse_ident(p);
auto subpat;
if (p.peek() == token::COLON) {
......
......@@ -116,6 +116,7 @@ fn to_str(lexer::reader r, token t) -> str {
/* Structural symbols */
case (AT) { ret "@"; }
case (DOT) { ret "."; }
case (ELIPSIS) { ret "..."; }
case (COMMA) { ret ","; }
case (SEMI) { ret ";"; }
case (COLON) { ret ":"; }
......
......@@ -4,7 +4,7 @@
fn m(&t3 in) -> int {
alt in {
c({x: a(?m) ...}, _) { ret m; }
c({x: a(?m), _}, _) { ret m; }
c({x: b(?m), y}, ?z) { ret (m + z) as int + y; }
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册