From d6533994e461dac502672c77ff27c6ca08fdc092 Mon Sep 17 00:00:00 2001 From: csmoe Date: Tue, 18 Jun 2019 23:50:57 +0800 Subject: fix: box_pattern Change-Id: I45a856d74fb616d3bce33050f9e69d327186bd59 --- crates/ra_parser/src/grammar/expressions/atom.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'crates/ra_parser/src/grammar/expressions') diff --git a/crates/ra_parser/src/grammar/expressions/atom.rs b/crates/ra_parser/src/grammar/expressions/atom.rs index 725fb99f6..41be283d0 100644 --- a/crates/ra_parser/src/grammar/expressions/atom.rs +++ b/crates/ra_parser/src/grammar/expressions/atom.rs @@ -74,6 +74,7 @@ pub(super) fn atom_expr(p: &mut Parser, r: Restrictions) -> Option<(CompletedMar T![if] => if_expr(p), T![loop] => loop_expr(p, None), + T![box] => box_expr(p, None), T![for] => for_expr(p, None), T![while] => while_expr(p, None), T![try] => try_block_expr(p, None), @@ -507,3 +508,17 @@ fn try_block_expr(p: &mut Parser, m: Option) -> CompletedMarker { block(p); m.complete(p, TRY_EXPR) } + +// test box_expr +// fn foo() { +// let x = box 1i32; +// } +fn box_expr(p: &mut Parser, m: Option) -> CompletedMarker { + assert!(p.at(T![box])); + let m = m.unwrap_or_else(|| p.start()); + p.bump(); + if p.at_ts(EXPR_FIRST) { + expr(p); + } + m.complete(p, BOX_EXPR) +} -- cgit v1.2.3