From 4198095a9c755fb9051292d0ac74eb92b7c5271e Mon Sep 17 00:00:00 2001 From: kzc Date: Thu, 29 Sep 2016 13:25:17 -0400 Subject: [PATCH] [ES6] fix parsing spread arguments that are expressions --- lib/parse.js | 2 +- test/compress/expansions.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/parse.js b/lib/parse.js index 442a4164..5093812f 100644 --- a/lib/parse.js +++ b/lib/parse.js @@ -2371,7 +2371,7 @@ function parse($TEXT, options) { next(); args.push(new AST_Expansion({ start: prev(), - expression: as_symbol(AST_SymbolFunarg) + expression: expression(false) })); } else { args.push(expression(false)); diff --git a/test/compress/expansions.js b/test/compress/expansions.js index a6537547..8879e67f 100644 --- a/test/compress/expansions.js +++ b/test/compress/expansions.js @@ -7,6 +7,17 @@ expand_arguments: { expect_exact: "func(a,...rest);func(...all);" } +expand_expression_arguments: { + input: { + f(...a.b); + f(...a.b()); + f(...(a)); + f(...(a.b)); + f(...a[i]); + } + expect_exact: "f(...a.b);f(...a.b());f(...a);f(...a.b);f(...a[i]);" +} + expand_parameters: { input: { (function (a, ...b){});