From 0b3182911a9cd28d8e76efcc34391413607fd781 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Tue, 31 Oct 2017 20:37:16 -0700 Subject: [PATCH] Avoid node duplication to fix spread bug with import. (#6657) --- packages/babel-plugin-transform-spread/src/index.js | 2 +- .../test/fixtures/regression/6647/actual.js | 2 ++ .../test/fixtures/regression/6647/expected.js | 5 +++++ .../test/fixtures/regression/6647/options.json | 3 +++ 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/regression/6647/actual.js create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/regression/6647/expected.js create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/regression/6647/options.json diff --git a/packages/babel-plugin-transform-spread/src/index.js b/packages/babel-plugin-transform-spread/src/index.js index a0d434baaa..6b15451c93 100644 --- a/packages/babel-plugin-transform-spread/src/index.js +++ b/packages/babel-plugin-transform-spread/src/index.js @@ -105,7 +105,7 @@ export default function({ types: t }, options) { callee.object = t.assignmentExpression("=", temp, callee.object); contextLiteral = temp; } else { - contextLiteral = callee.object; + contextLiteral = t.cloneDeep(callee.object); } t.appendToMemberExpression(callee, t.identifier("apply")); } else { diff --git a/packages/babel-plugin-transform-spread/test/fixtures/regression/6647/actual.js b/packages/babel-plugin-transform-spread/test/fixtures/regression/6647/actual.js new file mode 100644 index 0000000000..3338732a60 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/regression/6647/actual.js @@ -0,0 +1,2 @@ +import a from 'a'; +a.preview(...c); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/regression/6647/expected.js b/packages/babel-plugin-transform-spread/test/fixtures/regression/6647/expected.js new file mode 100644 index 0000000000..e39754ba7b --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/regression/6647/expected.js @@ -0,0 +1,5 @@ +"use strict"; + +var _a = babelHelpers.interopRequireDefault(require("a")); + +_a.default.preview.apply(_a.default, babelHelpers.toConsumableArray(c)); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/regression/6647/options.json b/packages/babel-plugin-transform-spread/test/fixtures/regression/6647/options.json new file mode 100644 index 0000000000..e9934ced59 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/regression/6647/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["external-helpers", "transform-spread", "transform-modules-commonjs"] +}