aboutsummaryrefslogtreecommitdiff
path: root/test/compress
AgeCommit message (Collapse)Author
2017-03-07fix deep cloning of labels (#1565)Alex Lam S.L
`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.
2017-03-07transform function calls to IIFEs (#1560)Alex Lam S.L
- expose function body to call sites for potential optimisations - suppress substitution of variable used within `AST_Defun`
2017-03-07avoid substitution of global variables (#1557)Alex Lam S.L
- unless `toplevel` is enabled - global `const` works as before
2017-03-07collapse_vars: do not replace a constant in loop condition or init (#1562)kzc
2017-03-06suppress semicolons after do/while (#1556)Alex Lam S.L
- unless both `beautify` & `screw-ie8` are enabled - deprecate workaround for if-do-while-else fixes #186
2017-03-05fixup for #1553 (#1555)Alex Lam S.L
- `++a` is the one that is foldable - transform `a++` into `++a` for better optimisation
2017-03-05collapse assignment with adjacent subsequent usage (#1553)Alex Lam S.L
- consolidate `cascade` optimisations - support ++/-- postfixes - remove redundant optimisation identified in #1460 fixes #368
2017-03-05handle variable declaration within catch blocks (#1546)Alex Lam S.L
accounts for IE8- scoping
2017-03-05improve `unsafe` on undefined (#1548)Alex Lam S.L
`unsafe` turns undefined keyword into a variable of the same name if found, but that interferes with other related optimisations. Keep track of such transformations to ensure zero information loss in the process.
2017-03-05stay safe with constants in IE8- (#1547)Alex Lam S.L
- `undefined` etc. can be redefined at top-level for IE8-, so disable related optimisations - fixed `--support-ie8` catch mangle bug
2017-03-05fix a corner case in #1530 (#1552)Alex Lam S.L
2017-03-03process code with implicit return statement (#1522)Alex Lam S.L
Bookmarklet for instance implicitedly assumes a "completion value" without using `return`. The `expression` option now supports such use cases. Optimisations on IIFEs also enhanced. fixes #354 fixes #543 fixes #625 fixes #628 fixes #640 closes #1293
2017-03-03compress numerical expressions (#1513)Alex Lam S.L
safe operations - `a === b` => `a == b` - `a + -b` => `a - b` - `-a + b` => `b - a` - `a+ +b` => `+b+a` associative operations (bit-wise operations are safe, otherwise `unsafe_math`) - `a + (b + c)` => `(a + b) + c` - `(n + 2) + 3` => `5 + n` - `(2 * n) * 3` => `6 * n` - `(a | 1) | (2 | d)` => `(3 | a) | b` fixes #412
2017-03-03fix chained assignment with `unused` (#1540)Alex Lam S.L
When #1450 optimises `a=b=42`, it stops after the first variable even if both are unused. fixes #1539
2017-03-03collapse_vars should not replace constant in for-in init section (#1538)kzc
fixes #1537
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)Alex Lam S.L
fixes #1533
2017-03-03disable do{...}while(false) optimisation (#1534)Alex Lam S.L
- fails to handle `break` in body fixes #1532
2017-03-02optimize trivial IIFEs returning constants (#1530)kzc
2017-03-02trim unused invocation parameters (#1526)Alex Lam S.L
2017-03-02minor improvement to string optimisation (#1514)Alex Lam S.L
- "" + "a" => "a" - "" + a + "b" => a + "b" - "a" + "" => "a" (improving on #45)
2017-03-02fix corner cases in `reduce_vars` (#1524)Alex Lam S.L
Avoid variable substitution in the following cases: - use of variable before declaration - declaration within conditional code blocks - declaration within loop body fixes #1518 fixes #1525
2017-03-01fix `evaluate` on object getter & setter (#1515)Alex Lam S.L
2017-02-28warn & drop `#__PURE__` iff IIFE is dropped (#1511)Alex Lam S.L
- consolidate `side-effects` optimisations - improve string `+` optimisation - enhance literal & `conditionals` optimisations
2017-02-26consolidate `evaluate` & `reduce_vars` (#1505)Alex Lam S.L
- improve marking efficiency - apply smarter `const` replacement to `var` fixes #1501
2017-02-24enable `collapse_vars` & `reduce_vars` by defaultalexlamsl
- fix corner cases in `const` optimisation - deprecate `/*@const*/` fixes #1497 closes #1498
2017-02-21Support marking a call as purekzc
A function call or IIFE with an immediately preceding comment containing `@__PURE__` or `#__PURE__` is deemed to be a side-effect-free pure function call and can potentially be dropped. Depends on `side_effects` option. `[#@]__PURE__` hint will be removed from comment when pure call is dropped. fixes #1261 closes #1448
2017-02-21fix `pure_funcs` & improve `side_effects`alexlamsl
- only drops side-effect-free arguments - drop side-effect-free parts with discarded value from `AST_Seq` & `AST_SimpleStatement` closes #1494
2017-02-21clean up `max_line_len`alexlamsl
- never exceed specified limit - otherwise warning is shown - enabled only for final output closes #1496
2017-02-21introduce `unsafe_proto`alexlamsl
- `Array.prototype.slice` => `[].slice` closes #1491
2017-02-21Add .gitattributes to checkout lf eol styleAnthony Van de Gejuchte
closes #1487
2017-02-21enhance `global_defs`alexlamsl
- support arrays, objects & AST_Node - support `"a.b":1` on both cli & API - emit warning if variable is modified - override top-level variables fixes #1416 closes #1198 closes #1469
2017-02-21evaluate AST_SymbolRef as parameteralexlamsl
fix invalid boolean conversion now exposed in `make_node_from_constant()` closes #1477
2017-02-21improve reduce_vars and fix a bugalexlamsl
- update modified flag between compress() passes - support IIFE arguments - fix corner case with multiple definitions closes #1473
2017-02-21improve keep_fargs & keep_fnamesalexlamsl
- utilise in_use_ids instead of unreferenced() - drop_unused now up-to-date for subsequent passes closes #1476
2017-02-21fix duplicated test namesalexlamsl
previously test cases with the same name would be skipped except for the last one `test/run-test.js` will now report duplicated names as errors closes #1461
2017-02-21smarter const replacement taking name length into accountkzc
closes #1459
2017-02-21clean up `negate_iife`alexlamsl
- remove extra tree scanning phase for `negate_iife` - `negate_iife` now only deals with the narrowest form, i.e. IIFE sitting directly under `AST_SimpleStatement` - `booleans`, `conditionals` etc. will now take care the rest via more accurate accounting - `a(); void b();` => `a(); b();` fixes #1288 closes #1451
2017-02-21improve string concatenationalexlamsl
shuffle associative operations to minimise parentheses and aid other uglification efforts closes #1454
2017-02-21`-c sequences=N` suboptimal at N expression cutoffalexlamsl
N = 2: a; b; c; d; was: a, b; c; d; now: a, b; c, d; fixes #1455 closes #1457
2017-02-21tweak do-while loopsalexlamsl
- `do{...}while(false)` => `{...}` - clean up `AST_While` logic closes #1452
2017-02-21fixes & improvements to [].join()alexlamsl
fixes - [a].join() => "" + a - ["a", , "b"].join() => "a,,b" - ["a", null, "b"].join() => "a,,b" - ["a", undefined, "b"].join() => "a,,b" improvements - ["a", "b"].join(null) => "anullb" - ["a", "b"].join(undefined) => "a,b" - [a + "b", c].join("") => a + "b" + c closes #1453
2017-02-21drop unused: toplevel, assign-onlyalexlamsl
- assign statement does not count towards variable usage by default - only works with assignments on the same scope level as declaration - can be disabled with `unused` set to "keep_assign" - `toplevel` to drop unused top-level variables and/or functions - `top_retain` to whitelist top-level exceptions closes #1450
2017-02-21fix stray else in compress with conditionals=falsekzc
closes #1449
2017-02-18enable typeof "undefined" for general usealexlamsl
move out of unsafe, guard corner case with screw_id8 instead closes #1446
2017-02-18fix corner case in keep_fnamesalexlamsl
happens when inner function: - just below top level - not referenced - `unused` is disabled closes #1445
2017-02-18fix crash in unsafe replacement of undefinedalexlamsl
remove extraneous call to AST_SymbolRef.reference() closes #1443
2017-02-18Improve optimizing `function() { if(c){return foo} bar();}`Anthony Van de Gejuchte
closes #1437
2017-01-26update test (#1441)Alex Lam S.L
improved reduce_vars & binary operands produce more optimal results
2017-01-26fix mangling collision with keep_fnames (#1431)Alex Lam S.L
* fix mangling collision with keep_fnames fixes #1423 * pass mangle options to figure_out_scope() bring command-line in line with minify()