File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2359,6 +2359,7 @@ protected List<Expression> toAssignableList(List<Expression> exprList, boolean i
23592359 } else if (last != null && last instanceof SpreadElement ) {
23602360 Expression arg = ((SpreadElement ) last ).getArgument ();
23612361 arg = (Expression ) this .toAssignable (arg , isBinding );
2362+ if (!(arg instanceof IPattern )) this .unexpected (arg .getLoc ().getStart ());
23622363 exprList .set (end - 1 , last = new RestElement (last .getLoc (), arg ));
23632364 --end ;
23642365 }
Original file line number Diff line number Diff line change 11package com .semmle .js .extractor .test ;
22
3+ import com .semmle .jcorn .CustomParser ;
34import com .semmle .jcorn .Options ;
45import com .semmle .jcorn .Parser ;
6+ import com .semmle .jcorn .SyntaxError ;
57import com .semmle .util .io .WholeIO ;
68import com .semmle .util .tests .TestPaths ;
79import java .io .File ;
810import java .nio .charset .StandardCharsets ;
11+ import org .junit .Assert ;
912import org .junit .Test ;
1013
1114public class RobustnessTests {
@@ -30,4 +33,15 @@ public void permissiveDestructuringTest() {
3033 + "({ method(...{ value },) {} });\n " ;
3134 new Parser (new Options (), src , 0 ).parse ();
3235 }
36+
37+ @ Test
38+ public void parenthesizedRestParameterTest () {
39+ try {
40+ new CustomParser (new Options ().preserveParens (true ), "async(...(x)) => x" , 0 )
41+ .parse ();
42+ Assert .fail ("Expected syntax error, but parsing succeeded." );
43+ } catch (SyntaxError expected ) {
44+ Assert .assertEquals ("Unexpected token (1:9)" , expected .getMessage ());
45+ }
46+ }
3347}
You can’t perform that action at this time.
0 commit comments