Skip to content

Commit e095289

Browse files
bors[bot]matklad
andauthored
Merge #3662
3662: Support arbitrary discriminants r=matklad a=matklad Closes #3661 bors r+ 🤖 Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2 parents 1878fbe + 89694ec commit e095289

File tree

3 files changed

+37
-4
lines changed

3 files changed

+37
-4
lines changed

crates/ra_parser/src/grammar/items/adt.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,14 @@ pub(crate) fn enum_variant_list(p: &mut Parser) {
8383
match p.current() {
8484
T!['{'] => record_field_def_list(p),
8585
T!['('] => tuple_field_def_list(p),
86-
T![=] => {
87-
p.bump(T![=]);
88-
expressions::expr(p);
89-
}
9086
_ => (),
9187
}
88+
89+
// test variant_discriminant
90+
// enum E { X(i32) = 10 }
91+
if p.eat(T![=]) {
92+
expressions::expr(p);
93+
}
9294
var.complete(p, ENUM_VARIANT);
9395
} else {
9496
var.abandon(p);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
enum E { X(i32) = 10 }
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
SOURCE_FILE@[0; 23)
2+
ENUM_DEF@[0; 22)
3+
ENUM_KW@[0; 4) "enum"
4+
WHITESPACE@[4; 5) " "
5+
NAME@[5; 6)
6+
IDENT@[5; 6) "E"
7+
WHITESPACE@[6; 7) " "
8+
ENUM_VARIANT_LIST@[7; 22)
9+
L_CURLY@[7; 8) "{"
10+
WHITESPACE@[8; 9) " "
11+
ENUM_VARIANT@[9; 20)
12+
NAME@[9; 10)
13+
IDENT@[9; 10) "X"
14+
TUPLE_FIELD_DEF_LIST@[10; 15)
15+
L_PAREN@[10; 11) "("
16+
TUPLE_FIELD_DEF@[11; 14)
17+
PATH_TYPE@[11; 14)
18+
PATH@[11; 14)
19+
PATH_SEGMENT@[11; 14)
20+
NAME_REF@[11; 14)
21+
IDENT@[11; 14) "i32"
22+
R_PAREN@[14; 15) ")"
23+
WHITESPACE@[15; 16) " "
24+
EQ@[16; 17) "="
25+
WHITESPACE@[17; 18) " "
26+
LITERAL@[18; 20)
27+
INT_NUMBER@[18; 20) "10"
28+
WHITESPACE@[20; 21) " "
29+
R_CURLY@[21; 22) "}"
30+
WHITESPACE@[22; 23) "\n"

0 commit comments

Comments
 (0)