fix corner case in `unused` (#4767)
authorAlex Lam S.L <alexlamsl@gmail.com>
Sat, 13 Mar 2021 07:09:07 +0000 (07:09 +0000)
committerGitHub <noreply@github.com>
Sat, 13 Mar 2021 07:09:07 +0000 (15:09 +0800)
fixes #4766

lib/compress.js
test/compress/exports.js

index e56ab43..31e89ab 100644 (file)
@@ -6216,7 +6216,10 @@ merge(Compressor.prototype, {
                             });
                             body.push(defun);
                         } else {
-                            if (drop_sym && var_defs[sym.id] > 1 && sym.orig.indexOf(def.name) > sym.eliminated) {
+                            if (drop_sym
+                                && var_defs[sym.id] > 1
+                                && !(parent instanceof AST_ExportDeclaration)
+                                && sym.orig.indexOf(def.name) > sym.eliminated) {
                                 var_defs[sym.id]--;
                                 duplicated++;
                             }
index 33059bc..0fdf641 100644 (file)
@@ -464,3 +464,17 @@ issue_4761: {
     }
     expect_exact: 'export default"function"==42;'
 }
+
+issue_4766: {
+    options = {
+        unused: true,
+    }
+    input: {
+        var a = "foo";
+        export var a = "bar";
+    }
+    expect: {
+        var a = "foo";
+        export var a = "bar";
+    }
+}