support export statements (#4650)

This commit is contained in:
Alex Lam S.L
2021-02-14 20:13:54 +00:00
committed by GitHub
parent b7219ac489
commit c21f096ab8
9 changed files with 526 additions and 16 deletions

View File

@@ -173,6 +173,7 @@ Compressor.prototype = new TreeTransformer;
merge(Compressor.prototype, {
option: function(key) { return this.options[key] },
exposed: function(def) {
if (def.exported) return true;
if (def.undeclared) return true;
if (!(def.global || def.scope.resolve() instanceof AST_Toplevel)) return false;
var toplevel = this.toplevel;
@@ -5583,7 +5584,7 @@ merge(Compressor.prototype, {
if (scope === self) {
if (node instanceof AST_LambdaDefinition) {
var def = node.name.definition();
if (!drop_funcs && !(def.id in in_use_ids)) {
if ((!drop_funcs || def.exported) && !(def.id in in_use_ids)) {
in_use_ids[def.id] = true;
in_use.push(def);
}
@@ -5602,7 +5603,7 @@ merge(Compressor.prototype, {
var redef = def.redefined();
if (redef) var_defs[redef.id] = (var_defs[redef.id] || 0) + 1;
}
if (!(def.id in in_use_ids) && (!drop_vars
if (!(def.id in in_use_ids) && (!drop_vars || def.exported
|| (node instanceof AST_Const ? def.redefined() : def.const_redefs)
|| !(node instanceof AST_Var || is_safe_lexical(def)))) {
in_use_ids[def.id] = true;