}
}
var old_def, var_defs = var_defs_by_id.get(sym.id);
- if (!def.value) {
+ if (!def.value && !(node instanceof AST_Let)) {
if (var_defs.length > 1) {
AST_Node.info("Dropping declaration of variable {name} [{file}:{line},{col}]", template(def.name));
remove(var_defs, def);
duplicated++;
}
if (side_effects.length > 0) {
- if (tail.length > 0) {
- side_effects.push(def.value);
- def.value = make_sequence(def.value, side_effects);
- } else {
+ if (tail.length == 0) {
body.push(make_node(AST_SimpleStatement, node, {
body: make_sequence(node, side_effects)
}));
+ } else if (def.value) {
+ side_effects.push(def.value);
+ def.value = make_sequence(def.value, side_effects);
+ } else {
+ def.value = make_node(AST_UnaryPrefix, def, {
+ operator: "void",
+ expression: make_sequence(def, side_effects)
+ });
}
side_effects = [];
}