aboutsummaryrefslogtreecommitdiff
path: root/test
AgeCommit message (Expand)Author
2017-03-25fix typeof side-effects (#1669)...`has_side_effects()` does not take `typeof`'s magical power of not tripping over undeclared variable into account. fixes #1668Alex Lam S.L
2017-03-25fix `dead_code` on `AST_Switch` (#1667)...Need to call `extract_declarations_from_unreachable_code()`. fixes #1663Alex Lam S.L
2017-03-25fix invalid `AST_For.init` (#1657)...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 #1656Alex Lam S.L
2017-03-25introduce ufuzz.js (#1655)...closes #1647Alex Lam S.L
2017-03-24fix cascade of `evaluate` optimisation (#1654)...Operator has changed, so break out from rest of the rules. fixes #1649Alex Lam S.L
2017-03-24fix corner case in `AST_For.init` (#1652)...Enforce `null` as value for empty initialisation blocks. fixes #1648Alex Lam S.L
2017-03-24fix assignment extraction from conditional (#1651)...fixes #1645 fixes #1646Alex Lam S.L
2017-03-24fix assignment substitution in sequences (#1643)...take side effects of binary boolean operations into account fixes #1639Alex Lam S.L
2017-03-24improve error marker placement (#1644)...For AST_UnaryPrefix, points to the operator rather than end of expression.Alex Lam S.L
2017-03-24fix expect_stdout (#1642)...`compress()` may modify input ASTs add tests for #1627 & #1640Alex Lam S.L
2017-03-24improve collapsible value detection (#1638)...- #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 moveAlex Lam S.L
2017-03-23account for cross-scope modifications in `collapse_vars` (#1634)...mostly done by @kzc fixes #1631Alex Lam S.L
2017-03-23introduce compressor.info() (#1633)...report the following only when `options.warnings = "verbose"` - unused elements due to inlining - collpased variablesAlex Lam S.L
2017-03-23fix a bug in simple_glob (#1632)...- "?" should not match "/" - other minor clean-upsAlex Lam S.L
2017-03-23metadata cleanup (#1630)...- mention performance anomaly in Node 7 and drop from CI - remove unused npm "scripts" - mark browserify dependency as optional - stop `test/mozilla-ast.js` from spamming console output in later versions of Node.jsAlex Lam S.L
2017-03-21throw parse error on invalid assignments (#1627)...fixes #1626Alex 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-19fix commit 88fb83a (#1622)...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`Alex Lam S.L
2017-03-19fix AST_Binary.lift_sequences() (#1621)...Commit eab99a1c fails to account for side effects from compound assignments.Alex Lam S.L
2017-03-19transform String.charAt() to index access (#1620)...Guarded by `unsafe` as `charAt()` can be overridden.Alex Lam S.L
2017-03-18handle runtime errors in `expect_stdout` (#1618)...allow test to pass if both `input` and `expect` throws the same kind of errorAlex Lam S.L
2017-03-18fix top-level directives in compress tests (#1615)...`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`.Alex Lam S.L
2017-03-17fix chained evaluation (#1610)...`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 #1609Alex Lam S.L
2017-03-16extend `test/run-tests.js` to optionally execute uglified output (#1604)...fixes #1588Alex Lam S.L
2017-03-16make `collapse_vars` consistent with `toplevel` (#1608)...fixes #1605Alex 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-15fix `AST_Node.optimize()` (#1602)...Liberal use of `Compressor.transform()` and `AST_Node.optimize()` presents an issue for look-up operations like `TreeWalker.in_boolean_context()` and `TreeWalker.parent()`. This is an incremental fix such that `AST_Node.optimize()` would now contain the correct stack information when called correctly.Alex 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-10support multi-line string in tests (#1590)...`expect_exact` sometimes have multiple lines and `\n` are hard to read. Use array of strings to emulate line breaks and improve readability.Alex Lam S.L
2017-03-10fixup for #1585 (#1589)...As patched on `harmony`, `statement()` is the only user of `embed_tokens()` with a missing error branch. Updated test case and match up with `harmony` to facilitate future merging.Alex Lam S.L
2017-03-10fix catch variable reference in IE8 (#1587)...`AST_Scope.def_variable()` will overwrite `AST_Symbol.thedef`, so save a copy before calling. fixes #1586Alex Lam S.L
2017-03-10Correctly raise a parse exception with a missing loop body (#1585)Michael Mior
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-09scan RHS of dropped assignments (#1581)...- similar case as #1578 but against #1450 instead - fix `this` binding in #1450 as well closes #1580Alex Lam S.L
2017-03-08scan assignment value in drop_unused() (#1578)...those were not optimised for `unused` before, which made it necessary for `reduce_vars` to have separate steps for `keep_fnames` docs update by @kzc closes #1577Alex 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-08only run benchmark & jetstream on CI (#1571)Alex Lam S.L
2017-03-08plan B for IE8 do-while semi-colon fix (#1572)...- omitting trailing semi-colon in do-while breaks non-browser parser, e.g. uglify-js 1.x - trailing semi-colon only breaks IE8 if followed by `else` or `while` - always use braces in do-while body to workaround 2nd case with no size loss in compression fixes #1568Alex Lam S.L
2017-03-08fix return from recursive IIFE (#1570)...`side-effects` did not account for IIFEs being able to reference itself thus making its return value potentially significantAlex Lam S.L
2017-03-07include benchmark.js in test suite (#1564)...- report file sizes and overall run time - exit with non-zero code upon errorAlex 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-07collapse_vars: do not replace a constant in loop condition or init (#1562)kzc
2017-03-06suppress semicolons after do/while (#1556)...- unless both `beautify` & `screw-ie8` are enabled - deprecate workaround for if-do-while-else fixes #186Alex Lam S.L
2017-03-05fixup for #1553 (#1555)...- `++a` is the one that is foldable - transform `a++` into `++a` for better optimisationAlex Lam S.L
2017-03-05collapse assignment with adjacent subsequent usage (#1553)...- consolidate `cascade` optimisations - support ++/-- postfixes - remove redundant optimisation identified in #1460 fixes #368Alex Lam S.L
2017-03-05handle variable declaration within catch blocks (#1546)...accounts for IE8- scopingAlex Lam S.L
2017-03-05improve `unsafe` on undefined (#1548)...`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.Alex Lam S.L
2017-03-05stay safe with constants in IE8- (#1547)...- `undefined` etc. can be redefined at top-level for IE8-, so disable related optimisations - fixed `--support-ie8` catch mangle bugAlex Lam S.L