diff options
Diffstat (limited to 'crates/ra_parser/src/grammar/expressions/atom.rs')
-rw-r--r-- | crates/ra_parser/src/grammar/expressions/atom.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/crates/ra_parser/src/grammar/expressions/atom.rs b/crates/ra_parser/src/grammar/expressions/atom.rs index 4ac1d6334..700994e80 100644 --- a/crates/ra_parser/src/grammar/expressions/atom.rs +++ b/crates/ra_parser/src/grammar/expressions/atom.rs | |||
@@ -192,9 +192,8 @@ fn array_expr(p: &mut Parser) -> CompletedMarker { | |||
192 | // 1, | 192 | // 1, |
193 | // 2, | 193 | // 2, |
194 | // ]; | 194 | // ]; |
195 | attributes::outer_attributes(p); | 195 | attributes::with_outer_attributes(p, |p| expr(p).0); |
196 | 196 | ||
197 | expr(p); | ||
198 | if p.eat(T![;]) { | 197 | if p.eat(T![;]) { |
199 | expr(p); | 198 | expr(p); |
200 | p.expect(T![']']); | 199 | p.expect(T![']']); |
@@ -212,12 +211,15 @@ fn array_expr(p: &mut Parser) -> CompletedMarker { | |||
212 | // #[cfg(test)] | 211 | // #[cfg(test)] |
213 | // 2, | 212 | // 2, |
214 | // ]; | 213 | // ]; |
215 | attributes::outer_attributes(p); | 214 | if !attributes::with_outer_attributes(p, |p| { |
216 | if !p.at_ts(EXPR_FIRST) { | 215 | if !p.at_ts(EXPR_FIRST) { |
217 | p.error("expected expression"); | 216 | p.error("expected expression"); |
217 | return None; | ||
218 | } | ||
219 | expr(p).0 | ||
220 | }) { | ||
218 | break; | 221 | break; |
219 | } | 222 | } |
220 | expr(p); | ||
221 | } | 223 | } |
222 | p.expect(T![']']); | 224 | p.expect(T![']']); |
223 | m.complete(p, ARRAY_EXPR) | 225 | m.complete(p, ARRAY_EXPR) |