Alex Lam S.L
93d4224072
Merge pull request #1947 from alexlamsl/v2.8.26
2017-05-16 07:12:28 +08:00
Alex Lam S.L
6cd580dc23
fix parsing of property access after new line ( #1944 )
...
Account for comments when detecting property access in `tokenizer`.
fixes #1943
2017-05-16 06:34:10 +08:00
Alex Lam S.L
ecb63ad8bc
improve keyword-related parser errors ( #1941 )
...
fixes #1937
2017-05-16 06:33:57 +08:00
Alex Lam S.L
1ca43bcca1
v2.8.25
v2.8.25
2017-05-15 19:45:33 +08:00
Alex Lam S.L
3ee1464aa4
Merge pull request #1938 from alexlamsl/v2.8.25
2017-05-15 19:44:44 +08:00
Alex Lam S.L
24967b8be8
fix & improve coverage of estree ( #1935 )
...
- fix `estree` conversion of getter/setter
- fix non-directive literal in `to_mozilla_ast()`
- revamp `test/mozilla-ast.js`
- reuse `test/ufuzz.js` for code generation
- use `acorn.parse()` for creating `estree`
- extend `test/ufuzz.js` for `acorn` workaround
- catch variable redefinition
- non-trivial literal as directive
- adjust options for tolerance
Miscellaneous
- optional semi-colon when parsing directives
fixes #1914
closes #1915
2017-05-15 18:33:43 +08:00
Alex Lam S.L
a8c67ea353
fix bugs with getter/setter ( #1926 )
...
- `reduce_vars`
- `side_effects`
- property access for object
- `AST_SymbolAccessor` as key names
enhance `test/ufuzz.js`
- add object getter & setter
- property assignment to setter
- avoid infinite recursion in setter
- fix & adjust assignment operators
- 50% `=`
- 25% `+=`
- 2.5% each for the rest
- avoid "Invalid array length"
- fix `console.log()`
- bypass getter
- curb recursive reference
- deprecate `-E`, always report runtime errors
2017-05-15 18:22:43 +08:00
olsonpm
d0b0aecfc5
document 3 max passes ( #1928 )
2017-05-15 18:18:38 +08:00
olsonpm
9f5a6029a3
clarify wording ( #1931 )
2017-05-15 18:18:27 +08:00
Alex Lam S.L
4027a0c962
fix parser bugs & CLI reporting ( #1827 )
...
fixes #1825
2017-05-15 18:18:04 +08:00
Alex Lam S.L
87f8a484e6
v2.8.24
v2.8.24
2017-05-12 15:47:02 +08:00
Alex Lam S.L
c736834aa4
Merge pull request #1921 from alexlamsl/v2.8.24
2017-05-12 14:58:35 +08:00
olsonpm
9a98513981
add documentation for side_effects & [#@]__PURE__ ( #1925 )
2017-05-12 12:55:07 +08:00
Alex Lam S.L
f631d6437a
avoid arguments and eval in reduce_vars ( #1924 )
...
fixes #1922
2017-05-12 12:45:38 +08:00
Alex Lam S.L
aa7e8783f8
fix invalid transform on const ( #1919 )
...
- preserve (re)assignment to `const` for runtime error
- suppress `cascade` on `const`, as runtime behaviour is ill-defined
2017-05-12 05:04:28 +08:00
Alex Lam S.L
13e5e33448
document known issues with const ( #1916 )
2017-05-12 03:36:54 +08:00
kzc
487ae8e3be
change harmony references to uglify-es in README ( #1902 )
2017-05-10 16:38:10 +08:00
Alex Lam S.L
5dfda6e212
v2.8.23
v2.8.23
2017-05-07 04:31:54 +08:00
Alex Lam S.L
d08c772eb3
Merge pull request #1871 from alexlamsl/v2.8.23
2017-05-07 04:06:51 +08:00
Alex Lam S.L
90ed54401b
fix test for #1865 ( #1873 )
2017-05-07 03:04:17 +08:00
Alex Lam S.L
d8106b6c63
fix label-related bugs ( #1835 )
...
- deep cloning of `AST_LabeledStatement`
- `L:do{...}while(false)`
- empty statement with label within block
extend `test/ufuzz.js`
- generate labels for blocks & loops
- generate for-in statements
- skip suspicious option search if `minify()` errs
fixes #1833
2017-05-07 00:16:30 +08:00
alexlamsl
dda4eb96e1
backport test scripts
2017-05-06 23:48:28 +08:00
Alex Lam S.L
7305ba0296
fix unsafe on evaluate of reduce_vars ( #1870 )
...
Determine if variables with non-constant values can escape and be modified.
fixes #1865
2017-05-06 23:40:19 +08:00
Alex Lam S.L
2c21dc5e8e
fix unused on for-in statements ( #1843 )
...
Only need to avoid `var` within the initialisation block.
fixes #1841
2017-05-06 23:34:21 +08:00
Alex Lam S.L
d0faa471db
fix unused on labeled for-loop ( #1831 )
...
fixes #1830
2017-05-06 23:31:22 +08:00
Alex Lam S.L
6ad823d1e8
fix reduce_vars within try-block ( #1818 )
...
Possible partial execution due to exceptions.
2017-05-06 23:28:07 +08:00
Alex Lam S.L
43ad4e9775
fix variable substitution ( #1816 )
...
- let `collapse_vars` take care of value containing any symbols
- improve overhead accounting
2017-05-06 23:26:54 +08:00
Alex Lam S.L
04b8964505
v2.8.22
v2.8.22
2017-04-09 11:36:57 +08:00
Alex Lam S.L
d6fbc365e2
fix LHS cases for NaN & friends ( #1804 )
...
`Infinity = beyond` should not become `1/0 = beyond`
2017-04-09 03:18:14 +08:00
Alex Lam S.L
9a978843f5
enhance test/ufuzz.js ( #1803 )
...
- `-E` to report test cases with runtime errors
- favor returning expressions rather than empty return
- emit a newline upon fuzzer completion to not erase the iteration count
closes #1800
2017-04-09 01:36:38 +08:00
Alex Lam S.L
0479ff0c54
fix a couple of bugs in global_defs ( #1802 )
...
- `optimize()` substituted expression
- compute nested property string correctly
fixes #1801
Miscellaneous
- reset optimisation flags on all node types
2017-04-08 16:46:25 +08:00
Alex Lam S.L
cf72fe552f
fix delete corner cases ( #1799 )
...
- assignment
- boolean
- conditional
- sequence
2017-04-08 14:25:28 +08:00
Alex Lam S.L
a1532eb076
extend ufuzz generator ( #1783 )
...
- property access
- property assignment
- allow bare expression within try-block
- normalise `Error` in `console.log()`
- generate more unary expressions
- add parenthesis to enforce precedence
- adjust variable reuse/creation
- add parameters to function declaration & expression
- add return expression
- add trivial arguments to function call
2017-04-07 18:47:30 +08:00
Alex Lam S.L
c2a1bceb77
fix pure_getters for chained property access ( #1798 )
2017-04-07 17:06:01 +08:00
Alex Lam S.L
e3c9c22c75
fix corner cases with delete ( #1796 )
...
`delete Infinity` returns `false` where as `delete (1/0)` returns `true`
2017-04-07 15:39:59 +08:00
Alex Lam S.L
0f4cd73dcc
introduce "strict" to pure_getters ( #1795 )
2017-04-07 13:31:58 +08:00
Alex Lam S.L
281e882d27
fix reduce_vars on catch variable ( #1794 )
...
Improved catch handling in `figure_out_scope()` means special case treatment of IE8 is no longer valid in `reset_opt_flags()`.
Also fixed recursive assignment in variable definition.
2017-04-07 12:32:56 +08:00
Alex Lam S.L
cc6aa3e5ac
fix incorrect context in variable substitution ( #1791 )
...
`AST_Node.optimize()` is context-aware, so don't cache its results to be used elsewhere.
Also fixed a few cases of AST corruption and beef up safety of `pure_getters`.
2017-04-07 03:42:17 +08:00
Alex Lam S.L
e869779a98
enable inline_script by default ( #1793 )
2017-04-07 00:45:51 +08:00
Alex Lam S.L
06cdb74279
improve pure_getters ( #1786 )
...
- property access to `null` & `undefined` always has side effects
- utilise `reduce_vars` to determine safe property access
- may-be cases treated as side effects unless `unsafe`
2017-04-06 11:18:59 +08:00
Alex Lam S.L
ff289b90a9
implement delayed resolution for reduce_vars ( #1788 )
...
Although it would be nice to enforce `AST_Node` cloning during transformation, that ship has sailed a long time ago.
We now get the assigned value when resolving `AST_SymbolRef` instead of `reset_opt_flags()`, which has the added advantage of improved compressor efficiency.
fixes #1787
2017-04-05 21:06:42 +08:00
Alex Lam S.L
9b6bc67c33
optimise do{...}while(false) ( #1785 )
...
- better heuristics to avoid issues like #1532
- fix `TreeWalker.loopcontrol_target()`
- `continue` cannot refer to `switch` blocks
2017-04-04 23:48:22 +08:00
Alex Lam S.L
4b90dc1fdb
remove --mangle-props from fuzzing ( #1777 )
...
The inherently unsafe nature makes this feature unsuitable to be tested this way.
fixes #1774
2017-04-04 16:24:16 +08:00
Alex Lam S.L
951770fc68
exclude mangling of special property names ( #1779 )
...
- `null`
- `true`
- `false`
- numeric literals
2017-04-04 03:50:19 +08:00
Alex Lam S.L
48b3fe9952
fix mangleProperties on identifiers ( #1776 )
...
- fix handling of "-Infinity"
- add test case for "-0"
reverts #1481
2017-04-03 23:17:47 +08:00
Alex Lam S.L
a400741868
workaround Node.js bugs ( #1775 )
...
Wrap test code in IIFE before passing to `vm`
fixes #1768
fixes #1771
2017-04-03 18:56:11 +08:00
Alex Lam S.L
59a4e56bc8
fix mangleProperties of undefined & Infinity ( #1772 )
...
`NaN` already works by the happy accident of `Number.NaN`
fixes #1770
2017-04-03 12:31:05 +08:00
Alex Lam S.L
1f1fccc45d
extend test/ufuzz.js ( #1769 )
...
New expressions:
- property access
- array literal
- object literal
Miscellaneous:
- reduce execution timeout
- test `toplevel` and `mangleProperties`
2017-04-03 04:00:33 +08:00
Alex Lam S.L
b7f6b73f4e
v2.8.21
v2.8.21
2017-04-02 17:07:55 +08:00
Alex Lam S.L
9469c03ac9
fix corner case in switch ( #1765 )
2017-04-02 17:07:20 +08:00