diff options
Diffstat (limited to 'crates/ra_parser')
-rw-r--r-- | crates/ra_parser/src/grammar/expressions/atom.rs | 6 | ||||
-rw-r--r-- | crates/ra_parser/src/grammar/items.rs | 2 | ||||
-rw-r--r-- | crates/ra_parser/src/grammar/paths.rs | 2 | ||||
-rw-r--r-- | crates/ra_parser/src/parser.rs | 4 |
4 files changed, 6 insertions, 8 deletions
diff --git a/crates/ra_parser/src/grammar/expressions/atom.rs b/crates/ra_parser/src/grammar/expressions/atom.rs index b72d2e9e6..b77b683b5 100644 --- a/crates/ra_parser/src/grammar/expressions/atom.rs +++ b/crates/ra_parser/src/grammar/expressions/atom.rs | |||
@@ -230,10 +230,8 @@ fn lambda_expr(p: &mut Parser) -> CompletedMarker { | |||
230 | p.eat(T![async]); | 230 | p.eat(T![async]); |
231 | p.eat(T![move]); | 231 | p.eat(T![move]); |
232 | params::param_list_closure(p); | 232 | params::param_list_closure(p); |
233 | if opt_fn_ret_type(p) { | 233 | if opt_fn_ret_type(p) && !p.at(T!['{']) { |
234 | if !p.at(T!['{']) { | 234 | p.error("expected `{`"); |
235 | p.error("expected `{`"); | ||
236 | } | ||
237 | } | 235 | } |
238 | 236 | ||
239 | if p.at_ts(EXPR_FIRST) { | 237 | if p.at_ts(EXPR_FIRST) { |
diff --git a/crates/ra_parser/src/grammar/items.rs b/crates/ra_parser/src/grammar/items.rs index 54284c933..f8b43866c 100644 --- a/crates/ra_parser/src/grammar/items.rs +++ b/crates/ra_parser/src/grammar/items.rs | |||
@@ -21,7 +21,7 @@ use super::*; | |||
21 | // struct S; | 21 | // struct S; |
22 | pub(super) fn mod_contents(p: &mut Parser, stop_on_r_curly: bool) { | 22 | pub(super) fn mod_contents(p: &mut Parser, stop_on_r_curly: bool) { |
23 | attributes::inner_attributes(p); | 23 | attributes::inner_attributes(p); |
24 | while !p.at(EOF) && !(stop_on_r_curly && p.at(T!['}'])) { | 24 | while !(stop_on_r_curly && p.at(T!['}']) || p.at(EOF)) { |
25 | item_or_macro(p, stop_on_r_curly, ItemFlavor::Mod) | 25 | item_or_macro(p, stop_on_r_curly, ItemFlavor::Mod) |
26 | } | 26 | } |
27 | } | 27 | } |
diff --git a/crates/ra_parser/src/grammar/paths.rs b/crates/ra_parser/src/grammar/paths.rs index f5bf3d7ce..332acc1a0 100644 --- a/crates/ra_parser/src/grammar/paths.rs +++ b/crates/ra_parser/src/grammar/paths.rs | |||
@@ -94,7 +94,7 @@ fn path_segment(p: &mut Parser, mode: Mode, first: bool) { | |||
94 | 94 | ||
95 | fn opt_path_type_args(p: &mut Parser, mode: Mode) { | 95 | fn opt_path_type_args(p: &mut Parser, mode: Mode) { |
96 | match mode { | 96 | match mode { |
97 | Mode::Use => return, | 97 | Mode::Use => {} |
98 | Mode::Type => { | 98 | Mode::Type => { |
99 | // test path_fn_trait_args | 99 | // test path_fn_trait_args |
100 | // type F = Box<Fn(i32) -> ()>; | 100 | // type F = Box<Fn(i32) -> ()>; |
diff --git a/crates/ra_parser/src/parser.rs b/crates/ra_parser/src/parser.rs index 1071c46dc..76e2d4f7d 100644 --- a/crates/ra_parser/src/parser.rs +++ b/crates/ra_parser/src/parser.rs | |||
@@ -126,13 +126,13 @@ impl<'t> Parser<'t> { | |||
126 | } | 126 | } |
127 | 127 | ||
128 | fn at_composite2(&self, n: usize, k1: SyntaxKind, k2: SyntaxKind) -> bool { | 128 | fn at_composite2(&self, n: usize, k1: SyntaxKind, k2: SyntaxKind) -> bool { |
129 | let t1 = self.token_source.lookahead_nth(n + 0); | 129 | let t1 = self.token_source.lookahead_nth(n); |
130 | let t2 = self.token_source.lookahead_nth(n + 1); | 130 | let t2 = self.token_source.lookahead_nth(n + 1); |
131 | t1.kind == k1 && t1.is_jointed_to_next && t2.kind == k2 | 131 | t1.kind == k1 && t1.is_jointed_to_next && t2.kind == k2 |
132 | } | 132 | } |
133 | 133 | ||
134 | fn at_composite3(&self, n: usize, k1: SyntaxKind, k2: SyntaxKind, k3: SyntaxKind) -> bool { | 134 | fn at_composite3(&self, n: usize, k1: SyntaxKind, k2: SyntaxKind, k3: SyntaxKind) -> bool { |
135 | let t1 = self.token_source.lookahead_nth(n + 0); | 135 | let t1 = self.token_source.lookahead_nth(n); |
136 | let t2 = self.token_source.lookahead_nth(n + 1); | 136 | let t2 = self.token_source.lookahead_nth(n + 1); |
137 | let t3 = self.token_source.lookahead_nth(n + 2); | 137 | let t3 = self.token_source.lookahead_nth(n + 2); |
138 | (t1.kind == k1 && t1.is_jointed_to_next) | 138 | (t1.kind == k1 && t1.is_jointed_to_next) |