| | |
| | | AST_This, |
| | | AST_Toplevel, |
| | | AST_UnaryPrefix, |
| | | AST_Undefined, |
| | | AST_Var, |
| | | AST_VarDef, |
| | | |
| | |
| | | _NOINLINE, |
| | | _PURE, |
| | | } from "../ast.js"; |
| | | import { make_node, has_annotation } from "../utils/index.js"; |
| | | import { make_node, make_void_0, has_annotation } from "../utils/index.js"; |
| | | import "../size.js"; |
| | | |
| | | import "./evaluate.js"; |
| | |
| | | if (returned) { |
| | | returned = returned.clone(true); |
| | | } else { |
| | | returned = make_node(AST_Undefined, self); |
| | | returned = make_void_0(self); |
| | | } |
| | | const args = self.args.concat(returned); |
| | | return make_sequence(self, args).optimize(compressor); |
| | |
| | | && returned.name === fn.argnames[0].name |
| | | ) { |
| | | const replacement = |
| | | (self.args[0] || make_node(AST_Undefined)).optimize(compressor); |
| | | (self.args[0] || make_void_0()).optimize(compressor); |
| | | |
| | | let parent; |
| | | if ( |
| | |
| | | |
| | | const can_drop_this_call = is_regular_func && compressor.option("side_effects") && fn.body.every(is_empty); |
| | | if (can_drop_this_call) { |
| | | var args = self.args.concat(make_node(AST_Undefined, self)); |
| | | var args = self.args.concat(make_void_0(self)); |
| | | return make_sequence(self, args).optimize(compressor); |
| | | } |
| | | |
| | |
| | | return self; |
| | | |
| | | function return_value(stat) { |
| | | if (!stat) return make_node(AST_Undefined, self); |
| | | if (!stat) return make_void_0(self); |
| | | if (stat instanceof AST_Return) { |
| | | if (!stat.value) return make_node(AST_Undefined, self); |
| | | if (!stat.value) return make_void_0(self); |
| | | return stat.value.clone(true); |
| | | } |
| | | if (stat instanceof AST_SimpleStatement) { |
| | |
| | | } else { |
| | | var symbol = make_node(AST_SymbolVar, name, name); |
| | | name.definition().orig.push(symbol); |
| | | if (!value && in_loop) value = make_node(AST_Undefined, self); |
| | | if (!value && in_loop) value = make_void_0(self); |
| | | append_var(decls, expressions, symbol, value); |
| | | } |
| | | } |
| | |
| | | operator: "=", |
| | | logical: false, |
| | | left: sym, |
| | | right: make_node(AST_Undefined, name) |
| | | right: make_void_0(name), |
| | | })); |
| | | } |
| | | } |