diff --git a/packages/plugin-remove-nested-blocks/lib/remove-nested-blocks.js b/packages/plugin-remove-nested-blocks/lib/remove-nested-blocks.js index 745e70819d..a48f2a1048 100644 --- a/packages/plugin-remove-nested-blocks/lib/remove-nested-blocks.js +++ b/packages/plugin-remove-nested-blocks/lib/remove-nested-blocks.js @@ -49,7 +49,10 @@ module.exports.filter = (path) => { const is = !isIntersect(bindings, path.parentPath); - return is && (parentPath.isBlockStatement() || parentPath.isProgram()); + if (!parentPath.isBlockStatement() && !parentPath.isProgram()) + return false; + + return is || path.container.length === 1; }; function isReturnWithoutArg(path) { diff --git a/packages/plugin-remove-nested-blocks/test/fixture/intersect-multi.js b/packages/plugin-remove-nested-blocks/test/fixture/intersect-multi.js new file mode 100644 index 0000000000..9010ce6b45 --- /dev/null +++ b/packages/plugin-remove-nested-blocks/test/fixture/intersect-multi.js @@ -0,0 +1,7 @@ +function fun1(f) { + let x1; + { + let x1 = f; + return x1; + } +} diff --git a/packages/plugin-remove-nested-blocks/test/fixture/intersect-single-fix.js b/packages/plugin-remove-nested-blocks/test/fixture/intersect-single-fix.js new file mode 100644 index 0000000000..240bfce5b6 --- /dev/null +++ b/packages/plugin-remove-nested-blocks/test/fixture/intersect-single-fix.js @@ -0,0 +1,6 @@ +let x1; + +function fun1(f) { + let x1 = f; + return x1; +} diff --git a/packages/plugin-remove-nested-blocks/test/fixture/intersect-single.js b/packages/plugin-remove-nested-blocks/test/fixture/intersect-single.js new file mode 100644 index 0000000000..f5967f6299 --- /dev/null +++ b/packages/plugin-remove-nested-blocks/test/fixture/intersect-single.js @@ -0,0 +1,7 @@ +let x1; +function fun1(f) { + { + let x1 = f; + return x1; + } +} diff --git a/packages/plugin-remove-nested-blocks/test/remove-nested-blocks.js b/packages/plugin-remove-nested-blocks/test/remove-nested-blocks.js index 84305c5cfb..3d5ace73eb 100644 --- a/packages/plugin-remove-nested-blocks/test/remove-nested-blocks.js +++ b/packages/plugin-remove-nested-blocks/test/remove-nested-blocks.js @@ -61,3 +61,13 @@ test('plugin-remove-nested-blocks: no report: return', (t) => { t.noReport('return'); t.end(); }); + +test('plugin-remove-nested-blocks: transform: intersect-single', (t) => { + t.transform('intersect-single'); + t.end(); +}); + +test('plugin-remove-nested-blocks: no report: intersect-multi', (t) => { + t.noReport('intersect-multi'); + t.end(); +});