From 8709753bfbf93cd29cdcec5b9e6c26e54412da7e Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Wed, 21 Jun 2017 14:22:09 +0800 Subject: [PATCH] fix `mangle` on `export` (#2133) - `export default ...` - `export` with `AST_Destructuring` fixes #2129 --- lib/scope.js | 8 +++++++- test/compress/export.js | 12 ++++++++++++ test/compress/issue-2001.js | 4 ++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/scope.js b/lib/scope.js index 2b75df82..ad941d97 100644 --- a/lib/scope.js +++ b/lib/scope.js @@ -234,8 +234,14 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options){ } function mark_export(def, level) { + if (in_destructuring) { + var i = 0; + do { + level++; + } while (tw.parent(i++) !== in_destructuring); + } var node = tw.parent(level); - def.export = node instanceof AST_Export && !node.is_default; + def.export = node instanceof AST_Export; } }); self.walk(tw); diff --git a/test/compress/export.js b/test/compress/export.js index dd807375..4b90bcff 100644 --- a/test/compress/export.js +++ b/test/compress/export.js @@ -95,3 +95,15 @@ issue_2131: { }; } } + +issue_2129: { + mangle = { + toplevel: true, + } + input: { + export const { keys } = Object; + } + expect: { + export const { keys } = Object; + } +} diff --git a/test/compress/issue-2001.js b/test/compress/issue-2001.js index a4e779ea..870bc1ec 100644 --- a/test/compress/issue-2001.js +++ b/test/compress/issue-2001.js @@ -171,7 +171,7 @@ export_mangle_2: { return one - two; }; } - expect_exact: "export default function n(n,r){return n-r};" + expect_exact: "export default function foo(n,o){return n-o};" } export_mangle_3: { @@ -207,7 +207,7 @@ export_mangle_4: { } }; } - expect_exact: "export default class n{go(n,r){return n-r+n}};" + expect_exact: "export default class C{go(n,r){return n-r+n}};" } export_mangle_5: {