diff --git a/packages/babel-plugin-transform-spread/src/index.js b/packages/babel-plugin-transform-spread/src/index.js index 78e741eddf34..ebee361ec52a 100644 --- a/packages/babel-plugin-transform-spread/src/index.js +++ b/packages/babel-plugin-transform-spread/src/index.js @@ -135,7 +135,7 @@ export default declare((api, options) => { if (args.length === 1 && args[0].argument.name === "arguments") { nodes = [args[0].argument]; } else { - nodes = build(args, scope); + nodes = build(args, scope, this); } const first = nodes.shift(); @@ -177,7 +177,7 @@ export default declare((api, options) => { let args = node.arguments; if (!hasSpread(args)) return; - const nodes = build(args, scope); + const nodes = build(args, scope, this); const first = nodes.shift(); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal-babel-7/input.js b/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal-babel-7/input.js new file mode 100644 index 000000000000..a4fb399c5d54 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal-babel-7/input.js @@ -0,0 +1,2 @@ +f(...[1, 2, 3]); +f(...[1, , 3]); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal-babel-7/options.json b/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal-babel-7/options.json new file mode 100644 index 000000000000..29a3f0e84167 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal-babel-7/output.js b/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal-babel-7/output.js new file mode 100644 index 000000000000..8a4d8083fea9 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal-babel-7/output.js @@ -0,0 +1,2 @@ +f.apply(void 0, [1, 2, 3]); +f.apply(void 0, babelHelpers.arrayWithoutHoles([1,, 3])); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal/input.js b/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal/input.js index 2d1a0bb71622..a4fb399c5d54 100644 --- a/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal/input.js +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal/input.js @@ -1 +1,2 @@ f(...[1, 2, 3]); +f(...[1, , 3]); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal/options.json b/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal/options.json new file mode 100644 index 000000000000..cbf6d1595427 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal/output.js b/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal/output.js index c4f511641c9a..f389234a3653 100644 --- a/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal/output.js +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/method-call-array-literal/output.js @@ -1 +1,2 @@ f.apply(void 0, [1, 2, 3]); +f.apply(void 0, babelHelpers.arrayLikeToArray([1,, 3])); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression-babel-7/input.js b/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression-babel-7/input.js new file mode 100644 index 000000000000..59ffe4e9ee8d --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression-babel-7/input.js @@ -0,0 +1,3 @@ +new Numbers(...nums); +new Numbers(1, ...nums); +new Numbers(...[1, , 3]); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression-babel-7/options.json b/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression-babel-7/options.json new file mode 100644 index 000000000000..29a3f0e84167 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression-babel-7/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression-babel-7/output.js b/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression-babel-7/output.js new file mode 100644 index 000000000000..fa942d3ef219 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression-babel-7/output.js @@ -0,0 +1,3 @@ +babelHelpers.construct(Numbers, babelHelpers.toConsumableArray(nums)); +babelHelpers.construct(Numbers, [1].concat(babelHelpers.toConsumableArray(nums))); +babelHelpers.construct(Numbers, babelHelpers.arrayWithoutHoles([1,, 3])); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression/input.js b/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression/input.js index 72800dd42be2..59ffe4e9ee8d 100644 --- a/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression/input.js +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression/input.js @@ -1,2 +1,3 @@ new Numbers(...nums); new Numbers(1, ...nums); +new Numbers(...[1, , 3]); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression/options.json b/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression/options.json new file mode 100644 index 000000000000..cbf6d1595427 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression/options.json @@ -0,0 +1,3 @@ +{ + "BABEL_8_BREAKING": true +} diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression/output.js b/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression/output.js index 34d55c27f0f1..1ad3c88c8155 100644 --- a/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression/output.js +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression/output.js @@ -1,2 +1,3 @@ babelHelpers.construct(Numbers, babelHelpers.toConsumableArray(nums)); babelHelpers.construct(Numbers, [1].concat(babelHelpers.toConsumableArray(nums))); +babelHelpers.construct(Numbers, babelHelpers.arrayLikeToArray([1,, 3]));