aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_parser/src/grammar/expressions.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_parser/src/grammar/expressions.rs')
-rw-r--r--crates/ra_parser/src/grammar/expressions.rs38
1 files changed, 19 insertions, 19 deletions
diff --git a/crates/ra_parser/src/grammar/expressions.rs b/crates/ra_parser/src/grammar/expressions.rs
index 855418f1c..30036eb46 100644
--- a/crates/ra_parser/src/grammar/expressions.rs
+++ b/crates/ra_parser/src/grammar/expressions.rs
@@ -46,7 +46,7 @@ pub(crate) fn block(p: &mut Parser) {
46pub(crate) fn naked_block(p: &mut Parser) { 46pub(crate) fn naked_block(p: &mut Parser) {
47 assert!(p.at(T!['{'])); 47 assert!(p.at(T!['{']));
48 let m = p.start(); 48 let m = p.start();
49 p.bump(); 49 p.bump_any();
50 expr_block_contents(p); 50 expr_block_contents(p);
51 p.expect(T!['}']); 51 p.expect(T!['}']);
52 m.complete(p, BLOCK); 52 m.complete(p, BLOCK);
@@ -153,7 +153,7 @@ pub(super) fn stmt(p: &mut Parser, with_semi: StmtWithSemi) {
153 // } 153 // }
154 fn let_stmt(p: &mut Parser, m: Marker, with_semi: StmtWithSemi) { 154 fn let_stmt(p: &mut Parser, m: Marker, with_semi: StmtWithSemi) {
155 assert!(p.at(T![let])); 155 assert!(p.at(T![let]));
156 p.bump(); 156 p.bump_any();
157 patterns::pattern(p); 157 patterns::pattern(p);
158 if p.at(T![:]) { 158 if p.at(T![:]) {
159 types::ascription(p); 159 types::ascription(p);
@@ -198,7 +198,7 @@ pub(crate) fn expr_block_contents(p: &mut Parser) {
198 // } 198 // }
199 199
200 if p.at(T![;]) { 200 if p.at(T![;]) {
201 p.bump(); 201 p.bump_any();
202 continue; 202 continue;
203 } 203 }
204 204
@@ -309,7 +309,7 @@ fn expr_bp(
309 } 309 }
310 let m = lhs.precede(p); 310 let m = lhs.precede(p);
311 match op { 311 match op {
312 Op::Simple => p.bump(), 312 Op::Simple => p.bump_any(),
313 Op::Composite(kind, n) => { 313 Op::Composite(kind, n) => {
314 p.bump_compound(kind, n); 314 p.bump_compound(kind, n);
315 } 315 }
@@ -338,7 +338,7 @@ fn lhs(
338 // } 338 // }
339 T![&] => { 339 T![&] => {
340 m = p.start(); 340 m = p.start();
341 p.bump(); 341 p.bump_any();
342 p.eat(T![mut]); 342 p.eat(T![mut]);
343 REF_EXPR 343 REF_EXPR
344 } 344 }
@@ -350,14 +350,14 @@ fn lhs(
350 // } 350 // }
351 T![*] | T![!] | T![-] => { 351 T![*] | T![!] | T![-] => {
352 m = p.start(); 352 m = p.start();
353 p.bump(); 353 p.bump_any();
354 PREFIX_EXPR 354 PREFIX_EXPR
355 } 355 }
356 // test full_range_expr 356 // test full_range_expr
357 // fn foo() { xs[..]; } 357 // fn foo() { xs[..]; }
358 T![..] | T![..=] => { 358 T![..] | T![..=] => {
359 m = p.start(); 359 m = p.start();
360 p.bump(); 360 p.bump_any();
361 if p.at_ts(EXPR_FIRST) { 361 if p.at_ts(EXPR_FIRST) {
362 expr_bp(p, r, 2, dollar_lvl); 362 expr_bp(p, r, 2, dollar_lvl);
363 } 363 }
@@ -410,8 +410,8 @@ fn postfix_expr(
410 // x.0().await?.hello(); 410 // x.0().await?.hello();
411 // } 411 // }
412 let m = lhs.precede(p); 412 let m = lhs.precede(p);
413 p.bump(); 413 p.bump_any();
414 p.bump(); 414 p.bump_any();
415 m.complete(p, AWAIT_EXPR) 415 m.complete(p, AWAIT_EXPR)
416 } 416 }
417 T![.] => field_expr(p, lhs), 417 T![.] => field_expr(p, lhs),
@@ -419,7 +419,7 @@ fn postfix_expr(
419 // fn foo() { let x = 1..; } 419 // fn foo() { let x = 1..; }
420 T![..] | T![..=] if !EXPR_FIRST.contains(p.nth(1)) => { 420 T![..] | T![..=] if !EXPR_FIRST.contains(p.nth(1)) => {
421 let m = lhs.precede(p); 421 let m = lhs.precede(p);
422 p.bump(); 422 p.bump_any();
423 m.complete(p, RANGE_EXPR) 423 m.complete(p, RANGE_EXPR)
424 } 424 }
425 T![?] => try_expr(p, lhs), 425 T![?] => try_expr(p, lhs),
@@ -453,7 +453,7 @@ fn call_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
453fn index_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker { 453fn index_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
454 assert!(p.at(T!['['])); 454 assert!(p.at(T!['[']));
455 let m = lhs.precede(p); 455 let m = lhs.precede(p);
456 p.bump(); 456 p.bump_any();
457 expr(p); 457 expr(p);
458 p.expect(T![']']); 458 p.expect(T![']']);
459 m.complete(p, INDEX_EXPR) 459 m.complete(p, INDEX_EXPR)
@@ -467,7 +467,7 @@ fn index_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
467fn method_call_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker { 467fn method_call_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
468 assert!(p.at(T![.]) && p.nth(1) == IDENT && (p.nth(2) == T!['('] || p.nth(2) == T![::])); 468 assert!(p.at(T![.]) && p.nth(1) == IDENT && (p.nth(2) == T!['('] || p.nth(2) == T![::]));
469 let m = lhs.precede(p); 469 let m = lhs.precede(p);
470 p.bump(); 470 p.bump_any();
471 name_ref(p); 471 name_ref(p);
472 type_args::opt_type_arg_list(p, true); 472 type_args::opt_type_arg_list(p, true);
473 if p.at(T!['(']) { 473 if p.at(T!['(']) {
@@ -493,12 +493,12 @@ fn method_call_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
493fn field_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker { 493fn field_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
494 assert!(p.at(T![.])); 494 assert!(p.at(T![.]));
495 let m = lhs.precede(p); 495 let m = lhs.precede(p);
496 p.bump(); 496 p.bump_any();
497 if p.at(IDENT) || p.at(INT_NUMBER) { 497 if p.at(IDENT) || p.at(INT_NUMBER) {
498 name_ref_or_index(p) 498 name_ref_or_index(p)
499 } else if p.at(FLOAT_NUMBER) { 499 } else if p.at(FLOAT_NUMBER) {
500 // FIXME: How to recover and instead parse INT + T![.]? 500 // FIXME: How to recover and instead parse INT + T![.]?
501 p.bump(); 501 p.bump_any();
502 } else { 502 } else {
503 p.error("expected field name or number") 503 p.error("expected field name or number")
504 } 504 }
@@ -512,7 +512,7 @@ fn field_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
512fn try_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker { 512fn try_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
513 assert!(p.at(T![?])); 513 assert!(p.at(T![?]));
514 let m = lhs.precede(p); 514 let m = lhs.precede(p);
515 p.bump(); 515 p.bump_any();
516 m.complete(p, TRY_EXPR) 516 m.complete(p, TRY_EXPR)
517} 517}
518 518
@@ -526,7 +526,7 @@ fn try_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
526fn cast_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker { 526fn cast_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
527 assert!(p.at(T![as])); 527 assert!(p.at(T![as]));
528 let m = lhs.precede(p); 528 let m = lhs.precede(p);
529 p.bump(); 529 p.bump_any();
530 // Use type_no_bounds(), because cast expressions are not 530 // Use type_no_bounds(), because cast expressions are not
531 // allowed to have bounds. 531 // allowed to have bounds.
532 types::type_no_bounds(p); 532 types::type_no_bounds(p);
@@ -536,7 +536,7 @@ fn cast_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
536fn arg_list(p: &mut Parser) { 536fn arg_list(p: &mut Parser) {
537 assert!(p.at(T!['('])); 537 assert!(p.at(T!['(']));
538 let m = p.start(); 538 let m = p.start();
539 p.bump(); 539 p.bump_any();
540 while !p.at(T![')']) && !p.at(EOF) { 540 while !p.at(T![')']) && !p.at(EOF) {
541 if !p.at_ts(EXPR_FIRST) { 541 if !p.at_ts(EXPR_FIRST) {
542 p.error("expected expression"); 542 p.error("expected expression");
@@ -585,7 +585,7 @@ fn path_expr(p: &mut Parser, r: Restrictions) -> (CompletedMarker, BlockLike) {
585pub(crate) fn record_field_list(p: &mut Parser) { 585pub(crate) fn record_field_list(p: &mut Parser) {
586 assert!(p.at(T!['{'])); 586 assert!(p.at(T!['{']));
587 let m = p.start(); 587 let m = p.start();
588 p.bump(); 588 p.bump_any();
589 while !p.at(EOF) && !p.at(T!['}']) { 589 while !p.at(EOF) && !p.at(T!['}']) {
590 match p.current() { 590 match p.current() {
591 // test record_literal_field_with_attr 591 // test record_literal_field_with_attr
@@ -602,7 +602,7 @@ pub(crate) fn record_field_list(p: &mut Parser) {
602 m.complete(p, RECORD_FIELD); 602 m.complete(p, RECORD_FIELD);
603 } 603 }
604 T![..] => { 604 T![..] => {
605 p.bump(); 605 p.bump_any();
606 expr(p); 606 expr(p);
607 } 607 }
608 T!['{'] => error_block(p, "expected a field"), 608 T!['{'] => error_block(p, "expected a field"),