return true;
});
def(AST_LambdaDefinition, function(tw, descend, compressor) {
- var id = this.name.definition().id;
- if (tw.defun_visited[id]) return true;
- if (tw.defun_ids[id] !== tw.safe_ids) return true;
- tw.defun_visited[id] = true;
- this.inlined = false;
+ var fn = this;
+ var def = fn.name.definition();
+ var parent = tw.parent();
+ if (parent instanceof AST_ExportDeclaration || parent instanceof AST_ExportDefault) def.single_use = false;
+ if (tw.defun_visited[def.id]) return true;
+ if (tw.defun_ids[def.id] !== tw.safe_ids) return true;
+ tw.defun_visited[def.id] = true;
+ fn.inlined = false;
push(tw);
- reset_variables(tw, compressor, this);
+ reset_variables(tw, compressor, fn);
descend();
pop(tw);
- walk_defuns(tw, this);
+ walk_defuns(tw, fn);
return true;
});
def(AST_Switch, function(tw, descend, compressor) {
}
}
if (!(sym instanceof AST_SymbolRef)) return;
- if (compressor.exposed(sym.definition())) return;
+ var def = sym.definition();
+ if (export_defaults[def.id]) return;
+ if (compressor.exposed(def)) return;
if (!can_drop_symbol(sym, nested)) return;
return sym;
};
var assign_in_use = Object.create(null);
+ var export_defaults = Object.create(null);
var find_variable = function(name) {
find_variable = compose(self, 0, noop);
return find_variable(name);
in_use.push(def);
}
if (node.extends) node.extends.walk(tw);
- var is_export = tw.parent() instanceof AST_ExportDefault;
+ var is_export = false;
+ if (tw.parent() instanceof AST_ExportDefault) {
+ is_export = true;
+ export_defaults[def.id] = true;
+ }
node.properties.forEach(function(prop) {
if (prop.key instanceof AST_Node) prop.key.walk(tw);
if (!prop.value) return;
in_use.push(def);
}
initializations.add(def.id, node);
- if (!(tw.parent() instanceof AST_ExportDefault)) return true;
+ if (tw.parent() instanceof AST_ExportDefault) {
+ export_defaults[def.id] = true;
+ } else {
+ return true;
+ }
}
if (node instanceof AST_Definitions) {
node.definitions.forEach(function(defn) {