aboutsummaryrefslogtreecommitdiff
path: root/test/compress/reduce_vars.js
AgeCommit message (Expand)Author
2017-03-27handle overlapped variable definitions (#1691)...Process variable definitions with or without assigned values against: - `arguments` - named function arguments - multiple definitions within same scope Essentially demote variable declarations with no value assignments. Also fixed invalid use of `AST_VarDef` over `arguments` - should use a member of `AST_SymbolDeclaration` instead.Alex Lam S.L
2017-03-26fix `delete` related issues in `collapse_vars` and `reduce_vars` (#1689)Alex Lam S.L
2017-03-25fix `reduce_vars` on `AST_Switch` (#1671)...Take conditional nature of switch branches into account. fixes #1670Alex Lam S.L
2017-03-19make `expect_stdout` work on Node.js 0.12 (#1623)...That particular version of Node.js has messed up error messages, so provide a version-specific workaround. Also fixed an formatting issue which would cause `expect_stdout` to fail if error message contains excerpts of input. Apply `expect_stdout` to more applicable tests.Alex Lam S.L
2017-03-16fix `hoist_vars` on `reduce_vars` (#1607)...`hoist_vars` converts variable declarations into plain assignments, which then confuses `reduce_vars` fixes #1606Alex Lam S.L
2017-03-11disallow parameter substitution for named IIFEs (#1596)...Self-referenced function has non-fixed values assigned to its parameters. Let `unused` & `!keep_fnames` do the scanning, then apply `reduce_vars` only to unnamed functions. fixes #1595Alex Lam S.L
2017-03-09fix & improve function argument compression (#1584)...- one-use function call => IIFE should take `eval()` & `arguments` into account - if unused parameter cannot be eliminated, replace it with `0` fixes #1583Alex Lam S.L
2017-03-08fix function name eliminiation (#1576)...Function expression can be assigned to a variable and be given a name. Ensure function name is the reduced variable before clearing it out. fixes #1573 fixes #1575Alex Lam S.L
2017-03-07fix deep cloning of labels (#1565)...`AST_Label.references` get `.initialize()` to `[]` every time after `.clone()` So walk down the tree to pick up the cloned `AST_LoopControl` pieces and put it back together.Alex Lam S.L
2017-03-07transform function calls to IIFEs (#1560)...- expose function body to call sites for potential optimisations - suppress substitution of variable used within `AST_Defun`Alex Lam S.L
2017-03-07avoid substitution of global variables (#1557)...- unless `toplevel` is enabled - global `const` works as beforeAlex Lam S.L
2017-03-05handle variable declaration within catch blocks (#1546)...accounts for IE8- scopingAlex Lam S.L
2017-03-03properly cover all cases of for-in loop variables (#1536)Alex Lam S.L
2017-03-03fix reference marking in for-in loops (#1535)...fixes #1533Alex Lam S.L
2017-03-02fix corner cases in `reduce_vars` (#1524)...Avoid variable substitution in the following cases: - use of variable before declaration - declaration within conditional code blocks - declaration within loop body fixes #1518 fixes #1525Alex Lam S.L
2017-02-26consolidate `evaluate` & `reduce_vars` (#1505)...- improve marking efficiency - apply smarter `const` replacement to `var` fixes #1501Alex Lam S.L
2017-02-21improve reduce_vars and fix a bug...- update modified flag between compress() passes - support IIFE arguments - fix corner case with multiple definitions closes #1473 alexlamsl
2017-01-26optimise binary operands with evaluate() (#1427)...- remove call to evaluate() in is_constant() and let nested optimize() does its job instead - reject RegExp in is_constant() and remove special case logic under collapse_vars - operands to conditionals optimisation are now always evaluate()-ed - throw error in constant_value() instead of returning undefined to catch possible bugs, similar to make_node_from_constant() - optimise binary boolean operators under `evaluate` instead of `conditionals`Alex Lam S.L
2017-01-26augment evaluate to extract within objects (#1425)...- gated by `unsafe` - replaces previous optimisation specific to String.length - "123"[0] => 1 - [1, 2, 3][0] => 1 - [1, 2, 3].length => 3 - does not apply to objects with overridden prototype functionsAlex Lam S.L
2016-10-01Optimize unmodified variablesalexlamsl