diff --git a/packages/babel-plugin-transform-merge-sibling-variables/src/index.js b/packages/babel-plugin-transform-merge-sibling-variables/src/index.js index 6c1a3766f..cc22c1887 100644 --- a/packages/babel-plugin-transform-merge-sibling-variables/src/index.js +++ b/packages/babel-plugin-transform-merge-sibling-variables/src/index.js @@ -24,9 +24,7 @@ module.exports = function({ types: t }) { return; } - init.node.declarations = init.node.declarations.concat( - firstNode.id - ); + init.pushContainer("declarations", t.variableDeclarator(firstNode.id)); body[0].replaceWith(t.assignmentExpression( "=", diff --git a/packages/babel-preset-babili/__tests__/preset-tests.js b/packages/babel-preset-babili/__tests__/preset-tests.js index a98a51e4d..ac7c5b29c 100644 --- a/packages/babel-preset-babili/__tests__/preset-tests.js +++ b/packages/babel-preset-babili/__tests__/preset-tests.js @@ -75,4 +75,23 @@ describe("preset", () => { `); expect(transform(source)).toBe(expected); }); + + it("should fix issue#402 - lifting var decl & DCE", () => { + const source = unpad(` + function a() { + if (0) { + for (var i;;) { + var something = 5; + } + } + } + a(); + `); + const expected = unpad(` + function a() {} + a(); + `); + expect(transform(source)).toBe(expected); + }); + });