{"record":{"id":"d3745f3abfc7a03d","repo":"swc-project/swc","slug":"an-expression-should-follow-d3745f","errorCode":null,"errorMessage":"An expression should follow '...'","messagePattern":"An expression should follow '\\.\\.\\.'","errorType":"exception","errorClass":"swc_ecma_parser::error::Error","httpStatus":null,"severity":"error","filePath":"crates/swc_ecma_parser/src/parser/expr.rs","lineNumber":55,"sourceCode":"            .into());\n        }\n\n        Ok(expr)\n    }\n\n    /// AssignmentExpression[+In, ?Yield, ?Await]\n    /// ...AssignmentExpression[+In, ?Yield, ?Await]\n    #[inline(always)]\n    fn parse_expr_or_spread(&mut self) -> PResult<ExprOrSpread> {\n        trace_cur!(self, parse_expr_or_spread);\n        if self.input().cur() == Token::DotDotDot {\n            self.bump();\n            let start = self.input().prev_span().lo;\n            let spread_span = self.span(start);\n            let spread = Some(spread_span);\n            self.allow_in_expr(Self::parse_assignment_expr)\n                .map_err(|err| {\n                    Error::new(\n                        err.span(),\n                        SyntaxError::WithLabel {\n                            inner: Box::new(err),\n                            span: spread_span,\n                            note: \"An expression should follow '...'\",\n                        },\n                    )\n                })\n                .map(|expr| ExprOrSpread { spread, expr })\n        } else {\n            self.parse_assignment_expr()\n                .map(|expr| ExprOrSpread { spread: None, expr })\n        }\n    }\n\n    ///`parseMaybeAssign` (overridden)\n    #[cfg_attr(\n        all(debug_assertions, feature = \"tracing-spans\"),","sourceCodeStart":37,"sourceCodeEnd":73,"githubUrl":"https://github.com/swc-project/swc/blob/5176682b65416c6b5de6b47379ae1588ea3ecb3f/crates/swc_ecma_parser/src/parser/expr.rs#L37-L73","documentation":"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.","triggerScenarios":"Thrown at crates/swc_ecma_parser/src/parser/expr.rs:55 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Supply an expression after '...', e.g. fn(...rest) or f(...arr)","Delete the dangling '...'"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5176682b65416c6b5de6b47379ae1588ea3ecb3f","analyzedAt":"2026-08-17T16:16:52.067Z","contentChangedAt":"2026-08-17T16:16:52.067Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}