aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_parser/src/grammar/expressions
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_parser/src/grammar/expressions')
-rw-r--r--crates/ra_parser/src/grammar/expressions/atom.rs14
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)