From 3791491b795df689926ede59eb45d6813cc7209c Mon Sep 17 00:00:00 2001 From: kpdecker Date: Fri, 18 Dec 2015 01:13:28 -0600 Subject: [PATCH] Strip location information from import remaps Fixes https://phabricator.babeljs.io/T6851 --- .../src/index.js | 2 +- .../auxiliary-comment/overview/expected.js | 4 +- .../test/fixtures/strict/import/actual.js | 1 + .../test/fixtures/strict/import/expected.js | 3 +- .../strict/import/source-mappings.json | 43 +++++++++++++++++++ packages/babel-types/src/index.js | 10 +++++ 6 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/import/source-mappings.json diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js b/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js index ed744a5815..73e165e732 100644 --- a/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js @@ -330,7 +330,7 @@ export default function () { ])); } } - remaps[specifier.local.name] = t.memberExpression(target, specifier.imported); + remaps[specifier.local.name] = t.memberExpression(target, t.cloneWithoutLoc(specifier.imported)); } } } else { diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/auxiliary-comment/overview/expected.js b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/auxiliary-comment/overview/expected.js index c7b4852b07..49880b4ef2 100644 --- a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/auxiliary-comment/overview/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/auxiliary-comment/overview/expected.js @@ -26,8 +26,8 @@ var _foo5 = require("foo5"); exports. /*after*/test = test; var test = /*before*/exports. /*after*/test = 5; -/*before*/(0, _foo4. /*after*/bar)( /*before*/_foo2.default) /*after*/; +/*before*/(0, _foo4.bar)(_foo2.default) /*after*/; /* my comment */ -/*before*/_foo5. /*after*/foo; +/*before*/_foo5.foo; /*after*/ /*before*/_foo2.default; /*after*/ diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/import/actual.js b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/import/actual.js index ffb7f73072..5b84f44e66 100644 --- a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/import/actual.js +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/import/actual.js @@ -6,3 +6,4 @@ import * as foo4 from "foo"; foo; foo2; foo3; +foo3(); diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/import/expected.js b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/import/expected.js index e042c60eb4..260f28745b 100644 --- a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/import/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/import/expected.js @@ -4,4 +4,5 @@ var _foo = require("foo"); _foo.default; _foo.default; -_foo.foo3; \ No newline at end of file +_foo.foo3; +(0, _foo.foo3)(); diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/import/source-mappings.json b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/import/source-mappings.json new file mode 100644 index 0000000000..0db931042d --- /dev/null +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/import/source-mappings.json @@ -0,0 +1,43 @@ +[{ + "original": { + "line": 6, "column": 0 + }, + "generated": { + "line": 5, "column": 0 + } +},{ + "original": { + "line": 6, "column": 0 + }, + "generated": { + "line": 5, "column": 12 + } +},{ + "original": { + "line": 8, "column": 0 + }, + "generated": { + "line": 7, "column": 0 + } +},{ + "original": { + "line": 8, "column": 0 + }, + "generated": { + "line": 7, "column": 9 + } +},{ + "original": { + "line": 9, "column": 0 + }, + "generated": { + "line": 8, "column": 0 + } +},{ + "original": { + "line": 9, "column": 0 + }, + "generated": { + "line": 8, "column": 9 + } +}] diff --git a/packages/babel-types/src/index.js b/packages/babel-types/src/index.js index 50abbb4ecf..3046db78db 100644 --- a/packages/babel-types/src/index.js +++ b/packages/babel-types/src/index.js @@ -239,6 +239,16 @@ export function clone(node: Object): Object { return newNode; } +/** + * Create a shallow clone of a `node` excluding `_private` and location properties. + */ + +export function cloneWithoutLoc(node: Object): Object { + let newNode = clone(node); + delete newNode.loc; + return newNode; +} + /** * Create a deep clone of a `node` and all of it's child nodes * exluding `_private` properties.