From dd496223f50232fe98312ee8edc89eb4b5ee3d85 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 15 Dec 2020 19:23:51 +0100 Subject: Node-ify lifetimes --- crates/parser/src/grammar/expressions/atom.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'crates/parser/src/grammar/expressions/atom.rs') diff --git a/crates/parser/src/grammar/expressions/atom.rs b/crates/parser/src/grammar/expressions/atom.rs index 31f42f161..18b63feb7 100644 --- a/crates/parser/src/grammar/expressions/atom.rs +++ b/crates/parser/src/grammar/expressions/atom.rs @@ -48,7 +48,7 @@ pub(super) const ATOM_EXPR_FIRST: TokenSet = T![try], T![loop], T![for], - LIFETIME, + LIFETIME_IDENT, ])); const EXPR_RECOVERY_SET: TokenSet = TokenSet::new(&[LET_KW, R_DOLLAR]); @@ -75,7 +75,7 @@ pub(super) fn atom_expr(p: &mut Parser, r: Restrictions) -> Option<(CompletedMar T![for] => for_expr(p, None), T![while] => while_expr(p, None), T![try] => try_block_expr(p, None), - LIFETIME if la == T![:] => { + LIFETIME_IDENT if la == T![:] => { let m = p.start(); label(p); match p.current() { @@ -275,9 +275,9 @@ fn if_expr(p: &mut Parser) -> CompletedMarker { // 'c: for x in () {} // } fn label(p: &mut Parser) { - assert!(p.at(LIFETIME) && p.nth(1) == T![:]); + assert!(p.at(LIFETIME_IDENT) && p.nth(1) == T![:]); let m = p.start(); - p.bump(LIFETIME); + lifetime(p); p.bump_any(); m.complete(p, LABEL); } @@ -501,7 +501,9 @@ fn continue_expr(p: &mut Parser) -> CompletedMarker { assert!(p.at(T![continue])); let m = p.start(); p.bump(T![continue]); - p.eat(LIFETIME); + if p.at(LIFETIME_IDENT) { + lifetime(p); + } m.complete(p, CONTINUE_EXPR) } @@ -518,7 +520,9 @@ fn break_expr(p: &mut Parser, r: Restrictions) -> CompletedMarker { assert!(p.at(T![break])); let m = p.start(); p.bump(T![break]); - p.eat(LIFETIME); + if p.at(LIFETIME_IDENT) { + lifetime(p); + } // test break_ambiguity // fn foo(){ // if break {} -- cgit v1.2.3