aboutsummaryrefslogtreecommitdiff
path: root/test/compress
AgeCommit message (Collapse)Author
2017-04-01improve compression of undefined, NaN & Infinitiy (#1748)Alex Lam S.L
- migrate transformation logic from `OutputStream` to `Compressor` - always turn `undefined` into `void 0` (unless `unsafe`) - always keep `NaN` except when avoiding local variable redefinition - introduce `keep_infinity` to suppress `1/0` transform, except when avoiding local variable redefinition supersedes #1723 fixes #1730
2017-03-31combine rules for binary boolean operations (#1744)Alex Lam S.L
2017-03-31fix catch symbol mangling (#1734)Alex Lam S.L
Only need to look up the immediate non-block/catch scope for the same-name special case. fixes #1733
2017-03-30remove paranthesis for `-(x*y)` (#1732)Alex Lam S.L
2017-03-30optimize try-catch-finally (#1731)Alex Lam S.L
- eliminate empty blocks - flatten out if try-block does not throw
2017-03-30improve tests from #1726 (#1729)Alex Lam S.L
2017-03-29fix missing parentheses around NaN/Infinity shorthands (#1726)Alex Lam S.L
fixes #1724 fixes #1725
2017-03-29output optimal representations of NaN & Infinity (#1723)Alex Lam S.L
- move these optimisations out from `Compressor` to `OutputStream` - fixes behaviour inconsistency when running uglified code from global or module levels due to redefinition
2017-03-29improve beautified output of switch blocks (#1721)Alex Lam S.L
2017-03-29fix corner case in `unused` (#1718)Alex Lam S.L
When fixing catch-related issue in #1715, it tries to optimise for duplicate definitions but did not take anonymous functions into account. Remove such optimisation for now and we can cover this as a more general rule later.
2017-03-28fix `unused` on var of the same name within catch (#1716)Alex Lam S.L
fixes #1715
2017-03-28fix `is_number()` on `+=` (#1714)Alex Lam S.L
fixes #1710
2017-03-28drop anonymous function name when overshadowed by other declarations (#1712)Alex Lam S.L
fixes #1709
2017-03-28handle var within catch of the same name (#1711)Alex Lam S.L
The following code prints `1`: var a = 1; !function(){ a = 4; try{ throw 2; } catch (a) { var a = 3; } }(); console.log(a); fixes #1708
2017-03-28fix tail trimming of switch blocks (#1707)Alex Lam S.L
now guarded under `dead_code` fixes #1705
2017-03-28fix mangle for variable declared within catch block (#1706)Alex Lam S.L
fixes #1704
2017-03-27`has_side_effects()` should take `AST_Switch.expression` into account (#1699)Alex Lam S.L
fixes #1698
2017-03-27fix typeof side effects (#1696)Alex Lam S.L
`statement_to_expression()` drops `typeof` even if it operates on undeclared variables. Since we now have `drop_side_effect_free()`, replace and remove this deprecated functionality.
2017-03-27preserve side effects in switch expression (#1694)Alex Lam S.L
fixes #1690
2017-03-27fix `cascade` on anonymous function reference (#1693)Alex Lam S.L
Unlike normal variables and even function definitions, these cannot be reassigned, even though assignment expressions would "leak" the assigned value as normal.
2017-03-27handle overlapped variable definitions (#1691)Alex Lam S.L
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.
2017-03-26fix `delete` related issues in `collapse_vars` and `reduce_vars` (#1689)Alex Lam S.L
2017-03-26fix `cascade` on `delete` operator (#1687)Alex Lam S.L
Conditions including strict mode would make `delete` return `true` or `false`, and are too complex to be evaluated by the compressor. Suppress assignment folding into said operator. fixes #1685
2017-03-26fallthrough should not execute case expression (#1683)Alex Lam S.L
- de-duplicate trailing cases only, avoid all potential side-effects - enable switch statement fuzzing fixes #1680
2017-03-26optimize conditional when condition symbol matches consequent (#1684)kzc
2017-03-26suppress switch branch de-duplication upon side effects (#1682)Alex Lam S.L
fixes #1679
2017-03-26fix side-effects detection on switch statements (#1678)Alex Lam S.L
extension of #1675
2017-03-26improve switch optimisations (#1677)Alex Lam S.L
- correctly determine reachability of (default) branches - gracefully handle multiple default branches - optimise branches with duplicate bodies fixes #376 fixes #441 fixes #1674
2017-03-25fix `has_side_effects()` (#1675)Alex Lam S.L
`AST_Try` is an `AST_Block`, so besides try block we also need to inspect catch and finally blocks for possible side effects. Also extend this functionality to handle `AST_If` and `AST_LabeledStatement` while we are at it. fixes #1673
2017-03-25fix `reduce_vars` on `AST_Switch` (#1671)Alex Lam S.L
Take conditional nature of switch branches into account. fixes #1670
2017-03-25fix typeof side-effects (#1669)Alex Lam S.L
`has_side_effects()` does not take `typeof`'s magical power of not tripping over undeclared variable into account. fixes #1668
2017-03-25fix `dead_code` on `AST_Switch` (#1667)Alex Lam S.L
Need to call `extract_declarations_from_unreachable_code()`. fixes #1663
2017-03-25fix invalid `AST_For.init` (#1657)Alex Lam S.L
Turns out the only place in `Compressor` which can generate invalid `AST_For.init` is within `drop_unused()`, so focus the fix-up efforts. supercedes #1652 fixes #1656
2017-03-24fix cascade of `evaluate` optimisation (#1654)Alex Lam S.L
Operator has changed, so break out from rest of the rules. fixes #1649
2017-03-24fix corner case in `AST_For.init` (#1652)Alex Lam S.L
Enforce `null` as value for empty initialisation blocks. fixes #1648
2017-03-24fix assignment extraction from conditional (#1651)Alex Lam S.L
fixes #1645 fixes #1646
2017-03-24fix assignment substitution in sequences (#1643)Alex Lam S.L
take side effects of binary boolean operations into account fixes #1639
2017-03-24fix expect_stdout (#1642)Alex Lam S.L
`compress()` may modify input ASTs add tests for #1627 & #1640
2017-03-24improve collapsible value detection (#1638)Alex Lam S.L
- #1634 bars variables with cross-scope references in between to collapse - but if assigned value is side-effect-free, no states can be modified, so it is safe to move
2017-03-23account for cross-scope modifications in `collapse_vars` (#1634)Alex Lam S.L
mostly done by @kzc fixes #1631
2017-03-23introduce compressor.info() (#1633)Alex Lam S.L
report the following only when `options.warnings = "verbose"` - unused elements due to inlining - collpased variables
2017-03-21throw parse error on invalid assignments (#1627)Alex Lam S.L
fixes #1626
2017-03-19make `expect_stdout` work on Node.js 0.12 (#1623)Alex Lam S.L
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.
2017-03-19fix commit 88fb83a (#1622)Alex Lam S.L
The following is wrong: `a == (b ? a : c)` => `b` Because: - `b` may not be boolean - `a` might have side effects - `a == a` is not always `true` (think `NaN`) - `a == c` is not always `false`
2017-03-19fix AST_Binary.lift_sequences() (#1621)Alex Lam S.L
Commit eab99a1c fails to account for side effects from compound assignments.
2017-03-19transform String.charAt() to index access (#1620)Alex Lam S.L
Guarded by `unsafe` as `charAt()` can be overridden.
2017-03-18handle runtime errors in `expect_stdout` (#1618)Alex Lam S.L
allow test to pass if both `input` and `expect` throws the same kind of error
2017-03-18fix top-level directives in compress tests (#1615)Alex Lam S.L
`input` and `expect` are parsed as `AST_BlockStatement` which does not support `AST_Directive` by default. Emulate that by transforming preceding `AST_SimpleStatement`s of `AST_String` into `AST_Directive`.
2017-03-17fix chained evaluation (#1610)Alex Lam S.L
`reduce_vars` enables substitution of variables but did not clone the value's `AST_Node`. This confuses `collapse_vars` and result in invalid AST and subsequent crash. fixes #1609
2017-03-16extend `test/run-tests.js` to optionally execute uglified output (#1604)Alex Lam S.L
fixes #1588