if (parent instanceof AST_For && parent.init === node) return null;
return in_list ? List.skip : make_node(AST_EmptyStatement, node);
}
+ if (node instanceof AST_ExportDeclaration) return node;
if (node instanceof AST_Scope) return node;
if (!is_statement(node)) return node;
}));
}
var old_def;
if (!value && !(node instanceof AST_Let)) {
- if (drop_sym && var_defs[sym.id] > 1) {
+ if (parent instanceof AST_ExportDeclaration) {
+ flush();
+ } else if (drop_sym && var_defs[sym.id] > 1) {
AST_Node.info("Dropping declaration of variable {name} [{file}:{line},{col}]", template(def.name));
var_defs[sym.id]--;
sym.eliminated++;
} else if (node instanceof AST_SymbolConst) {
var def = scope.def_variable(node);
def.defun = defun;
- def.exported = exported;
+ if (exported) def.exported = true;
} else if (node instanceof AST_SymbolDefun) {
- defun.def_function(node, tw.parent()).exported = exported;
+ var def = defun.def_function(node, tw.parent());
+ if (exported) def.exported = true;
entangle(defun, scope);
} else if (node instanceof AST_SymbolFunarg) {
defun.def_variable(node);
var def = defun.def_function(node, node.name == "arguments" ? undefined : defun);
if (options.ie8) def.defun = defun.parent_scope.resolve();
} else if (node instanceof AST_SymbolLet) {
- scope.def_variable(node).exported = exported;
+ var def = scope.def_variable(node);
+ if (exported) def.exported = true;
} else if (node instanceof AST_SymbolVar) {
- defun.def_variable(node, node instanceof AST_SymbolImport ? undefined : null).exported = exported;
+ var def = defun.def_variable(node, node instanceof AST_SymbolImport ? undefined : null);
+ if (exported) def.exported = true;
entangle(defun, scope);
}