3662: Support arbitrary discriminants r=matklad a=matklad

Closes #3661



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
bors[bot] 2020-03-20 07:51:24 +00:00 committed by GitHub
commit e0952899ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 4 deletions

View File

@ -83,12 +83,14 @@ pub(crate) fn enum_variant_list(p: &mut Parser) {
match p.current() {
T!['{'] => record_field_def_list(p),
T!['('] => tuple_field_def_list(p),
T![=] => {
p.bump(T![=]);
expressions::expr(p);
}
_ => (),
}
// test variant_discriminant
// enum E { X(i32) = 10 }
if p.eat(T![=]) {
expressions::expr(p);
}
var.complete(p, ENUM_VARIANT);
} else {
var.abandon(p);

View File

@ -0,0 +1 @@
enum E { X(i32) = 10 }

View File

@ -0,0 +1,30 @@
SOURCE_FILE@[0; 23)
ENUM_DEF@[0; 22)
ENUM_KW@[0; 4) "enum"
WHITESPACE@[4; 5) " "
NAME@[5; 6)
IDENT@[5; 6) "E"
WHITESPACE@[6; 7) " "
ENUM_VARIANT_LIST@[7; 22)
L_CURLY@[7; 8) "{"
WHITESPACE@[8; 9) " "
ENUM_VARIANT@[9; 20)
NAME@[9; 10)
IDENT@[9; 10) "X"
TUPLE_FIELD_DEF_LIST@[10; 15)
L_PAREN@[10; 11) "("
TUPLE_FIELD_DEF@[11; 14)
PATH_TYPE@[11; 14)
PATH@[11; 14)
PATH_SEGMENT@[11; 14)
NAME_REF@[11; 14)
IDENT@[11; 14) "i32"
R_PAREN@[14; 15) ")"
WHITESPACE@[15; 16) " "
EQ@[16; 17) "="
WHITESPACE@[17; 18) " "
LITERAL@[18; 20)
INT_NUMBER@[18; 20) "10"
WHITESPACE@[20; 21) " "
R_CURLY@[21; 22) "}"
WHITESPACE@[22; 23) "\n"