diff options
Diffstat (limited to 'crates/ra_parser/src/grammar/expressions.rs')
-rw-r--r-- | crates/ra_parser/src/grammar/expressions.rs | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/crates/ra_parser/src/grammar/expressions.rs b/crates/ra_parser/src/grammar/expressions.rs index b60a2f68c..742076c1a 100644 --- a/crates/ra_parser/src/grammar/expressions.rs +++ b/crates/ra_parser/src/grammar/expressions.rs | |||
@@ -489,10 +489,8 @@ fn field_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker { | |||
489 | assert!(p.at(T![.])); | 489 | assert!(p.at(T![.])); |
490 | let m = lhs.precede(p); | 490 | let m = lhs.precede(p); |
491 | p.bump(); | 491 | p.bump(); |
492 | if p.at(IDENT) { | 492 | if p.at(IDENT) || p.at(INT_NUMBER) { |
493 | name_ref(p) | 493 | name_ref_or_index(p) |
494 | } else if p.at(INT_NUMBER) { | ||
495 | p.bump(); | ||
496 | } else if p.at(FLOAT_NUMBER) { | 494 | } else if p.at(FLOAT_NUMBER) { |
497 | // FIXME: How to recover and instead parse INT + T![.]? | 495 | // FIXME: How to recover and instead parse INT + T![.]? |
498 | p.bump(); | 496 | p.bump(); |
@@ -577,6 +575,7 @@ fn path_expr(p: &mut Parser, r: Restrictions) -> (CompletedMarker, BlockLike) { | |||
577 | // S {}; | 575 | // S {}; |
578 | // S { x, y: 32, }; | 576 | // S { x, y: 32, }; |
579 | // S { x, y: 32, ..Default::default() }; | 577 | // S { x, y: 32, ..Default::default() }; |
578 | // TupleStruct { 0: 1 }; | ||
580 | // } | 579 | // } |
581 | pub(crate) fn named_field_list(p: &mut Parser) { | 580 | pub(crate) fn named_field_list(p: &mut Parser) { |
582 | assert!(p.at(T!['{'])); | 581 | assert!(p.at(T!['{'])); |
@@ -588,10 +587,10 @@ pub(crate) fn named_field_list(p: &mut Parser) { | |||
588 | // fn main() { | 587 | // fn main() { |
589 | // S { #[cfg(test)] field: 1 } | 588 | // S { #[cfg(test)] field: 1 } |
590 | // } | 589 | // } |
591 | IDENT | T![#] => { | 590 | IDENT | INT_NUMBER | T![#] => { |
592 | let m = p.start(); | 591 | let m = p.start(); |
593 | attributes::outer_attributes(p); | 592 | attributes::outer_attributes(p); |
594 | name_ref(p); | 593 | name_ref_or_index(p); |
595 | if p.eat(T![:]) { | 594 | if p.eat(T![:]) { |
596 | expr(p); | 595 | expr(p); |
597 | } | 596 | } |