swc-project/swc · error · swc_ecma_parser::error::Error
An expression should follow '...'
Error message
An expression should follow '...'
What it means
Parser error from parse_expr_or_spread (reached via parse_paren_expr_or_arrow_fn): after '...' in a parenthesized argument list the required AssignmentExpression failed to parse, so the spread is missing its expression operand.
Source
Thrown at crates/swc_ecma_parser/src/parser/expr.rs:55
.into());
}
Ok(expr)
}
/// AssignmentExpression[+In, ?Yield, ?Await]
/// ...AssignmentExpression[+In, ?Yield, ?Await]
#[inline(always)]
fn parse_expr_or_spread(&mut self) -> PResult<ExprOrSpread> {
trace_cur!(self, parse_expr_or_spread);
if self.input().cur() == Token::DotDotDot {
self.bump();
let start = self.input().prev_span().lo;
let spread_span = self.span(start);
let spread = Some(spread_span);
self.allow_in_expr(Self::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()
.map(|expr| ExprOrSpread { spread: None, expr })
}
}
///`parseMaybeAssign` (overridden)
#[cfg_attr(
all(debug_assertions, feature = "tracing-spans"),View on GitHub (pinned to 5176682b65)
Solutions
- Supply an expression after '...', e.g. fn(...rest) or f(...arr)
- Delete the dangling '...'
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/swc_ecma_parser/src/parser/expr.rs:55 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of swc-project/swc@5176682b65 (2026-08-17).
Data as JSON: /api/errors/d3745f3abfc7a03d.
Report an issue: GitHub.