aboutsummaryrefslogtreecommitdiff
path: root/test
AgeCommit message (Expand)Author
2017-03-27`has_side_effects()` should take `AST_Switch.expression` into account (#1699)...fixes #1698Alex Lam S.L
2017-03-27fix typeof side effects (#1696)...`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.Alex Lam S.L
2017-03-27preserve side effects in switch expression (#1694)...fixes #1690Alex Lam S.L
2017-03-27fix `cascade` on anonymous function reference (#1693)...Unlike normal variables and even function definitions, these cannot be reassigned, even though assignment expressions would "leak" the assigned value as normal.Alex Lam S.L
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-26ufuzz: workaround function name and toString() (#1688)...fixes #1686Alex Lam S.L
2017-03-26fix `cascade` on `delete` operator (#1687)...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 #1685Alex Lam S.L
2017-03-26fallthrough should not execute case expression (#1683)...- de-duplicate trailing cases only, avoid all potential side-effects - enable switch statement fuzzing fixes #1680Alex Lam S.L
2017-03-26optimize conditional when condition symbol matches consequent (#1684)kzc
2017-03-26suppress switch branch de-duplication upon side effects (#1682)...fixes #1679Alex Lam S.L
2017-03-26fix side-effects detection on switch statements (#1678)...extension of #1675Alex Lam S.L
2017-03-26Improve fuzzer. :) (#1665)...@qfox Put value constants in a global constant 74c0fb9 @qfox And the other string based values as well a5033c5 @qfox Be more strict about parameters, allow max to be optional 9c7ce70 @qfox Support a `V` (capital) flag to only log out at intervals 2d822c7 @qfox Fewer magic variables a6a9a7c @qfox Fix decrement such that a function is created when n=1 7e4b017 @qfox Add more values 64e596e @qfox Make `b` appear more often d33191a @qfox Add functions that contain (only..) functions 29a86e3 @qfox Allow the block statement to contain multiple statements 7570484 @qfox Make the interval count a constant d587ad8 @qfox Enable mangling, disable post-processing … 4dc8d35 @qfox Add more simple value that may trigger syntactic errors 8496d58 @qfox Add `else` to some `if` statements a4aed65 @qfox Move iife to expr generator, fix missing recursion arg e453159 @qfox Improve output on error where it wasnt printing the last code properly 4565a1a @qfox Add switch statement to generator ceafa76 @qfox Add var statement, support optional comma for expr generator b83921b @qfox Expression generator should use a simple value instead of `0` as recu… … 9d1a5c7 @qfox const -> var to keep things es5... 0143099 @qfox Add more simple values that may trigger edge cases 5e124f1 @qfox Add central name generator, take special care for global functions aeb7682 @qfox Add some `return` and function declaration cases to statement generator 6c9c3cc @qfox Exclude switches from generator for now 91124b2 Put value constants in a global constant And the other string based values as well Be more strict about parameters, allow max to be optional Support a `V` (capital) flag to only log out at intervals Fewer magic variables Fix decrement such that a function is created when n=1 Add more values Make `b` appear more often Add functions that contain (only..) functions Allow the block statement to contain multiple statements Make the interval count a constant Enable mangling, disable post-processing Mangling is kind of the whole point... Similarly, to beautify the minified code afterwards may supress bugs so it's probably best not to beautify the code prematurely. And there's no point anyways since you won't see it most of the time and only care about the main input anyways. Add more simple value that may trigger syntactic errors Add `else` to some `if` statements Move iife to expr generator, fix missing recursion arg Improve output on error where it wasnt printing the last code properly Add switch statement to generator Add var statement, support optional comma for expr generator Expression generator should use a simple value instead of `0` as recursion default const -> var to keep things es5... Add more simple values that may trigger edge cases Add central name generator, take special care for global functions Add some `return` and function declaration cases to statement generator Exclude switches from generator for now Enable switch generation because #1667 was merged Add typeof generator Add some elision tests Add a new edge case that returns an object explicitly Add all binary ops to try and cover more paths Forgot four binops and added `Math` to var name pool Harden the incremental pre/postfix tests Improve switch generator, allow `default` to appear at any clause index Add try/catch/finally generation Prevent function statements being generated Add edge case with decremental op and a group Disable switch generation until #1679 and #1680 are solved Only allow `default` clause as last clause for now Tentatively enable `throw`, `break` and `continue` statements when in valid contextsPeter van der Zee
2017-03-26improve switch optimisations (#1677)...- correctly determine reachability of (default) branches - gracefully handle multiple default branches - optimise branches with duplicate bodies fixes #376 fixes #441 fixes #1674Alex Lam S.L
2017-03-25fix `has_side_effects()` (#1675)...`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 #1673Alex 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-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