UglifyJS.git
7 years agoremove `space_colon` (#1960)
Alex Lam S.L [Wed, 17 May 2017 06:07:34 +0000 (14:07 +0800)]
remove `space_colon` (#1960)

Always emit space after colon when `options.output.beautify` is enabled.

7 years agoupdate output options in readme (#1958)
Rob Garrison [Wed, 17 May 2017 03:54:46 +0000 (22:54 -0500)]
update output options in readme (#1958)

7 years agoremove Travis CI badge
alexlamsl [Wed, 17 May 2017 02:32:59 +0000 (10:32 +0800)]
remove Travis CI badge

7 years agov3.0.7
Alex Lam S.L [Tue, 16 May 2017 11:59:40 +0000 (19:59 +0800)]
v3.0.7

7 years agoexport `TreeTransformer` (#1950)
Alex Lam S.L [Tue, 16 May 2017 11:59:05 +0000 (19:59 +0800)]
export `TreeTransformer` (#1950)

- link to existing documentation on `TreeWalker` & `TreeTransformer`
- fix Travis build failures

fixes #1949

7 years agov3.0.6
Alex Lam S.L [Mon, 15 May 2017 22:38:58 +0000 (06:38 +0800)]
v3.0.6

7 years agoprint package name alongside version in CLI (#1946)
Alex Lam S.L [Mon, 15 May 2017 22:34:32 +0000 (06:34 +0800)]
print package name alongside version in CLI (#1946)

fixes #1945

7 years agofix parsing of property access after new line (#1944)
Alex Lam S.L [Mon, 15 May 2017 21:40:49 +0000 (05:40 +0800)]
fix parsing of property access after new line (#1944)

Account for comments when detecting property access in `tokenizer`.

fixes #1943

7 years agominor fixes to README.md
alexlamsl [Mon, 15 May 2017 17:33:01 +0000 (01:33 +0800)]
minor fixes to README.md

7 years agoreorg README for 3.x (#1942)
kzc [Mon, 15 May 2017 17:12:00 +0000 (13:12 -0400)]
reorg README for 3.x (#1942)

7 years agoimprove keyword-related parser errors (#1941)
Alex Lam S.L [Mon, 15 May 2017 15:02:55 +0000 (23:02 +0800)]
improve keyword-related parser errors (#1941)

fixes #1937

7 years agov3.0.5
Alex Lam S.L [Mon, 15 May 2017 03:34:59 +0000 (11:34 +0800)]
v3.0.5

7 years agofix & improve coverage of `estree` (#1935)
Alex Lam S.L [Sun, 14 May 2017 18:37:53 +0000 (02:37 +0800)]
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

7 years agoTweak README Notes (#1934)
kzc [Sat, 13 May 2017 18:12:14 +0000 (14:12 -0400)]
Tweak README Notes (#1934)

7 years agofix bugs with getter/setter (#1926)
Alex Lam S.L [Sat, 13 May 2017 18:10:34 +0000 (02:10 +0800)]
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

7 years agodocument 3 max passes (#1928)
olsonpm [Sat, 13 May 2017 04:54:32 +0000 (23:54 -0500)]
document 3 max passes (#1928)

7 years agoclarify wording (#1931)
olsonpm [Sat, 13 May 2017 04:54:01 +0000 (23:54 -0500)]
clarify wording (#1931)

7 years agoremove support for `const` (#1910)
Alex Lam S.L [Fri, 12 May 2017 06:57:41 +0000 (14:57 +0800)]
remove support for `const` (#1910)

As this is not part of ES5.

7 years agoavoid `arguments` and `eval` in `reduce_vars` (#1924)
Alex Lam S.L [Fri, 12 May 2017 04:34:55 +0000 (12:34 +0800)]
avoid `arguments` and `eval` in `reduce_vars` (#1924)

fixes #1922

7 years agoadd documentation for `side_effects` & `[#@]__PURE__` (#1925)
olsonpm [Fri, 12 May 2017 04:29:55 +0000 (23:29 -0500)]
add documentation for `side_effects` & `[#@]__PURE__` (#1925)

7 years agov3.0.4
Alex Lam S.L [Thu, 11 May 2017 20:52:39 +0000 (04:52 +0800)]
v3.0.4

7 years agofix invalid transform on `const` (#1919)
Alex Lam S.L [Thu, 11 May 2017 20:51:44 +0000 (04:51 +0800)]
fix invalid transform on `const` (#1919)

- preserve (re)assignment to `const` for runtime error
- suppress `cascade` on `const`, as runtime behaviour is ill-defined

7 years agoupdate README (#1918)
kzc [Thu, 11 May 2017 19:36:33 +0000 (15:36 -0400)]
update README (#1918)

7 years agofix typo (#1913)
Alexis Tyler [Thu, 11 May 2017 12:24:33 +0000 (21:54 +0930)]
fix typo (#1913)

7 years agoupdate documentation (#1909)
Alex Lam S.L [Thu, 11 May 2017 09:50:50 +0000 (17:50 +0800)]
update documentation (#1909)

- clarify options on `--source-map`
- fix `minify()` examples

fixes #1905

7 years agov3.0.3
Alex Lam S.L [Wed, 10 May 2017 03:45:03 +0000 (11:45 +0800)]
v3.0.3

7 years agoUpdate issue template: change harmony to uglify-es (#1900)
kzc [Wed, 10 May 2017 03:07:54 +0000 (23:07 -0400)]
Update issue template: change harmony to uglify-es (#1900)

7 years agoRemove unnecessary `git clone` instructions in README (#1897)
kzc [Wed, 10 May 2017 03:06:50 +0000 (23:06 -0400)]
Remove unnecessary `git clone` instructions in README (#1897)

7 years agoChange `harmony` to `uglify-es` in master README (#1895)
kzc [Tue, 9 May 2017 21:07:45 +0000 (17:07 -0400)]
Change `harmony` to `uglify-es` in master README (#1895)

7 years agogracefully handle non-`Error` being thrown (#1893)
Alex Lam S.L [Tue, 9 May 2017 20:20:59 +0000 (04:20 +0800)]
gracefully handle non-`Error` being thrown (#1893)

7 years agoextend test timeout
Alex Lam S.L [Tue, 9 May 2017 18:43:12 +0000 (02:43 +0800)]
extend test timeout

Travis has gone a lot slower recently, and most test failures are due to time-out on this particular test.

7 years agov3.0.2
Alex Lam S.L [Tue, 9 May 2017 17:52:00 +0000 (01:52 +0800)]
v3.0.2

7 years agoprint error stack in CLI (#1890)
Alex Lam S.L [Tue, 9 May 2017 08:36:44 +0000 (16:36 +0800)]
print error stack in CLI (#1890)

7 years agomention `minify().error`
Alex Lam S.L [Tue, 9 May 2017 08:08:04 +0000 (16:08 +0800)]
mention `minify().error`

7 years agoupdate `minify()` usage in `test/ufuzz.js` (#1888)
Alex Lam S.L [Tue, 9 May 2017 07:58:46 +0000 (15:58 +0800)]
update `minify()` usage in `test/ufuzz.js` (#1888)

fixes #1887

7 years ago[3.x] fix documentation for beautify options (#1882)
kzc [Mon, 8 May 2017 15:06:56 +0000 (11:06 -0400)]
[3.x] fix documentation for beautify options (#1882)

- use underscores rather than dashes.

7 years agov3.0.1
Alex Lam S.L [Sun, 7 May 2017 23:05:57 +0000 (07:05 +0800)]
v3.0.1

7 years agoreturn `Error` from `minify()` (#1880)
Alex Lam S.L [Sun, 7 May 2017 23:05:19 +0000 (07:05 +0800)]
return `Error` from `minify()` (#1880)

Have `minify()` return `Error` in `result.error` rather than throwing it.

7 years agosupport dumping AST (#1879)
Alex Lam S.L [Sun, 7 May 2017 22:23:01 +0000 (06:23 +0800)]
support dumping AST (#1879)

Re-order `AST_Binary` properties to make dump more readable.

closes #769

7 years agodeprecate low level API (#1877)
Alex Lam S.L [Sun, 7 May 2017 19:24:42 +0000 (03:24 +0800)]
deprecate low level API (#1877)

fixes #1872

7 years agosupport `minify()` output as AST (#1878)
Alex Lam S.L [Sun, 7 May 2017 18:11:45 +0000 (02:11 +0800)]
support `minify()` output as AST (#1878)

- `options.output.ast` (default `false`)
- `options.output.code` (default `true`)

7 years agoupdate documentation
Alex Lam S.L [Sat, 6 May 2017 19:02:46 +0000 (03:02 +0800)]
update documentation

Remove deprecated CLI option

7 years agofix test for #1865 (#1873)
Alex Lam S.L [Sat, 6 May 2017 18:56:02 +0000 (02:56 +0800)]
fix test for #1865 (#1873)

7 years agov3.0.0
Alex Lam S.L [Sat, 6 May 2017 15:51:10 +0000 (23:51 +0800)]
v3.0.0

7 years agofix `unsafe` on `evaluate` of `reduce_vars` (#1870)
Alex Lam S.L [Sat, 6 May 2017 15:18:55 +0000 (23:18 +0800)]
fix `unsafe` on `evaluate` of `reduce_vars` (#1870)

Determine if variables with non-constant values can escape and be modified.

fixes #1865

7 years agokill `opera` (#1869)
Alex Lam S.L [Sat, 6 May 2017 09:42:07 +0000 (17:42 +0800)]
kill `opera` (#1869)

7 years agoenhance `collapse_vars` (#1862)
Alex Lam S.L [Sat, 6 May 2017 08:15:43 +0000 (16:15 +0800)]
enhance `collapse_vars` (#1862)

- extend expression types
  - `a++`
  - `a=x;`
- extend scan range
  - `for(init;;);`
  - `switch(expr){case expr:}`
  - `a = x; a = a || y;`
- terminate upon `debugger;`

closes #1821
fixes #27
fixes #315
fixes #1858

7 years agorename variables for better readability (#1863)
Alex Lam S.L [Tue, 2 May 2017 12:47:10 +0000 (20:47 +0800)]
rename variables for better readability (#1863)

7 years agoupdate `test/benchmark.js` resources (#1864)
Alex Lam S.L [Tue, 2 May 2017 11:48:12 +0000 (19:48 +0800)]
update `test/benchmark.js` resources (#1864)

7 years agorestore report of supported options (#1861)
Alex Lam S.L [Mon, 1 May 2017 17:42:29 +0000 (01:42 +0800)]
restore report of supported options (#1861)

fixes #1859

7 years agoimprove literal return optimization (#1860)
kzc [Mon, 1 May 2017 16:10:11 +0000 (12:10 -0400)]
improve literal return optimization (#1860)

7 years agoenforce `toplevel` on other compress options (#1855)
Alex Lam S.L [Sun, 30 Apr 2017 14:52:36 +0000 (22:52 +0800)]
enforce `toplevel` on other compress options (#1855)

Respect "funcs" and "vars" properly.

fixes #1850

7 years agoUpdate ISSUE_TEMPLATE.md (#1846)
kzc [Tue, 25 Apr 2017 17:30:43 +0000 (13:30 -0400)]
Update ISSUE_TEMPLATE.md (#1846)

7 years agofix fuzzer on `this` (#1842)
Alex Lam S.L [Sun, 23 Apr 2017 19:15:03 +0000 (03:15 +0800)]
fix fuzzer on `this` (#1842)

- forbid redeclaration of `this`
- suppress probability for `this` within nested functions

7 years agofix `unused` on for-in statements (#1843)
Alex Lam S.L [Sun, 23 Apr 2017 19:14:01 +0000 (03:14 +0800)]
fix `unused` on for-in statements (#1843)

Only need to avoid `var` within the initialisation block.

fixes #1841

7 years agoimprove parser under "use strict" (#1836)
Alex Lam S.L [Sun, 23 Apr 2017 12:05:22 +0000 (20:05 +0800)]
improve parser under "use strict" (#1836)

- `const` without value
- `delete` of expression
- redefining `arguments` or `eval`

extend `test/ufuzz.js`
- optionally generate "use strict"
- improve handling of test cases with syntax errors
- group IIFE generation
- generate bare anonymous functions
- workaround `console.log()` for `new function()`
- generate expressions with `this`

fixes #1810

7 years agoupdate README for 3.x (#1840)
kzc [Sat, 22 Apr 2017 20:28:32 +0000 (16:28 -0400)]
update README for 3.x (#1840)

7 years agofix `AST_For.init` patch-up in `drop_unused()` (#1839)
Alex Lam S.L [Sat, 22 Apr 2017 17:51:56 +0000 (01:51 +0800)]
fix `AST_For.init` patch-up in `drop_unused()` (#1839)

fixes #1838

7 years agofix label-related bugs (#1835)
Alex Lam S.L [Sat, 22 Apr 2017 14:15:04 +0000 (22:15 +0800)]
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

7 years agoFix API reference examples (#1834)
Roman Dvornov [Thu, 20 Apr 2017 18:23:41 +0000 (21:23 +0300)]
Fix API reference examples (#1834)

7 years agoimprove `unused` (#1832)
Alex Lam S.L [Thu, 20 Apr 2017 05:06:14 +0000 (13:06 +0800)]
improve `unused` (#1832)

- extract leading value with side-effects out of `var` statement
- reduce scanning of `AST_Definitions` from 3 passes to just once

7 years agofix `unused` on labeled for-loop (#1831)
Alex Lam S.L [Wed, 19 Apr 2017 20:18:38 +0000 (04:18 +0800)]
fix `unused` on labeled for-loop (#1831)

fixes #1830

7 years agoimprove `collapse_vars` on `AST_Var` (#1828)
Alex Lam S.L [Tue, 18 Apr 2017 20:49:09 +0000 (04:49 +0800)]
improve `collapse_vars` on `AST_Var` (#1828)

Perform the same cascaded scanning within `var` statement as we do on array of statements.

7 years agofix parser bugs & CLI reporting (#1827)
Alex Lam S.L [Tue, 18 Apr 2017 20:27:13 +0000 (04:27 +0800)]
fix parser bugs & CLI reporting (#1827)

fixes #1825

7 years agoextend `cascade` into `a.b` (#1829)
Alex Lam S.L [Tue, 18 Apr 2017 20:17:15 +0000 (04:17 +0800)]
extend `cascade` into `a.b` (#1829)

fixes #27

7 years agoclean up `collapse_vars` (#1826)
Alex Lam S.L [Tue, 18 Apr 2017 13:45:34 +0000 (21:45 +0800)]
clean up `collapse_vars` (#1826)

- remove overlap in functionality of singular, consecutive reference of constant value
- remove workarounds for previous bugs in `lib/scope.js`
- distribute recursive `collapse_single_use_vars()` calls to their respective `OPT(AST_Node)`
- enable collapsing of variables within a single `AST_Definitions`

7 years agosupport safe reassignments in `reduce_vars` (#1823)
Alex Lam S.L [Tue, 18 Apr 2017 05:38:42 +0000 (13:38 +0800)]
support safe reassignments in `reduce_vars` (#1823)

`var a=1;a=2;x(a)` => `x(2)`

fix pre-existing issues
- reference counting on assignment
- walking of anonymous functions
- chained assignment

7 years agofix `reduce_vars` on conditionals (#1822)
Alex Lam S.L [Mon, 17 Apr 2017 17:44:23 +0000 (01:44 +0800)]
fix `reduce_vars` on conditionals (#1822)

7 years agofix `reduce_vars` on boolean binary expressions (#1819)
Alex Lam S.L [Mon, 17 Apr 2017 09:24:29 +0000 (17:24 +0800)]
fix `reduce_vars` on boolean binary expressions (#1819)

Side effects of `&&` and `||` have not mattered until #1814, which takes assignment expressions into account.

7 years agocompress duplicated variable definitions (#1817)
Alex Lam S.L [Mon, 17 Apr 2017 09:11:29 +0000 (17:11 +0800)]
compress duplicated variable definitions (#1817)

These are surprisingly common, as people reuse the same variable name within loops or switch branches.

7 years agofix `reduce_vars` within try-block (#1818)
Alex Lam S.L [Mon, 17 Apr 2017 06:03:29 +0000 (14:03 +0800)]
fix `reduce_vars` within try-block (#1818)

Possible partial execution due to exceptions.

7 years agoenhance `reduce_vars` (#1814)
Alex Lam S.L [Sun, 16 Apr 2017 17:36:50 +0000 (01:36 +0800)]
enhance `reduce_vars` (#1814)

- allow immediate assignment after declaration of variable
- relax modification rule for immutable value
- fix order of visit for TreeWalker
- remove extraneous code

7 years agofix variable substitution (#1816)
Alex Lam S.L [Sun, 16 Apr 2017 09:25:39 +0000 (17:25 +0800)]
fix variable substitution (#1816)

- let `collapse_vars` take care of value containing any symbols
- improve overhead accounting

7 years agoupdate README (#1813)
Alex Lam S.L [Sat, 15 Apr 2017 20:04:28 +0000 (04:04 +0800)]
update README (#1813)

- mention major version bump
- remove reference to internal API

7 years agounify CLI & API under `minify()` (#1811)
Alex Lam S.L [Sat, 15 Apr 2017 15:50:50 +0000 (23:50 +0800)]
unify CLI & API under `minify()` (#1811)

- rename `screw_ie8` to `ie8`
- rename `mangle.except` to `mangle.reserved`
- rename `mangle.properties.ignore_quoted` to `mangle.properties.keep_quoted`
- compact `sourceMap` options
- more stringent verification on input `options`
- toplevel shorthands
  - `ie8`
  - `keep_fnames`
  - `toplevel`
  - `warnings`
- support arrays and unquoted string values on CLI
- drop `fromString` from `minify()`
  - `minify()` no longer handles any `fs` operations
- unify order of operations for `mangle_properties()` on CLI & API
  - `bin/uglifyjs` used to `mangle_properties()` before even `Compressor`
  - `minify()` used to `mangle_properties()` after `Compressor` but before `mangle_names()`
  - both will now do `Compressor`, `mangle_names()` then `mangle_properties()`
- `options.parse` / `--parse` for parser options beyond `bare_returns`
- add `mangle.properties.builtins` to disable built-in reserved list
  - disable with `--mangle-props builtins` on CLI
- `warnings` now off by default
- add `--warn` and `--verbose` on CLI
- drop `--enclose`
- drop `--export-all`
- drop `--reserved-file`
  - use `--mangle reserved` instead
- drop `--reserve-domprops`
  - enabled by default, disable with `--mangle-props domprops`
- drop `--prefix`
  - use `--source-map base` instead
- drop `--lint`
- remove `bin/extract-props.js`
- limit exposure of internal APIs
- update documentations

closes #96
closes #102
closes #136
closes #166
closes #243
closes #254
closes #261
closes #311
closes #700
closes #748
closes #912
closes #1072
closes #1366
fixes #101
fixes #123
fixes #124
fixes #263
fixes #379
fixes #419
fixes #423
fixes #461
fixes #465
fixes #576
fixes #737
fixes #772
fixes #958
fixes #1036
fixes #1142
fixes #1175
fixes #1220
fixes #1223
fixes #1280
fixes #1359
fixes #1368

7 years agodrop `angular` (#1812)
Alex Lam S.L [Fri, 14 Apr 2017 21:52:29 +0000 (05:52 +0800)]
drop `angular` (#1812)

Remove support for `@ngInject` as there are proper alternatives anyway.

7 years agoconvert `AST_Seq` from binary tree to array (#1460)
Alex Lam S.L [Wed, 12 Apr 2017 13:56:27 +0000 (21:56 +0800)]
convert `AST_Seq` from binary tree to array (#1460)

- rename `AST_Seq` to `AST_Sequence`
- raise default sequences_limit from 200 to 800

7 years agov2.8.22
Alex Lam S.L [Sun, 9 Apr 2017 03:36:57 +0000 (11:36 +0800)]
v2.8.22

7 years agofix LHS cases for NaN & friends (#1804)
Alex Lam S.L [Sat, 8 Apr 2017 19:18:14 +0000 (03:18 +0800)]
fix LHS cases for NaN & friends (#1804)

`Infinity = beyond` should not become `1/0 = beyond`

7 years agoenhance `test/ufuzz.js` (#1803)
Alex Lam S.L [Sat, 8 Apr 2017 17:36:38 +0000 (01:36 +0800)]
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

7 years agofix a couple of bugs in `global_defs` (#1802)
Alex Lam S.L [Sat, 8 Apr 2017 08:46:25 +0000 (16:46 +0800)]
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

7 years agofix `delete` corner cases (#1799)
Alex Lam S.L [Sat, 8 Apr 2017 06:25:28 +0000 (14:25 +0800)]
fix `delete` corner cases (#1799)

- assignment
- boolean
- conditional
- sequence

7 years agoextend ufuzz generator (#1783)
Alex Lam S.L [Fri, 7 Apr 2017 10:47:30 +0000 (18:47 +0800)]
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

7 years agofix `pure_getters` for chained property access (#1798)
Alex Lam S.L [Fri, 7 Apr 2017 09:06:01 +0000 (17:06 +0800)]
fix `pure_getters` for chained property access (#1798)

7 years agofix corner cases with `delete` (#1796)
Alex Lam S.L [Fri, 7 Apr 2017 07:39:59 +0000 (15:39 +0800)]
fix corner cases with `delete` (#1796)

`delete Infinity` returns `false` where as `delete (1/0)` returns `true`

7 years agointroduce "strict" to `pure_getters` (#1795)
Alex Lam S.L [Fri, 7 Apr 2017 05:31:58 +0000 (13:31 +0800)]
introduce "strict" to `pure_getters` (#1795)

7 years agofix `reduce_vars` on catch variable (#1794)
Alex Lam S.L [Fri, 7 Apr 2017 04:32:56 +0000 (12:32 +0800)]
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.

7 years agofix incorrect context in variable substitution (#1791)
Alex Lam S.L [Thu, 6 Apr 2017 19:42:17 +0000 (03:42 +0800)]
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`.

7 years agoenable `inline_script` by default (#1793)
Alex Lam S.L [Thu, 6 Apr 2017 16:45:51 +0000 (00:45 +0800)]
enable `inline_script` by default (#1793)

7 years agoimprove `pure_getters` (#1786)
Alex Lam S.L [Thu, 6 Apr 2017 03:18:59 +0000 (11:18 +0800)]
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`

7 years agoimplement delayed resolution for `reduce_vars` (#1788)
Alex Lam S.L [Wed, 5 Apr 2017 13:06:42 +0000 (21:06 +0800)]
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

7 years agooptimise `do{...}while(false)` (#1785)
Alex Lam S.L [Tue, 4 Apr 2017 15:48:22 +0000 (23:48 +0800)]
optimise `do{...}while(false)` (#1785)

- better heuristics to avoid issues like #1532
- fix `TreeWalker.loopcontrol_target()`
  - `continue` cannot refer to `switch` blocks

7 years agoremove `--mangle-props` from fuzzing (#1777)
Alex Lam S.L [Tue, 4 Apr 2017 08:24:16 +0000 (16:24 +0800)]
remove `--mangle-props` from fuzzing (#1777)

The inherently unsafe nature makes this feature unsuitable to be tested this way.

fixes #1774

7 years agoexclude mangling of special property names (#1779)
Alex Lam S.L [Mon, 3 Apr 2017 19:50:19 +0000 (03:50 +0800)]
exclude mangling of special property names (#1779)

- `null`
- `true`
- `false`
- numeric literals

7 years agofix `mangleProperties` on identifiers (#1776)
Alex Lam S.L [Mon, 3 Apr 2017 15:17:47 +0000 (23:17 +0800)]
fix `mangleProperties` on identifiers (#1776)

- fix handling of "-Infinity"
- add test case for "-0"

reverts #1481

7 years agoworkaround Node.js bugs (#1775)
Alex Lam S.L [Mon, 3 Apr 2017 10:56:11 +0000 (18:56 +0800)]
workaround Node.js bugs (#1775)

Wrap test code in IIFE before passing to `vm`

fixes #1768
fixes #1771

7 years agofix mangleProperties of `undefined` & `Infinity` (#1772)
Alex Lam S.L [Mon, 3 Apr 2017 04:31:05 +0000 (12:31 +0800)]
fix mangleProperties of `undefined` & `Infinity` (#1772)

`NaN` already works by the happy accident of `Number.NaN`

fixes #1770

7 years agoextend `test/ufuzz.js` (#1769)
Alex Lam S.L [Sun, 2 Apr 2017 20:00:33 +0000 (04:00 +0800)]
extend `test/ufuzz.js` (#1769)

New expressions:
- property access
- array literal
- object literal

Miscellaneous:
- reduce execution timeout
- test `toplevel` and `mangleProperties`

7 years agov2.8.21
Alex Lam S.L [Sun, 2 Apr 2017 09:07:55 +0000 (17:07 +0800)]
v2.8.21

7 years agofix corner case in `switch` (#1765)
Alex Lam S.L [Sun, 2 Apr 2017 09:07:20 +0000 (17:07 +0800)]
fix corner case in `switch` (#1765)