diff --git a/lib/compress.js b/lib/compress.js index 0d6aae80..6f80b25e 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -2021,7 +2021,7 @@ merge(Compressor.prototype, { var tw = new TreeWalker(function(node, descend){ if (node !== self) { if (node instanceof AST_Defun || node instanceof AST_DefClass) { - if (!drop_funcs && scope === self) { + if ((!drop_funcs || tw.parent() instanceof AST_Export) && scope === self) { var node_def = node.name.definition(); if (node_def.global && !(node_def.id in in_use_ids)) { in_use_ids[node_def.id] = true; diff --git a/test/compress/issue-2001.js b/test/compress/issue-2001.js index 90493aed..80037b91 100644 --- a/test/compress/issue-2001.js +++ b/test/compress/issue-2001.js @@ -133,3 +133,35 @@ export_mangle_6: { } expect_exact: "export let foo=1;" } + +export_toplevel_1: { + options = { + toplevel: true, + unused: true, + } + input: { + function f(){} + export function g(){}; + export default function h(){}; + } + expect: { + export function g(){}; + export default function(){}; + } +} + +export_toplevel_2: { + options = { + toplevel: true, + unused: true, + } + input: { + class A {} + export class B {}; + export default class C {}; + } + expect: { + export class B {}; + export default class C {}; + } +}