diff --git a/crates/swc_ecma_parser/src/parser/expr.rs b/crates/swc_ecma_parser/src/parser/expr.rs index d01813852963..bc46697b1568 100644 --- a/crates/swc_ecma_parser/src/parser/expr.rs +++ b/crates/swc_ecma_parser/src/parser/expr.rs @@ -746,9 +746,20 @@ impl Parser { let start = cur_pos!(self); if eat!(self, "...") { - let spread = Some(span!(self, start)); + let spread_span = span!(self, start); + let spread = Some(spread_span); self.include_in_expr(true) .parse_assignment_expr() + .map_err(|err| { + Error::new( + err.span(), + SyntaxError::WithLabel { + inner: Box::new(err), + span: spread_span, + note: "An expression should follow '...'", + }, + ) + }) .map(|expr| ExprOrSpread { spread, expr }) } else { self.parse_assignment_expr()