aboutsummaryrefslogtreecommitdiff
path: root/test/compress/evaluate.js
AgeCommit message (Collapse)Author
2017-06-06implement function inlining (#2053)Alex Lam S.L
- empty body - single `AST_Return` - single `AST_SimpleStatement` - avoid `/*#__PURE__*/` Miscellaneous - enhance single-use function substitution fixes #281
2017-06-01whitelist `unsafe` `evaluate` candidates (#2039)Alex Lam S.L
- all arguments may accept constant values - return constant value - free of side effects - available & identical across locales and runtime environments
2017-06-01enhance `unsafe` `evaluate` (#2037)Alex Lam S.L
2017-05-19introduce `unsafe_regexp` (#1970)Alex Lam S.L
fixes #1964
2017-05-12remove support for `const` (#1910)Alex Lam S.L
As this is not part of ES5.
2017-04-12convert `AST_Seq` from binary tree to array (#1460)Alex Lam S.L
- rename `AST_Seq` to `AST_Sequence` - raise default sequences_limit from 200 to 800
2017-04-09fix LHS cases for NaN & friends (#1804)Alex Lam S.L
`Infinity = beyond` should not become `1/0 = beyond`
2017-04-08fix `delete` corner cases (#1799)Alex Lam S.L
- assignment - boolean - conditional - sequence
2017-04-07fix corner cases with `delete` (#1796)Alex Lam S.L
`delete Infinity` returns `false` where as `delete (1/0)` returns `true`
2017-04-02avoid confusion of `NaN` & `Infinity` with `catch` symbol of the same name ↵Alex Lam S.L
(#1763) fixes #1760 fixes #1761
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-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-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-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-19transform String.charAt() to index access (#1620)Alex Lam S.L
Guarded by `unsafe` as `charAt()` can be overridden.
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-02trim unused invocation parameters (#1526)Alex Lam S.L
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-21evaluate AST_SymbolRef as parameteralexlamsl
fix invalid boolean conversion now exposed in `make_node_from_constant()` closes #1477
2017-01-26optimise binary operands with evaluate() (#1427)Alex Lam S.L
- 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`
2017-01-26augment evaluate to extract within objects (#1425)Alex Lam S.L
- 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 functions
2016-05-24Completely allow evaluating -0Richard van Velzen
2016-05-17Never produce -0 when evaluating expressions (like -"")Richard van Velzen
Fix for #1085. The major case was already there, but more expressions can result in -0.