diff --git a/packages/babel-plugin-transform-destructuring/src/index.js b/packages/babel-plugin-transform-destructuring/src/index.js index d42c2bfc7a..50e0f405bc 100644 --- a/packages/babel-plugin-transform-destructuring/src/index.js +++ b/packages/babel-plugin-transform-destructuring/src/index.js @@ -615,6 +615,7 @@ export default declare((api, options) => { if (!variableDeclarationHasPattern(node)) return; const nodeKind = node.kind; + const nodeLoc = node.loc; const nodes = []; let declar; @@ -664,6 +665,10 @@ export default declare((api, options) => { } else { // Make sure the original node kind is used for each compound declaration node.kind = nodeKind; + // Propagate the original declaration node's location + if (!node.loc) { + node.loc = nodeLoc; + } nodesOut.push(node); tail = t.isVariableDeclaration(node) ? node : null; } diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/sourcemap/declaration-loc/input.js b/packages/babel-plugin-transform-destructuring/test/fixtures/sourcemap/declaration-loc/input.js new file mode 100644 index 0000000000..049cb78200 --- /dev/null +++ b/packages/babel-plugin-transform-destructuring/test/fixtures/sourcemap/declaration-loc/input.js @@ -0,0 +1,3 @@ +const fn = (arg) => { + var [x, y] = arg; +} diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/sourcemap/declaration-loc/options.json b/packages/babel-plugin-transform-destructuring/test/fixtures/sourcemap/declaration-loc/options.json new file mode 100644 index 0000000000..84e28c07f5 --- /dev/null +++ b/packages/babel-plugin-transform-destructuring/test/fixtures/sourcemap/declaration-loc/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["transform-destructuring"] +} diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/sourcemap/declaration-loc/output.js b/packages/babel-plugin-transform-destructuring/test/fixtures/sourcemap/declaration-loc/output.js new file mode 100644 index 0000000000..d3466ab887 --- /dev/null +++ b/packages/babel-plugin-transform-destructuring/test/fixtures/sourcemap/declaration-loc/output.js @@ -0,0 +1,5 @@ +const fn = arg => { + var _arg = babelHelpers.slicedToArray(arg, 2), + x = _arg[0], + y = _arg[1]; +}; diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/sourcemap/declaration-loc/source-mappings.json b/packages/babel-plugin-transform-destructuring/test/fixtures/sourcemap/declaration-loc/source-mappings.json new file mode 100644 index 0000000000..9cf1ce3057 --- /dev/null +++ b/packages/babel-plugin-transform-destructuring/test/fixtures/sourcemap/declaration-loc/source-mappings.json @@ -0,0 +1,10 @@ +[{ + "original": { + "line": 2, + "column": 2 + }, + "generated": { + "line": 2, + "column": 2 + } +}]