From 3e2f4e42937cb6e6855df94e424b55ed102af44d Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 17 Dec 2019 12:11:01 +0100 Subject: Improve recovery for incomplete lambdas --- crates/ra_parser/src/grammar/expressions/atom.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (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 f06191963..09f0a2d98 100644 --- a/crates/ra_parser/src/grammar/expressions/atom.rs +++ b/crates/ra_parser/src/grammar/expressions/atom.rs @@ -248,7 +248,12 @@ fn lambda_expr(p: &mut Parser) -> CompletedMarker { p.error("expected `{`"); } } - expr(p); + + if p.at_ts(EXPR_FIRST) { + expr(p); + } else { + p.error("expected expression"); + } m.complete(p, LAMBDA_EXPR) } -- cgit v1.2.3 From 5c3c2b869085a26187c0f7c7bcd4ee58bc1075a9 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 19 Dec 2019 14:43:19 +0100 Subject: Fix parsing of interpolated expressions --- crates/ra_parser/src/grammar/expressions/atom.rs | 1 + 1 file changed, 1 insertion(+) (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 09f0a2d98..6f5545a83 100644 --- a/crates/ra_parser/src/grammar/expressions/atom.rs +++ b/crates/ra_parser/src/grammar/expressions/atom.rs @@ -43,6 +43,7 @@ pub(super) const ATOM_EXPR_FIRST: TokenSet = T!['('], T!['{'], T!['['], + L_DOLLAR, T![|], T![move], T![box], -- cgit v1.2.3 From 0ed8ce096d3ae9ee4027ab4723958a021ef24194 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 19 Dec 2019 17:13:08 +0100 Subject: Touch up TokenSet a bit --- crates/ra_parser/src/grammar/expressions/atom.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (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 6f5545a83..4ac1d6334 100644 --- a/crates/ra_parser/src/grammar/expressions/atom.rs +++ b/crates/ra_parser/src/grammar/expressions/atom.rs @@ -444,7 +444,7 @@ fn match_arm(p: &mut Parser) -> BlockLike { // } attributes::outer_attributes(p); - patterns::pattern_list_r(p, TokenSet::empty()); + patterns::pattern_list_r(p, TokenSet::EMPTY); if p.at(T![if]) { match_guard(p); } -- cgit v1.2.3