kzc
569757d14d
fix collapse_vars regression in destructuring ( #2897 )
...
fixes #2896
2018-02-09 04:28:35 +08:00
Alex Lam S.L
aebc916215
harmony-v3.3.10
2018-02-08 19:51:03 +08:00
alexlamsl
ebf5096864
fix tests
2018-02-08 18:29:44 +08:00
alexlamsl
630b09050f
Merge branch 'master' into harmony-v3.3.10
2018-02-08 18:26:42 +08:00
Alex Lam S.L
0cfbd79aa1
v3.3.10
2018-02-08 10:16:16 +00:00
Alex Lam S.L
d66d86f20b
account for exceptions in AST_Assign.left ( #2892 )
...
fixes #2891
2018-02-08 03:31:51 +08:00
Alex Lam S.L
905325d3e2
update dependencies ( #2889 )
...
acorn 5.4.1
commander 2.14.1
semver 5.5.0
2018-02-07 18:13:18 +08:00
Alex Lam S.L
dea0cc0662
mention file encoding ( #2887 )
2018-02-06 16:48:49 +08:00
Alex Lam S.L
d69d8007d6
evaluate to{Low,Upp}erCase() under unsafe ( #2886 )
2018-02-06 15:57:15 +08:00
Dan
c0b8f2a16d
add information on testing and code style ( #2885 )
...
fixes #2884
2018-02-06 14:19:28 +08:00
Dan
cb0257dbbf
describe a few compiler assumptions ( #2883 )
2018-02-06 14:19:03 +08:00
kzc
149a569ac8
fix inline within arrow functions ( #2881 )
...
fixes #2874
2018-02-05 15:01:30 +08:00
Dan
9637f51b68
change undefined == x to null == x ( #2882 )
...
fixes #2871
2018-02-05 15:00:23 +08:00
Alex Lam S.L
3026bd8975
improve exceptional flow compression by collapse_vars ( #2880 )
2018-02-04 04:18:22 +08:00
Alex Lam S.L
78a44d5ab0
maintain order between side-effects and externally observable assignments ( #2879 )
...
fixes #2878
2018-02-04 03:58:49 +08:00
kzc
4b3c0652b7
fix arguments in arrow functions ( #2877 )
2018-02-03 14:51:19 +08:00
Alex Lam S.L
7e13c0db40
handle break & continue in collapse_vars ( #2875 )
...
fixes #2873
2018-02-03 07:58:43 +08:00
Alex Lam S.L
e6a2e9e4d0
allow collapse_vars across conditional branches ( #2867 )
2018-02-03 02:44:40 +08:00
Alex Lam S.L
e773f03927
fix assignment logic in reduce_vars ( #2872 )
...
fixes #2869
2018-02-03 01:33:09 +08:00
Alex Lam S.L
b16380d669
fix missing corner case in #2855 ( #2868 )
2018-02-02 18:08:56 +08:00
Ryan Gunn
334b07a3db
Update License Copyright Year to 2018 ( #2866 )
2018-02-02 16:30:01 +08:00
Alex Lam S.L
3cc1527f00
always test for rename ( #2865 )
2018-02-01 21:42:55 +08:00
Alex Lam S.L
525a61fb55
better fix for #2858 ( #2864 )
2018-02-01 20:06:36 +08:00
Alex Lam S.L
c3a002ff97
account for side-effects in comparisons of null & undefined ( #2863 )
2018-02-01 19:15:17 +08:00
Alex Lam S.L
fad6766a90
simplify comparisons with undefined & null ( #2862 )
...
fixes #2857
2018-02-01 16:50:54 +08:00
Alex Lam S.L
aa664dea0a
avoid evaluate of compound assignment after dead_code transform ( #2861 )
...
fixes #2860
2018-02-01 16:18:29 +08:00
Alex Lam S.L
102f994b9d
account for declaration assignment in collapse_vars ( #2859 )
...
fixes #2858
2018-02-01 15:09:53 +08:00
Alex Lam S.L
2a4c68be4f
relax collapse_vars on AST_Exit ( #2855 )
...
First introduced in #1862 to stop assignments to migrate beyond `return` or `throw`. Since then `collapse_vars` has been improved to handle various side-effect-related corner cases.
2018-01-31 23:49:59 +08:00
Alex Lam S.L
541e6011af
improve symbol replacement heuristic ( #2851 )
2018-01-29 17:41:15 +08:00
Alex Lam S.L
6fa3fbeae8
compress chained compound assignments ( #2850 )
2018-01-29 15:13:25 +08:00
Alex Lam S.L
8e595171b9
harmony-v3.3.9
2018-01-27 22:56:06 +08:00
alexlamsl
6973abbfe1
Merge branch 'master' into harmony-v3.3.9
2018-01-27 20:58:49 +08:00
Alex Lam S.L
4eb4cb656c
v3.3.9
2018-01-27 12:56:34 +00:00
Alex Lam S.L
193612ac67
fix accounting after conversion to assignment ( #2847 )
...
Missing reference to `AST_SymbolRef` created by `unused` causes `collapse_vars` to misbehave.
fixes #2846
2018-01-26 14:21:11 +08:00
Alex Lam S.L
95cfce68ea
backport of #2835 ( #2841 )
2018-01-23 05:45:45 +08:00
kzc
e0461dc3c8
fix for-in/of regression with let or const loop variable ( #2840 )
...
fixes #2835
2018-01-23 05:45:02 +08:00
Alex Lam S.L
ec4202590d
drop assignments to constant expressions only ( #2839 )
...
fixes #2838
2018-01-23 02:49:54 +08:00
Alex Lam S.L
5e2cd07d6f
handle duplicate function declarations correctly ( #2837 )
...
fixes #2836
2018-01-23 01:28:09 +08:00
kzc
bea9dbd812
enable reminify on harmony branch to avoid regressions ( #2834 )
...
- can skip known test failures with `reminify: false`
2018-01-22 18:20:29 +08:00
Alex Lam S.L
bc01a85ba0
add parenthesis around sequence in yield ( #2833 )
...
fixes #2832
2018-01-22 14:57:23 +08:00
Alex Lam S.L
c7c7960b5f
harmony-v3.3.8
2018-01-21 16:44:17 +08:00
alexlamsl
fc98d212db
allow duplicate property names in object literals for ES6+
2018-01-21 15:58:14 +08:00
alexlamsl
13accdd745
fix tests
2018-01-21 15:53:32 +08:00
alexlamsl
287ec730f7
Merge branch 'master' into harmony-v3.3.8
2018-01-21 15:52:25 +08:00
Alex Lam S.L
06166df999
v3.3.8
2018-01-21 07:08:01 +00:00
Alex Lam S.L
e2dc9cf091
fix unsafe evaluate of AST_Array ( #2825 )
...
fixes #2822
2018-01-21 01:39:44 +08:00
Alex Lam S.L
069df27bf1
enable unsafe for test/ufuzz.js ( #2819 )
...
- introduce `unsafe_undefined`
- safer `.toString()` compression
Miscellaneous
- rename `unsafe_Function`
2018-01-19 23:47:42 +08:00
Alex Lam S.L
3e7873217c
improve unused on built-in functions ( #2817 )
2018-01-19 20:41:57 +08:00
Alex Lam S.L
e21bab7ce6
avoid duplicate property names in object literals under "use strict" ( #2818 )
...
fixes #2816
2018-01-19 20:13:50 +08:00
Alex Lam S.L
ac9a168fba
fix & improve test/ufuzz.js ( #2815 )
...
- use correct `options` when testing `rename`
- mask arbitrarily assigned function IDs to reduce rate of false positives
2018-01-19 16:51:59 +08:00
Alex Lam S.L
81b64549ce
fix time-out for respawned test/ufuzz.js ( #2814 )
2018-01-19 06:11:19 +08:00
Alex Lam S.L
082e004b87
compress undefined property names ( #2811 )
...
- enforce property names as string
- handle `void 0` as `undefined` in `hoist_props` & `reduce_vars`
2018-01-19 00:36:30 +08:00
kzc
983e69128b
fix join_vars property assignment for negative array index ( #2810 )
...
fixes #2790
2018-01-18 21:52:54 +08:00
Alex Lam S.L
b335912e86
enhance test/ufuzz.js ( #2808 )
...
- standalone test for `rename`
- handle `keep_fargs` & `rename` upon failure
2018-01-18 14:08:05 +08:00
Alex Lam S.L
cc07f3b806
faster output of comments ( #2806 )
2018-01-18 02:57:33 +08:00
Alex Lam S.L
07e4b64f3a
fix AST_Scope.clone() ( #2803 )
...
fixes #2799
2018-01-17 21:33:13 +08:00
Alex Lam S.L
d3ce2bc9e7
suppress unsafe_proto for LHS expressions ( #2804 )
2018-01-17 20:41:51 +08:00
Alex Lam S.L
cff3bf4914
configure rename with CLI ( #2802 )
2018-01-17 15:12:22 +08:00
kzc
4f57d8746b
fix various for-of bugs ( #2800 )
...
- disable `rename` pass on harmony due to problem with for-of loops
fixes #2794
2018-01-17 14:46:23 +08:00
Alex Lam S.L
79cfac77bd
extend join_vars & sequences ( #2798 )
2018-01-17 13:58:27 +08:00
Alex Lam S.L
224c14d49d
improve mocha tests ( #2797 )
...
- workaround sporadic delays from Travis CI
2018-01-16 17:51:25 +08:00
Alex Lam S.L
7857354d85
improve test/travis-ufuzz.js ( #2795 )
...
- print usage
- support concurrent jobs
- improve instance utilisation
- resume after V8 self-destruct
2018-01-16 17:33:21 +08:00
Alex Lam S.L
b4aef753e7
general improvements around AST_ForIn ( #2796 )
...
- compress using `collapse_vars`
- remove unused `name`
- simplify `loop_body`
2018-01-16 17:03:12 +08:00
Joël Galeran
424173d311
fix typo in README ( #2792 )
2018-01-16 10:29:38 +08:00
Alex Lam S.L
ec7cd1dcf7
handle VM failure gracefully ( #2791 )
2018-01-15 23:41:39 +08:00
Alex Lam S.L
7def684730
improve test/travis-ufuzz.js ( #2789 )
...
- wait for instance to boot
- run on forked repositories
- workaround `request_limit_reached`
2018-01-15 19:18:21 +08:00
Alex Lam S.L
10f961c27b
enhance collapse_vars ( #2788 )
2018-01-15 18:47:23 +08:00
Alex Lam S.L
b483678ca7
avoid suboptimal termination in passes ( #2787 )
2018-01-15 16:42:31 +08:00
Alex Lam S.L
cbbe6fad60
avoid double counting within single-use functions ( #2785 )
...
fixes #2783
2018-01-15 16:42:15 +08:00
Alex Lam S.L
f96929c031
improve test/travis-ufuzz.js ( #2786 )
...
- use more RAM
- show progress in console
- report failure as job status
2018-01-15 15:08:35 +08:00
Alex Lam S.L
2b6657e967
run test/ufuzz.js when Travis CI is idle ( #2784 )
2018-01-15 08:52:11 +08:00
Alex Lam S.L
1b2e6b81a2
harmony-v3.3.7
2018-01-14 19:24:49 +08:00
alexlamsl
f9e9898dc1
Merge branch 'master' into harmony-v3.3.7
2018-01-14 17:15:16 +08:00
Alex Lam S.L
7c0c92943f
v3.3.7
2018-01-14 09:13:26 +00:00
Alex Lam S.L
62a66dfff4
fix & extend join_vars for object assigments ( #2781 )
2018-01-14 17:11:31 +08:00
kzc
c44d78db55
add block_scope to --output ast ( #2780 )
2018-01-14 15:37:18 +08:00
Alex Lam S.L
8c763bf2b5
fix mangle of block-scoped variables ( #2779 )
...
fixes #2762
2018-01-14 12:12:29 +08:00
kzc
2cab348341
improve SymbolDef info in --output ast ( #2778 )
...
* SymbolDef info (a.k.a. `thedef`) is now represented as a string containing `"ID name [mangled_name]"`.
* Enhance display of `globals`, `variables`, `functions` and `enclosed`.
* `SymbolDef.next_id` starts at `1` and the `id` is adjusted for `-o ast` display.
2018-01-14 01:40:51 +08:00
Alex Lam S.L
aa1786dedf
harmony-v3.3.6
2018-01-13 23:40:14 +08:00
alexlamsl
0d5df271a1
add tests for #2740
2018-01-13 22:59:01 +08:00
alexlamsl
b56e1f178f
add test for #2747
2018-01-13 22:58:52 +08:00
alexlamsl
9acace2cb6
fix test
2018-01-13 13:57:05 +08:00
alexlamsl
0f2be1456c
Merge branch 'master' into harmony-v3.3.6
2018-01-13 13:53:31 +08:00
Alex Lam S.L
460218a3f8
v3.3.6
2018-01-13 05:37:42 +00:00
Alex Lam S.L
e49416e4aa
fix reduce_vars on AST_Accessor ( #2776 )
...
fixes #2774
2018-01-13 02:46:14 +08:00
kzc
d4d7d99b70
add SymbolDef IDs to --output ast ( #2772 )
2018-01-12 15:41:09 +08:00
Alex Lam S.L
6a696d0a7b
fix output of imported AST ( #2771 )
2018-01-12 01:05:49 +08:00
Alex Lam S.L
1c9e13f47d
update dependencies ( #2770 )
...
- acorn@5.3.0
- commander@2.13 .0
2018-01-12 00:32:17 +08:00
Alex Lam S.L
b757450cd8
fix nested unused assignments ( #2769 )
...
fixes #2768
2018-01-11 23:13:44 +08:00
Alex Lam S.L
23ec484806
fix corner case in #2763 ( #2766 )
2018-01-11 21:18:08 +08:00
Alex Lam S.L
f1e1bb419a
join object assignments ( #2763 )
2018-01-11 17:08:21 +08:00
Alex Lam S.L
6a0af85c8b
skip only vars in if_return ( #2759 )
...
fixes #2747
2018-01-10 19:08:46 +08:00
Alex Lam S.L
1eb15f46f1
fix reduce_vars with uninitialized let variables ( #2760 )
...
fixes #2757
2018-01-10 18:40:54 +08:00
Alex Lam S.L
09269be974
enhance conditionals ( #2758 )
...
`x ? y || z : z` --> `x && y || z`
2018-01-10 16:59:57 +08:00
kzc
137cb73d1f
have parser trap const declaration without value ( #2756 )
...
fixes #2751
2018-01-10 12:31:46 +08:00
Alex Lam S.L
bf832cde16
improve synergy between compress and rename ( #2755 )
2018-01-09 17:55:41 +08:00
Alex Lam S.L
2972d58dbb
patch variable declaractions extracted within catch ( #2753 )
...
fixes #2749
2018-01-09 13:54:35 +08:00
Alex Lam S.L
2e22d38a02
improve rename reproducibility ( #2754 )
...
fixes #2752
2018-01-09 13:53:05 +08:00
Alex Lam S.L
ce27bcd69a
compress loops with immediate break ( #2746 )
...
fixes #2740
2018-01-08 14:30:18 +08:00
Alex Lam S.L
1f3f8f25eb
harmony-v3.3.5
2018-01-08 00:30:45 +08:00
alexlamsl
4b1799ecdd
disable reminify()
...
fix-up for #2708
2018-01-07 22:32:29 +08:00
alexlamsl
7a8eff62ca
Merge branch 'master' into harmony-v3.3.5
2018-01-07 20:35:53 +08:00
Alex Lam S.L
9336cc8247
v3.3.5
2018-01-07 11:51:36 +00:00
Alex Lam S.L
9809567dfc
improve process.exit() workaround ( #2741 )
...
- use public API
- fix issue with Node.js 0.10 on WIndows
2018-01-07 17:53:50 +08:00
Alex Lam S.L
1ee8be8d91
fix recursive function inline ( #2738 )
...
fixes #2737
2018-01-07 15:31:24 +08:00
Alex Lam S.L
8430c2f9f8
enable AppVeyor CI ( #2739 )
2018-01-07 14:14:58 +08:00
Alex Lam S.L
659c8a7632
handle trailing line comments correctly ( #2736 )
...
fixes #2734
2018-01-06 21:05:21 +08:00
Alex Lam S.L
3564b4f20d
compress RegExp() in unsafe ( #2735 )
2018-01-06 21:04:47 +08:00
Alex Lam S.L
3505a3604a
enhance unsafe_proto ( #2733 )
2018-01-06 06:16:51 +08:00
kzc
9b1bc6c014
ufuzz: add strings "a", "b", "c" to VALUES ( #2732 )
2018-01-06 05:54:53 +08:00
Alex Lam S.L
9f23185f2b
fix corner case with arguments as function name ( #2729 )
...
fixes #2728
2018-01-05 22:21:18 +08:00
Alex Lam S.L
b82feb9302
improve if_return ( #2727 )
2018-01-05 20:24:30 +08:00
Alex Lam S.L
7f2a591c7e
warn on deprecated features ( #2726 )
...
- `function.arguments`
- `function.callers`
fixes #2719
2018-01-05 19:36:02 +08:00
Alex Lam S.L
f76b5e0f43
fix hoist_props on const ( #2724 )
...
fixes #2710
2018-01-05 06:23:53 +08:00
Alex Lam S.L
afbcebddf6
fix mangle name collision across files ( #2722 )
2018-01-05 05:08:09 +08:00
Alex Lam S.L
484e484571
fix corner case in inline ( #2720 )
2018-01-04 23:38:37 +08:00
Alex Lam S.L
6f3f21233f
reminify tests upon expect_stdout ( #2716 )
2018-01-04 20:13:05 +08:00
Alex Lam S.L
a6873a3859
forbid block-scoped AST_Defun in strict mode ( #2718 )
2018-01-04 18:45:51 +08:00
Alex Lam S.L
7a6d452b54
preserve constant modification under strict mode ( #2717 )
2018-01-04 15:53:53 +08:00
Alex Lam S.L
9b58b54e2d
extend inline ( #2714 )
...
- compress `function` with variables within loops
- restrict to `AST_Var` for better compatibility with ES6+
2018-01-04 12:58:40 +08:00
Alex Lam S.L
c598a12af9
apply collapse_vars to loop conditions ( #2712 )
2018-01-04 03:18:28 +08:00
Alex Lam S.L
cfe3a98ce5
drop unused assignment based on reduce_vars ( #2709 )
2018-01-04 01:03:33 +08:00
Alex Lam S.L
14778e049b
fix reduce_vars on AST_Defun ( #2708 )
2018-01-03 17:18:38 +08:00
Alex Lam S.L
446fb0198b
extend __PURE__ to AST_New ( #2706 )
...
fixes #2705
2018-01-03 04:48:07 +08:00
Alex Lam S.L
7d3cddf9d6
inline functions with AST_Var ( #2688 )
2018-01-03 01:54:44 +08:00
Alex Lam S.L
6dead95eb3
enhance collapse_vars ( #2704 )
2018-01-02 18:42:15 +08:00
Alex Lam S.L
cc931b3ad8
enhance if_return ( #2703 )
2018-01-02 15:09:51 +08:00
Alex Lam S.L
ffc64e2279
mark AST_Var out of block scopes ( #2700 )
2018-01-02 01:37:59 +08:00
Alex Lam S.L
d838b4b52e
reset argument value within loop after inline ( #2699 )
2018-01-02 01:24:53 +08:00
Alex Lam S.L
2f3bddbaca
scan within IIFEs of assigned values ( #2702 )
...
fixes #2701
2018-01-02 01:24:23 +08:00
Alex Lam S.L
673b071637
enhance join_vars & sequences ( #2697 )
...
- nudge declarations without assignments
- within `AST_BlockStatement`
- across `AST_If`
2018-01-01 00:09:26 +08:00
Alex Lam S.L
da82fa59a7
fix inline on duplicate argument names ( #2698 )
2017-12-31 20:59:58 +08:00
Alex Lam S.L
333792352e
reduce hoisting declarations ( #2687 )
2017-12-31 16:15:00 +08:00
Alex Lam S.L
a6653e2102
harmony-v3.3.4
2017-12-31 01:52:35 +08:00
alexlamsl
3bbe839518
Merge branch 'master' into harmony-v3.3.4
2017-12-31 00:05:32 +08:00
Alex Lam S.L
e2ec270b04
v3.3.4
2017-12-31 00:01:14 +08:00
Alex Lam S.L
ace272f0c5
improve test for #2689 ( #2694 )
2017-12-30 15:49:49 +08:00
Alex Lam S.L
ed7a0a454e
fix dead_code on escaped return assignment ( #2693 )
...
fixes #2692
2017-12-30 15:20:25 +08:00
Alex Lam S.L
725aac8b46
fix parse and output of yield ( #2690 )
...
fixes #2689
2017-12-30 03:27:26 +08:00
Alex Lam S.L
d819559a01
minor clean-ups ( #2686 )
2017-12-29 14:04:52 +08:00
Alex Lam S.L
53600e9869
harmony-v3.3.3
2017-12-29 04:36:27 +08:00
alexlamsl
7dea749f58
Merge branch 'master' into harmony-v3.3.3
2017-12-29 03:30:53 +08:00
Alex Lam S.L
8ca49155a8
v3.3.3
2017-12-29 03:07:39 +08:00
Alex Lam S.L
b95e3338d9
fix pure_getters on AST_Binary ( #2681 )
...
fixes #2678
2017-12-28 17:01:01 +08:00
Alex Lam S.L
e40a0ee9c6
improve assignment variations ( #2671 )
2017-12-28 15:36:55 +08:00
Alex Lam S.L
0a3fac6e68
fix parenthesis output of AST_ClassExpression ( #2677 )
...
fixes #2676
2017-12-28 05:07:19 +08:00
Alex Lam S.L
cb62bd98d3
fix function inlining within loops ( #2675 )
...
fixes #2663
2017-12-28 02:53:14 +08:00
Alex Lam S.L
9f7d1f7ac6
fix reduce_vars on AST_Destructuring ( #2672 )
...
fixes #2669
fixes #2670
fixes #2673
2017-12-27 16:30:57 +08:00
Alex Lam S.L
f30790b11b
fix dead_code on return assignments ( #2668 )
...
fixes #2666
2017-12-27 07:40:34 +08:00
Alex Lam S.L
5205dbcbf4
retain recursive function names ( #2667 )
...
fixes #2665
2017-12-27 07:00:12 +08:00
Alex Lam S.L
3ff625de7e
fix bugs on substituted AST_Defun ( #2661 )
...
fixes #2660
2017-12-27 05:31:37 +08:00
Alex Lam S.L
4832bc5d88
replace single-use recursive functions ( #2659 )
...
fixes #2628
2017-12-26 21:25:35 +08:00
Alex Lam S.L
7f342cb3e3
suppress inline within substituted AST_Scope ( #2658 )
...
fixes #2657
2017-12-26 18:56:59 +08:00
Alex Lam S.L
05e7d34ed4
improve unused over duplicate variable names ( #2656 )
2017-12-26 18:29:28 +08:00
Alex Lam S.L
ef74f2eaaf
harmony-v3.3.2
2017-12-26 05:21:31 +08:00
alexlamsl
96082f7a9b
Merge branch 'master' into harmony-v3.3.2
2017-12-26 01:46:22 +08:00
Alex Lam S.L
86607156e3
v3.3.2
2017-12-26 01:38:56 +08:00
Alex Lam S.L
0fe259e9c5
parse LF & comment correctly ( #2653 )
...
fixes #2652
2017-12-26 01:38:01 +08:00
Alex Lam S.L
a53784e0c5
harmony-v3.3.1
2017-12-25 18:32:00 +08:00
alexlamsl
a3b8dec347
Merge branch 'master' into harmony-v3.3.1
2017-12-25 17:34:16 +08:00
Alex Lam S.L
49ce573971
handle non-ES5 node types in inline ( #2648 )
...
fixes #2647
2017-12-25 17:25:38 +08:00
Alex Lam S.L
8701a99a15
v3.3.1
2017-12-25 03:08:28 +08:00
Alex Lam S.L
1476c78b53
add html-minifier to benchmarks ( #2646 )
2017-12-25 03:07:46 +08:00
Alex Lam S.L
cb6a92892f
fix infinite loop during inline ( #2645 )
...
fixes #2644
2017-12-25 01:57:11 +08:00
Alex Lam S.L
01bb08b553
harmony-v3.3.0
2017-12-24 22:58:15 +08:00
alexlamsl
fc3010bec5
add tests for #2613
2017-12-24 22:18:34 +08:00
alexlamsl
7de541f9c8
fix tests
2017-12-24 19:21:31 +08:00
alexlamsl
dbf8684287
Merge branch 'master' into harmony-v3.3.0
2017-12-24 19:19:24 +08:00
Alex Lam S.L
f1556cb945
v3.3.0
2017-12-24 17:34:56 +08:00
Alex Lam S.L
efffb81735
fix comments output & improve /*@__PURE__*/
...
- fix whitespace around comments
- fix comment parsing around parentheses
- consider parentheses when parsing `/*@__PURE__*/`
- remove all `/*@__PURE__*/` on output
fixes #2638
2017-12-24 12:38:45 +08:00
Alex Lam S.L
202f90ef8f
fix corner cases with collapse_vars, inline & reduce_vars ( #2637 )
...
fixes #2630
2017-12-24 01:24:12 +08:00
Alex Lam S.L
c07ea17c01
fix escape analysis on AST_PropAccess ( #2636 )
2017-12-24 00:36:46 +08:00
Alex Lam S.L
edb4e3bd52
make comments output more robust ( #2633 )
...
- improve handling of comments right after `return`
- retain comments after `OutputStream`
- preserve trailing comments
- fix handling of new line before comments
- handle comments around parentheses
fixes #88
fixes #112
fixes #218
fixes #372
fixes #2629
2017-12-22 04:59:54 +08:00
kzc
8d156b51fe
arrows fix for object literal methods containing arguments (#2632 )
...
fixes #2631
2017-12-21 17:50:26 +08:00
Alex Lam S.L
4113609dd4
extend test/ufuzz.js to inline & reduce_funcs ( #2620 )
...
- forward call `fN()`
- allow forward call functions to be single-use
- avoid generating `AST_Defun` within blocks
2017-12-20 23:52:18 +08:00
Alex Lam S.L
7ac7b0872f
remove AST hack from inline ( #2627 )
2017-12-20 17:05:53 +08:00
Alex Lam S.L
86ae5881b7
disable hoist_funs by default ( #2626 )
2017-12-20 17:05:40 +08:00
Alex Lam S.L
fac003c64f
avoid inline of function with special argument names ( #2625 )
2017-12-20 02:48:04 +08:00
Alex Lam S.L
2273655c17
fix inline after single-use reduce_vars ( #2623 )
2017-12-19 22:19:33 +08:00
Ondřej Španěl
01057cf76d
Transform can be simplified when clone is not done. ( #2621 )
2017-12-19 17:56:16 +08:00
Alex Lam S.L
032f096b7f
add test for #2613 ( #2618 )
2017-12-19 05:22:05 +08:00
Alex Lam S.L
4b334edf49
handle global constant collision with local variable after inline ( #2617 )
...
fixes #2616
2017-12-19 03:05:30 +08:00
Alex Lam S.L
8ddcbc39e6
compress apply() & call() of function ( #2613 )
...
- `fn.apply(a, [ ... ])` => `fn.call(a, ...)`
- `fn.call(a, ... )` => `a, fn(...)`
where `fn` can be `function` literal or symbol reference linked through `reduce_vars`
2017-12-18 16:23:39 +08:00
Alex Lam S.L
0b0eac1d5d
drop property assignment to constants ( #2612 )
2017-12-18 12:07:53 +08:00
kzc
85bfa17139
fix slowness in unused for blocks ( #2614 )
...
fixes #2609
2017-12-18 12:06:14 +08:00
Alex Lam S.L
b29fc8b27c
improve transversal efficiency in collapse_vars ( #2611 )
...
fixes #2603
2017-12-18 03:00:05 +08:00
kzc
80c8dfcde6
fix export default of anonymous generators and async functions ( #2607 )
...
fixes #2606
2017-12-18 00:11:52 +08:00
Alex Lam S.L
5de369fa67
export parse() ( #2608 )
2017-12-17 23:12:23 +08:00
Alex Lam S.L
7918a50d52
improve reset_opt_flags() ( #2610 )
2017-12-17 23:01:08 +08:00
Alex Lam S.L
21794c9b8d
account for catch variable when inline ( #2605 )
...
fixes #2604
2017-12-16 15:21:09 +08:00
Alex Lam S.L
6c686ce593
fix nested inline ( #2602 )
...
fixes #2601
2017-12-16 02:16:35 +08:00
Alex Lam S.L
db902af4c6
fix escape analysis on || and && ( #2600 )
...
fixes #2598
2017-12-15 19:48:14 +08:00
Alex Lam S.L
7d6907cb99
fix dead_code on nested try ( #2599 )
...
fixes #2597
2017-12-15 19:41:28 +08:00
Alex Lam S.L
092d9affb8
fix reduce_vars on do...while ( #2596 )
2017-12-15 16:33:19 +08:00
Alex Lam S.L
8f681b1d17
handle inline of function arguments ( #2590 )
...
fixes #2476
2017-12-15 13:28:30 +08:00
Alex Lam S.L
90313875f7
inline single-use function across loop ( #2594 )
2017-12-14 19:24:54 +08:00
Alex Lam S.L
3f18a61532
fix reduce_vars on single AST_Defun reference across loop ( #2593 )
2017-12-14 18:47:05 +08:00
Alex Lam S.L
02a6ce07eb
improve reduce_vars ( #2592 )
...
- account for hoisting nature of `var`
2017-12-14 15:32:13 +08:00
Alex Lam S.L
738fd52bc4
improve collapse_vars ( #2591 )
...
- handle single-use assignments other than `AST_VarDef`
- scan `AST_Call` for candidates
2017-12-14 15:31:35 +08:00
kzc
d18979bb23
improve dead_code tests ( #2589 )
...
for #2588
2017-12-14 12:12:06 +08:00
Alex Lam S.L
8266993c6e
fix dead_code on return/throw within try ( #2588 )
2017-12-14 04:38:21 +08:00
Alex Lam S.L
9a137e8613
drop local assign-only variable in return ( #2587 )
2017-12-14 02:59:59 +08:00
Alex Lam S.L
ef618332ea
fold cascade functionality into collapse_vars ( #2586 )
2017-12-14 01:20:36 +08:00
Alex Lam S.L
7f418978c9
recover lost opportunities from #2574 ( #2584 )
2017-12-13 18:20:53 +08:00
Alex Lam S.L
04cc395c35
improve collapse_vars on side-effect-free replacements ( #2583 )
2017-12-13 04:52:54 +08:00
Alex Lam S.L
e008dc1bde
minor clean-up for IIFE ( #2582 )
...
- faster exact type match
- aggressively convert to `!`
2017-12-13 01:27:26 +08:00
Alex Lam S.L
ddf96cfda2
avoid Function.prototype pollution by test/sandbox.js ( #2581 )
2017-12-12 05:02:01 +08:00
Alex Lam S.L
ebfd5c5c74
fix AST_VarDef.may_throw() ( #2580 )
2017-12-12 03:30:25 +08:00
Alex Lam S.L
f2ad542679
fix collapse_vars on switch ( #2578 )
2017-12-11 18:11:09 +08:00
Alex Lam S.L
c43118be4f
remove unused code ( #2579 )
...
fixes #2577
2017-12-11 17:39:08 +08:00
Alex Lam S.L
93f3b2b114
escape consecutive unpaired surrogates ( #2576 )
...
fixes #2569
2017-12-11 01:15:44 +08:00
Alex Lam S.L
bf000beae7
rename tests ( #2575 )
2017-12-11 00:24:54 +08:00
Alex Lam S.L
f8ff349ba7
harmony-v3.2.2
2017-12-11 00:16:36 +08:00
Alex Lam S.L
0e16d92786
handle exceptional flow correctly in collapse_vars ( #2574 )
...
fixes #2571
2017-12-11 00:16:02 +08:00
alexlamsl
f2b179ae94
fix escape analysis for AST_Expansion
2017-12-10 23:05:22 +08:00
alexlamsl
c7e8fc4830
fix escape analysis for `AST_Await
...
fixes #2566
2017-12-10 23:03:29 +08:00
alexlamsl
f778a0aa01
fix escape analysis for AST_Yield
...
fixes #2565
2017-12-10 23:02:20 +08:00
alexlamsl
7fd4b66eaa
fix tests
2017-12-10 14:16:54 +08:00
alexlamsl
21c986ff5b
Merge branch 'master' into harmony-v3.2.2
2017-12-10 14:12:24 +08:00
Alex Lam S.L
2441827408
v3.2.2
2017-12-10 13:46:17 +08:00
Alex Lam S.L
0aff037a35
improve unused on assign-only symbols ( #2568 )
2017-12-09 06:19:29 +08:00
Alex Lam S.L
74a2f53683
fix escape analysis for AST_Throw ( #2564 )
2017-12-08 02:54:37 +08:00
Alex Lam S.L
e20935c3f2
fix escape analysis for AST_Conditional & AST_Sequence ( #2563 )
...
fixes #2560
2017-12-08 01:50:38 +08:00
Alex Lam S.L
3e34f62a1c
account for side-effects in conditional call inversion ( #2562 )
...
fixes #2560
2017-12-08 01:15:31 +08:00
Alex Lam S.L
d21cb84696
eliminate noop calls more aggressively ( #2559 )
2017-12-07 01:22:08 +08:00
Alex Lam S.L
3dd495ecdd
improve if_return ( #2558 )
...
`return void x()` => `x()`
2017-12-07 01:01:52 +08:00
Alex Lam S.L
87bae623e9
simplify computed properties for methods, getters & setters ( #2555 )
...
fixes #2554
2017-12-04 00:18:48 +08:00
Alex Lam S.L
606f7a5b37
harmony-v3.2.1
2017-12-03 13:51:27 +08:00
alexlamsl
b91a2e018a
fix tests
2017-12-03 12:14:31 +08:00
alexlamsl
c9dbe9deb1
Merge branch 'master' into harmony-v3.2.1
2017-12-03 11:59:41 +08:00
Alex Lam S.L
b9f3ddfb30
v3.2.1
2017-12-03 11:39:51 +08:00
Alex Lam S.L
77332a0315
fix dead_code on for ( #2552 )
2017-12-02 15:46:05 +08:00
Alex Lam S.L
85c56adbd1
more tests for #2535 ( #2551 )
2017-12-02 02:26:56 +08:00
Alex Lam S.L
8da3754e51
improve evaluate on typeof ( #2550 )
...
- gated through `typeofs`
2017-12-02 02:18:33 +08:00
Alex Lam S.L
9a6b11f8e6
improve boolean compression ( #2548 )
...
fixes #2535
2017-12-01 22:41:35 +08:00
Alex Lam S.L
7ac6fdcc99
improve switch case compression ( #2547 )
2017-12-01 14:32:00 +08:00
Alex Lam S.L
f6610baaa8
improve AST_For.init & AST_Switch.expression compression ( #2546 )
2017-12-01 12:53:59 +08:00
Alex Lam S.L
09b320e8a5
convert to number under boolean context ( #2545 )
2017-12-01 12:52:36 +08:00
Alex Lam S.L
5a1e99d713
improve compression of if conditions ( #2544 )
2017-12-01 06:18:31 +08:00
Alex Lam S.L
b762f2d6f4
improve compression of loop conditions ( #2543 )
2017-12-01 05:52:33 +08:00
Alex Lam S.L
172079a47f
improve code reuse ( #2542 )
2017-12-01 03:40:46 +08:00
Alex Lam S.L
c58d3936a3
fix corner case in call binding ( #2541 )
2017-12-01 03:18:20 +08:00
Alex Lam S.L
18302bf8e9
backport test from #2526 ( #2534 )
2017-11-29 13:32:00 +08:00
Alex Lam S.L
bc5047c1e7
fix inline on nested substitutions ( #2533 )
...
fixes #2531
2017-11-29 13:31:41 +08:00
kzc
1885f91f13
document top level minify() option safari10 ( #2532 )
2017-11-29 05:48:33 +08:00
Alex Lam S.L
736c366d93
introduce --safari10 ( #2530 )
2017-11-29 03:34:47 +08:00
kzc
1646c5844f
document the new output option safari10 ( #2529 )
2017-11-29 02:29:23 +08:00
Alex Lam S.L
aacf760fb4
add Safari workaround for await ( #2528 )
...
fixes #2344
2017-11-29 00:20:36 +08:00
Alex Lam S.L
755e2a62c6
extend hoist_props to AST_Arrow & AST_Class ( #2527 )
...
fixes #2503
2017-11-28 22:54:44 +08:00
Alex Lam S.L
62d2817d6c
reduce this in block scopes ( #2526 )
...
fixes #2455
2017-11-28 22:54:21 +08:00
Alex Lam S.L
37cbd7080c
replace single-use class definitions ( #2524 )
...
fixes #2416
2017-11-28 20:57:15 +08:00
Alex Lam S.L
206a54a746
fix nested hoist_props substitution ( #2523 )
...
fixes #2519
2017-11-28 14:39:00 +08:00
Alex Lam S.L
32def5ebf5
improve synergy between collapse_vars & unused ( #2521 )
2017-11-28 14:02:39 +08:00
Alex Lam S.L
ecc9f6b770
drop assignment in AST_VarDef.value ( #2522 )
...
fixes #2516
2017-11-28 13:08:40 +08:00
Alex Lam S.L
b84c99ef5c
harmony-v3.2.0
2017-11-26 06:02:49 +08:00
alexlamsl
4f08c2f504
Merge branch 'master' into harmony-v3.2.0
2017-11-26 04:23:57 +08:00
Alex Lam S.L
b37a68c84f
v3.2.0
2017-11-26 04:08:35 +08:00
Alex Lam S.L
c141ae6f8d
fix argument/atom collision by properties ( #2514 )
...
fixes #2513
2017-11-25 22:52:46 +08:00
Alex Lam S.L
97c464dbf5
fix wording and formatting ( #2512 )
2017-11-25 19:07:46 +08:00
kzc
ba4894af18
document top level minify option keep_classnames ( #2511 )
2017-11-25 16:33:03 +08:00
Alex Lam S.L
f1e3ef5262
separate keep_classnames & keep_fnames ( #2510 )
...
fixes #2418
2017-11-25 16:31:52 +08:00
Alex Lam S.L
3b28b915eb
extend escape analysis on constant expression properties ( #2509 )
...
fixes #2508
2017-11-24 14:07:39 +08:00
Alex Lam S.L
eb001dc1d9
fix argument/atom collision by collapse_vars ( #2507 )
...
fixes #2506
2017-11-24 07:26:22 +08:00
Alex Lam S.L
aa9bdf416e
make AST_Lambda.contains_this() less magical ( #2505 )
2017-11-24 07:03:37 +08:00
Alex Lam S.L
bbf38dc9c0
fix reduce_vars on arrow functions with this ( #2504 )
...
fixes #2496
2017-11-24 06:21:49 +08:00
Alex Lam S.L
8987780db6
eliminate invalid state caching in collapse_vars ( #2502 )
...
fixes #2497
2017-11-24 04:12:37 +08:00
Alex Lam S.L
30cfea2e7a
fix rename ( #2501 )
...
- suppress spurious `rename` from `commander`
- handle `AST_SymbolCatch` correctly
2017-11-24 03:05:43 +08:00
kzc
3d8341a7ab
fix properties for array literal with spread ( #2499 )
...
fixes #2498
2017-11-24 02:04:26 +08:00
Alex Lam S.L
f4e2fb9864
expand symbol space to improve compression ( #2460 )
...
- give globally distinct names to distinct variables
- improve ability to compress cross-scoped
- introduce `options.rename` to `minify()`
- default `true` if both `compress` & `mangle`
2017-11-19 19:29:51 +08:00
Alex Lam S.L
567cb0e4e3
harmony-v3.1.10
2017-11-19 15:53:22 +08:00
Alex Lam S.L
b80062c490
enable hoist_props by default ( #2492 )
2017-11-19 14:56:23 +08:00
alexlamsl
227b58812d
Merge branch 'master' into harmony-v3.1.10
2017-11-19 14:34:27 +08:00
kzc
f25bd13be6
fix keyword shorthand property output for ecma >= 6 ( #2493 )
...
fixes #2491
2017-11-19 13:53:42 +08:00
Alex Lam S.L
667fc4d08b
v3.1.10
2017-11-18 23:56:33 +08:00
kzc
6142117cdd
document the webkit output option ( #2490 )
...
- workaround for WebKit bugs
- PhantomJS users should enable this output option
closes #2489
2017-11-17 13:46:49 +08:00
kzc
e826973b76
fix template expression parse of regex and sequence ( #2488 )
...
fixes #2487
2017-11-17 01:34:57 +08:00
Alex Lam S.L
ae28a24c7f
fix cross-scope inlining of AST_Functions ( #2486 )
...
fixes #2485
2017-11-16 10:04:30 +08:00
Alex Lam S.L
ebe761cad0
minor consolidations ( #2484 )
...
- unique symbol generation
- `unsafe` on `AST_Call`
2017-11-16 04:37:37 +08:00
kzc
fa7a7c5c5a
Update ISSUE_TEMPLATE.md ( #2481 )
2017-11-15 06:00:51 +08:00
kzc
557636f3b7
update documentation for reduce_funcs ( #2478 )
2017-11-14 16:03:25 +08:00
Alex Lam S.L
49fbe9c5ac
fix replacement logic in collapse_vars ( #2475 )
2017-11-13 07:37:42 +08:00
Alex Lam S.L
2ac5086831
fix top_retain on hoist_props ( #2474 )
...
fixes #2473
2017-11-13 00:59:41 +08:00
Alex Lam S.L
c6cfa04d10
allow symbol replacement on multiple occurrences ( #2472 )
...
- all-or-nothing replacement
- avoid unmangleable names
fixes #2436
2017-11-12 22:31:47 +08:00
Alex Lam S.L
9632f79e46
harmony-v3.1.9
2017-11-11 19:21:09 +08:00
alexlamsl
a3fbb27194
update tests
2017-11-11 15:57:47 +08:00
alexlamsl
11c0b1e1f9
Merge branch 'master' into harmony-v3.1.9
2017-11-11 15:45:34 +08:00
Alex Lam S.L
346fa12e0e
v3.1.9
2017-11-11 15:31:13 +08:00
Alex Lam S.L
cda27b0970
extend reduce_funcs to cover cross-scope substitutions ( #2469 )
...
fixes #2468
2017-11-11 15:30:17 +08:00
Alex Lam S.L
3c74047368
implement compress option reduce_funcs ( #2466 )
...
- inline single-use function declarations as expressions when permissible
- depend on `reduce_vars`
- enabled by default
- disable for speed critical code
fixes #2464
2017-11-11 05:59:35 +08:00
Alex Lam S.L
650d5d5c9b
suppress hoist_props on export ( #2463 )
...
Miscellaneous
- fix double semi-colons from `beautify` in `export`
fixes #2462
2017-11-10 17:38:31 +08:00
Alex Lam S.L
94525d859f
fix object literal tracing in reduce_vars ( #2461 )
2017-11-10 05:47:10 +08:00
Alex Lam S.L
1127a2caf3
fix multiple nested function substitutions ( #2458 )
...
fixes #2449
2017-11-09 23:30:00 +08:00
Alex Lam S.L
246d9d4e83
remove hack in collapse_vars ( #2457 )
...
fixes #2456
2017-11-09 20:00:58 +08:00
Alex Lam S.L
4c0b0177b6
preserve function identity in reduce_vars ( #2451 )
...
fixes #2450
2017-11-08 03:28:46 +08:00
Alex Lam S.L
dd0a36119b
fix const under collapse_vars without unused ( #2454 )
...
fixes #2453
2017-11-08 02:10:46 +08:00
Alex Lam S.L
94b19a9c46
harmony-v3.1.8
2017-11-07 06:05:40 +08:00
alexlamsl
bcf95ac02c
update tests
2017-11-07 04:49:57 +08:00
alexlamsl
e11cec1ab8
Merge branch 'master' into harmony
2017-11-07 04:30:40 +08:00
Alex Lam S.L
38bfb73f06
v3.1.8
2017-11-07 03:55:16 +08:00
Alex Lam S.L
bbedbf4ea0
handle circular function reference gracefully ( #2446 )
...
fixes #2442
2017-11-07 02:37:23 +08:00
Alex Lam S.L
2cfb5aa7da
account for eval & with in reduce_vars ( #2441 )
...
fixes #2440
2017-11-06 16:10:57 +08:00
Alex Lam S.L
6c45101870
consolidate & enhance unused ( #2439 )
...
- defer declaration removal in `collapse_vars`
- account for `AST_SymbolFunarg` in deduplication
- private accounting for `collapse_vars`
- avoid issues with identity reference due to deep cloning
fixes #2437
2017-11-06 14:25:10 +08:00
Alex Lam S.L
2c2fd89e34
inline single-use functions that are not constant expressions ( #2434 )
...
fixes #2428
2017-11-05 22:14:11 +08:00
Alex Lam S.L
0c43519097
harmony-v3.1.7
2017-11-05 17:25:57 +08:00
alexlamsl
352a7de204
update tests
2017-11-05 16:48:00 +08:00
alexlamsl
df9c8dfd72
Merge branch 'master' into harmony-v3.1.7
2017-11-05 15:47:40 +08:00
Alex Lam S.L
f46281e2b7
v3.1.7
2017-11-05 15:03:19 +08:00
Alex Lam S.L
25a18883f5
tweak #2424 ( #2432 )
2017-11-05 12:49:14 +08:00
Alex Lam S.L
5b4b07e9a7
extend function inlining safety checks ( #2430 )
2017-11-05 06:18:45 +08:00
Alex Lam S.L
a8aa28a7a6
consolidate single-use function reduction ( #2427 )
...
fixes #2423
2017-11-05 04:27:01 +08:00
Alex Lam S.L
fe5a68f9d5
maintain call argument order in collapse_vars ( #2426 )
...
fixes #2425
2017-11-05 00:00:18 +08:00
Alex Lam S.L
71e61153b1
improve variations on call arguments for ufuzz ( #2424 )
2017-11-04 16:29:42 +08:00
Alex Lam S.L
c8b6f4733d
reduce this within functions ( #2421 )
...
- only replace same-scope usages
- augment `test/ufuzz.js` to test for `this`
fixes #2420
2017-11-04 00:31:37 +08:00
kzc
29bbc41dfe
hoist_props: implement limited hoisting of class expressions ( #2415 )
2017-10-30 23:20:54 +08:00
Alex Lam S.L
a48f87abf2
compress new function containing this ( #2417 )
2017-10-30 23:19:27 +08:00
Alex Lam S.L
d535daa2c7
harmony-v3.1.6
2017-10-29 18:58:58 +08:00
alexlamsl
0a9cdb6c73
handle computed properties correctly
2017-10-29 17:46:25 +08:00
alexlamsl
3ae34177a6
merge #2391 & #2393
2017-10-29 17:14:52 +08:00
alexlamsl
086cb33163
Merge branch 'master' into harmony-v3.1.6
2017-10-29 13:23:39 +08:00
Alex Lam S.L
2fd927a7cc
v3.1.6
2017-10-29 12:38:10 +08:00
Alex Lam S.L
8428326ea1
enhance properties ( #2412 )
...
- trim array items only if `side_effects`
- extend to non-identifier properties
2017-10-29 04:11:26 +08:00
Alex Lam S.L
6371e2ee63
consistently reduce const safe literals ( #2411 )
...
fixes #2406
2017-10-28 11:36:44 +08:00
Alex Lam S.L
6ab73c7bd5
fix & improve AST_TemplateString ( #2410 )
...
- resolve `semicolons:false` ambiguity with tagged literals
- allow `side_effects` to work on template literals
- traverse `AST_TemplateString` properly
fixes #2401
2017-10-28 11:36:09 +08:00
Alex Lam S.L
31f8209193
remove dead code ( #2405 )
2017-10-27 14:28:09 +08:00
Alex Lam S.L
9b0f86f5a1
fix reduce_vars on AST_Array.length ( #2404 )
2017-10-27 02:33:37 +08:00
Alex Lam S.L
ee082ace1b
compress self comparisons ( #2398 )
2017-10-26 01:16:12 +08:00
kzc
ae67a49850
document compress option hoist_props ( #2399 )
2017-10-25 14:03:43 +08:00
Alex Lam S.L
4178289c38
implement hoist_props ( #2396 )
...
fixes #2377
2017-10-25 03:38:11 +08:00
Alex Lam S.L
74ae16f9f8
fix unsafe reduce_vars on arrays & objects ( #2397 )
2017-10-24 22:10:36 +08:00
Tom MacWright
1968203d83
docs: Fix spelling and style ( #2395 )
2017-10-24 04:59:12 +08:00
Tom MacWright
2848596280
docs: Fix spelling and style ( #2395 )
2017-10-24 04:53:56 +08:00
Alex Lam S.L
86ea38a259
enhance unsafe evaluate of arrays & objects ( #2394 )
2017-10-24 02:58:30 +08:00
Alex Lam S.L
8a713e449f
deduplicate declarations regardless of toplevel ( #2393 )
2017-10-23 01:00:50 +08:00
Alex Lam S.L
7d9a8596a9
fix dead_code on AST_Destructuring ( #2392 )
...
fixes #2383
2017-10-23 00:34:34 +08:00
Alex Lam S.L
24aa07855b
safer properties transform ( #2391 )
...
`{ a: x, b: y }.a` => `[ x, y ][0]`
- `x` cannot be function containing `this`
`[ x, y, z ][1]` => `(x, z, y)`
- only if `z` is side-effect-free
2017-10-22 20:10:13 +08:00
Alex Lam S.L
5fd723f143
fix unsafe expansion of object literals ( #2390 )
2017-10-22 15:00:36 +08:00
Alex Lam S.L
516eaef50c
fix unsafe evaluation of AST_Sub ( #2389 )
2017-10-22 13:14:15 +08:00
Alex Lam S.L
4ae1fb3ed8
fix unsafe evaluation of objects ( #2388 )
2017-10-22 04:19:40 +08:00
Alex Lam S.L
011123223b
fix unsafe escape analysis in reduce_vars ( #2387 )
2017-10-22 03:23:31 +08:00
Alex Lam S.L
44352eb26a
harmony-v3.1.5
2017-10-22 01:49:55 +08:00
alexlamsl
9f1c72ae28
update test
...
Sub-optimal result due to block scope.
2017-10-22 00:38:16 +08:00
alexlamsl
c60fa67827
Merge branch 'master' into harmony-v3.1.5
2017-10-22 00:35:00 +08:00
Alex Lam S.L
96439ca246
v3.1.5
2017-10-22 00:27:26 +08:00
Thomas Sauer
f9c57dfee0
Allow 'yield' as method name ( #2382 )
...
fixes #2381
2017-10-21 14:22:39 +08:00
Alex Lam S.L
c927cea632
unsafe fix-ups for #2351 ( #2379 )
2017-10-21 04:08:26 +08:00
Alex Lam S.L
9f4b98f8e4
backport #2374 ( #2376 )
2017-10-19 23:02:27 +08:00
Alex Lam S.L
0f2ef3367c
enhance collapse_vars around lazy operations ( #2369 )
2017-10-19 04:52:00 +08:00
kzc
6bf5fea008
option formatting in docs ( #2374 )
...
- reintroduce compress documentation for keep_fnames and unsafe_methods
- reintroduce keep_fnames in mangle option docs
- order compress & mangle options
2017-10-18 05:23:53 +08:00
Alex Lam S.L
7e5b5cac97
fix AST_PropAccess in collapse_vars (take 3) ( #2375 )
...
Suppress scanning beyond assignment to `a.b`
2017-10-18 02:54:51 +08:00
Alex Lam S.L
c1346e06b7
clean up lazy operator detection ( #2373 )
2017-10-17 23:25:45 +08:00
Alex Lam S.L
0d2fe8e3ef
fix AST_PropAccess in collapse_vars (take 2) ( #2372 )
...
fixes #2364
2017-10-17 22:59:15 +08:00
Alex Lam S.L
f2b9c11e2a
fix AST_PropAccess in collapse_vars ( #2370 )
...
fixes #2364
2017-10-17 18:33:03 +08:00
Alex Lam S.L
b6a7ca292e
deduplicate AST_Super & AST_This logic ( #2366 )
2017-10-17 04:19:53 +08:00
Alex Lam S.L
fe647b083e
account for side-effects from AST_This in collapse_vars ( #2365 )
2017-10-17 01:18:55 +08:00
Alex Lam S.L
a89f126db6
harmony-v3.1.4
2017-10-16 14:28:28 +08:00
alexlamsl
d8ee2de95c
adjust tests for #2351
2017-10-16 13:24:50 +08:00
alexlamsl
58a5608b66
Merge branch 'master' into harmony-v3.1.4
2017-10-16 12:32:50 +08:00
kzc
f496ac5c85
implement compress option computed_props ( #2361 )
...
transforms `{["computed"]: 1}` into `{computed: 1}`
2017-10-16 11:35:04 +08:00
Alex Lam S.L
dfe4f6c6de
v3.1.4
2017-10-16 02:44:17 +08:00
Alex Lam S.L
a09c8ad666
update dependency ( #2362 )
...
- source-map@0.6.1
2017-10-16 02:41:22 +08:00
Alex Lam S.L
ec598c351b
fix-ups for #2356 ( #2360 )
2017-10-15 22:33:55 +08:00
kzc
f79f737fb2
fix mangle of destructuring parameters with computed properties ( #2359 )
...
fixes #2349
2017-10-15 20:59:52 +08:00
Alex Lam S.L
eba0f93bc0
more tests for #2351 ( #2357 )
2017-10-12 02:58:25 +08:00
Roger Peppe
99800d4aa9
update README to include defaults ( #2356 )
...
fixes #2353
2017-10-12 02:56:02 +08:00
Tim Malone
70d56c951a
Update README.md - sourceMappingURL directive note ( #2355 )
...
Moves this README note to underneath the 'url' rather than 'root' option.
2017-10-11 19:48:43 +08:00
Alex Lam S.L
b810e2f8da
perform reduce_vars on safe literals ( #2351 )
...
- constant expression
- single reference
- same scope
- not across loop body
2017-10-09 12:25:06 +08:00
Alex Lam S.L
1abe14296e
collapse a.b whenever safe ( #2350 )
2017-10-08 13:17:48 +08:00
kzc
336b1add4f
fix unsafe join() on array literal with spread ( #2347 )
...
fixes #2345
2017-10-06 00:57:00 +08:00
Alex Lam S.L
873755b35c
harmony-v3.1.3
2017-10-01 14:41:52 +08:00
alexlamsl
744032755d
add tests for #2336 & #2337
2017-10-01 13:20:17 +08:00
alexlamsl
4fac8076b8
Merge branch 'master' into harmony-v3.1.3
2017-10-01 12:42:40 +08:00
Alex Lam S.L
6920e898d1
v3.1.3
2017-10-01 12:36:07 +08:00
Alex Lam S.L
dd71639264
enhance reduce_vars for AST_Accessor ( #2339 )
...
fixes #2336
2017-10-01 03:01:50 +08:00
Alex Lam S.L
2dcc552ce0
trap invalid use of reserved words ( #2338 )
...
fixes #2337
2017-10-01 02:10:41 +08:00
kzc
a020d2ead3
support dynamic import(), trap invalid use of export ( #2335 )
2017-09-28 18:43:09 +08:00
Alex Lam S.L
68645b28d3
harmony-v3.1.2
2017-09-24 11:13:25 +08:00
alexlamsl
aaa8212837
improve test for #2316
2017-09-24 02:23:38 +08:00
alexlamsl
bd84007cf4
Merge branch 'master' into harmony-v3.1.2
2017-09-24 02:20:47 +08:00
Alex Lam S.L
55387e8fd0
v3.1.2
2017-09-24 02:02:04 +08:00
GUENEGO Jean-Louis
1241600013
mangle: do not mangle reserved class ( #2317 )
...
fixes #2316
2017-09-24 00:08:47 +08:00
kzc
7e3e9da860
fix "use asm" numeric output ( #2328 )
...
fixes #2324
2017-09-21 04:42:40 +08:00
kzc
a784717fe2
allow RegExp for unsafe_methods compress option ( #2327 )
2017-09-21 00:48:16 +08:00
Alex Lam S.L
00f509405b
suppress collapse_vars of this into "use strict" ( #2326 )
...
fixes #2319
2017-09-20 05:23:20 +08:00
kzc
e8235657e4
add new compress option unsafe_methods for ecma >= 6 ( #2325 )
...
fixes #2321
2017-09-20 00:15:54 +08:00
Alex Lam S.L
c46b9f361a
harmony-v3.1.1
2017-09-17 15:33:55 +08:00
alexlamsl
3b0b4d6abf
handle AST_Super in collapse_vars & side_effects
2017-09-17 05:09:36 +08:00
alexlamsl
d73500e8d1
Merge branch 'master' into harmony-v3.1.1
2017-09-17 04:43:43 +08:00
Alex Lam S.L
aceb0af36b
v3.1.1
2017-09-17 04:36:27 +08:00
Alex Lam S.L
4f0953f7e9
handle LHS side-effects on cascade & collapse_vars ( #2314 )
...
fixes #2313
2017-09-16 11:45:19 +08:00
Alex Lam S.L
182a47bfb1
improve source mapping ( #2312 )
...
fixes #2310
2017-09-15 12:46:48 +08:00
Alex Lam S.L
d8685f528d
harmony-v3.1.0
2017-09-10 20:51:33 +08:00
alexlamsl
8891495789
Merge branch 'master' into harmony-v3.1.0
2017-09-10 15:39:33 +08:00
Alex Lam S.L
cd27f4ec38
v3.1.0
2017-09-10 15:17:24 +08:00
Mateusz Burzyński
8158b1bdcf
Testing all leading comments against being PURE comments ( #2305 )
2017-09-10 02:08:15 +08:00
Alex Lam S.L
aacf3edc68
extend unsafe on pure global functions ( #2303 )
2017-09-07 22:08:34 +08:00
kzc
8b89072190
add Date and other known globals to unsafe compress option ( #2302 )
2017-09-07 02:44:26 +08:00
Alex Lam S.L
395a17ccda
fix collapse_vars on default function argument ( #2299 )
...
Avoid collision with local variable `undefined` under certain corner cases.
fixes #2298
2017-09-04 02:32:33 +08:00
Alex Lam S.L
3f355866cf
correctly count declarations after hoist_vars ( #2297 )
...
fixes #2295
2017-09-03 17:23:31 +08:00
kzc
2779a29a86
avoid generating ternary with spread ( #2293 )
...
fixes #2292
2017-08-31 00:57:07 +08:00
David Šanda
71d52f147d
Fix CLI example for mangle reserved list of names ( #2294 )
2017-08-31 00:55:32 +08:00
David Šanda
eb7adaa6fc
Fix CLI source-maps examples ( #2291 )
...
fixes #2284
2017-08-29 23:49:20 +08:00
Alex Lam S.L
e5cf7972ea
fix unused patching of AST_For.init blocks ( #2289 )
...
fixes #2288
2017-08-29 01:10:04 +08:00
Alex Lam S.L
067d52b6ba
harmony-v3.0.28
2017-08-20 01:19:06 +08:00
alexlamsl
e0e009ace2
Merge branch 'master' into harmony-v3.0.28
2017-08-20 00:35:46 +08:00
Alex Lam S.L
f81ff10a9b
v3.0.28
2017-08-20 00:27:01 +08:00
kzc
ae0f117da6
Introduce new compress option unsafe_arrows ( #2278 )
...
* Not always safe to convert a function expression to an arrow
function when code depends on the function prototype existing.
Fixes #2271
2017-08-16 22:51:26 +08:00
Alex Lam S.L
a5461e0adc
prohibit let/const redeclaration ( #2277 )
...
fixes #2270
2017-08-14 12:31:12 +08:00
Erik Desjardins
16d40915b4
don't escape null characters as \0 when followed by any digit ( #2273 )
...
fixes #2272
2017-08-14 12:30:08 +08:00
Alex Lam S.L
2bf8216e50
fix pure_getters on spread of objects ( #2275 )
2017-08-13 22:08:33 +08:00
kzc
2ed3f8db44
fix output of spread of a sequence ( #2268 )
...
fixes #2267
2017-08-03 00:40:19 +08:00
kzc
4700c14855
implement object rest/spread ( #2265 )
...
- improve parse errors for destructuring spread elements
- `unsafe` for object literals with rest elements
Miscellaneous
- increase mocha unicode surrogate test timeout
2017-08-02 13:47:58 +08:00
Alex Lam S.L
e7c21e87e3
fix ie8 mangling of top-level AST_SymbolCatch ( #2263 )
...
fixes #2254
2017-08-01 02:38:32 +08:00
Alex Lam S.L
f54ab16843
harmony-v3.0.27
2017-07-30 15:15:29 +08:00
alexlamsl
69cb459c16
fix-ups for #2258
2017-07-30 04:26:21 +08:00
alexlamsl
1eae8f2dcc
Merge branch 'master' into harmony
2017-07-30 01:57:34 +08:00
Alex Lam S.L
c4c2ef44d0
v3.0.27
2017-07-30 01:50:42 +08:00
Alex Lam S.L
a845897758
improve mangle.properties ( #2261 )
...
- include dead code when `keep_quoted`
- unify `keep_quoted` & `reserved`
- make `test/run-tests.js` consistent with `minify()`
fixes #2256
2017-07-29 23:02:04 +08:00
kzc
d600c78d7b
have keep_quoted respect quoted method names ( #2258 )
...
fixes #2257
2017-07-28 19:42:12 +08:00
kzc
32ea2c5530
issue template: describe acceptable JS input ( #2255 )
2017-07-27 21:38:36 +08:00
Alex Lam S.L
d3df2f985d
extend collapse_vars to let and const ( #2252 )
...
fixes #2250
2017-07-25 22:07:21 +08:00
Alex Lam S.L
69861824b5
enhance test for #2242 ( #2248 )
2017-07-24 00:32:33 +08:00
Alex Lam S.L
1e0c7d2bc5
harmony-v3.0.26
2017-07-23 16:54:46 +08:00
alexlamsl
98b850580b
fix for #2242 on harmony
2017-07-23 16:20:53 +08:00
alexlamsl
29011ea60a
remove ascii_identifiers
2017-07-23 12:54:50 +08:00
alexlamsl
77d18be073
Merge branch 'master' into harmony-v3.0.26
2017-07-23 12:53:13 +08:00
Alex Lam S.L
bc61deeca9
v3.0.26
2017-07-23 12:39:36 +08:00
Alex Lam S.L
6a5e74b44e
unescape surrogate pairs only ( #2246 )
...
fixes #2242
2017-07-23 12:38:21 +08:00
Alex Lam S.L
54446341ee
update dependencies ( #2241 )
...
- acorn@5.1.1
- commander@2.11 .0
- mocha@3.4.2
2017-07-16 16:20:40 +08:00
Alex Lam S.L
91f8b57b3e
harmony-v3.0.25
2017-07-16 12:21:39 +08:00
alexlamsl
3a2b737c42
Merge branch 'master' into harmony-v3.0.25
2017-07-16 11:15:07 +08:00
Alex Lam S.L
4e12a6f740
v3.0.25
2017-07-16 11:05:53 +08:00
Alex Lam S.L
b35dfc2599
reject malformed CLI parameters ( #2239 )
...
fixes #2237
2017-07-15 23:50:27 +08:00
Alex Lam S.L
9e1da9235e
ensure ie8 works with mangled properties ( #2238 )
...
fixes #2234
2017-07-15 22:50:59 +08:00
Alex Lam S.L
a5ffe2c23f
drop unused builtin globals under unsafe ( #2236 )
...
fixes #2233
2017-07-15 15:16:11 +08:00
Alex Lam S.L
9282e7b0c6
fix unsafe evaluate of Object static methods ( #2232 )
...
fixes #2231
2017-07-14 19:52:01 +08:00
Alex Lam S.L
5229cb2b1b
drop unused compound assignments ( #2230 )
...
fixes #2226
2017-07-14 00:39:34 +08:00
Alex Lam S.L
458e3e15f0
enhance passes ( #2229 )
...
- remove hardcoded upper limit
- continue based on node count reduction
- emit verbose statistics
fixes #2226
2017-07-13 02:18:59 +08:00
Alex Lam S.L
c615a1e80a
fix gzip stream in test/benchmark.js ( #2228 )
2017-07-12 02:55:57 +08:00
Alex Lam S.L
10a938cb79
enhance source mapping on IIFEs ( #2224 )
...
fixes #2213
2017-07-11 02:34:28 +08:00
kzc
0f4278148d
uglify-es: update repository and project tagline ( #2221 )
2017-07-09 23:55:38 +08:00
Alex Lam S.L
4956ad311b
benchmark gzipped output ( #2220 )
2017-07-09 01:44:59 +08:00
kzc
145874e504
docs: update benchmarks using node 8, add babili ( #2218 )
2017-07-09 01:06:15 +08:00
kzc
f30375052b
docs: update benchmarks using node 8, add babili ( #2218 )
2017-07-09 00:48:53 +08:00
Alex Lam S.L
3e1a8598bf
harmony-v3.0.24
2017-07-08 14:51:47 +08:00
alexlamsl
ef63de6968
handle AST_Arrow IIFEs in collapse_vars
2017-07-08 14:27:06 +08:00
alexlamsl
2539fb8096
inline property access of AST_ConciseMethod
2017-07-08 14:25:58 +08:00
alexlamsl
a556dd2dcb
Merge branch 'master' into harmony-v3.0.24
2017-07-08 13:12:54 +08:00
Alex Lam S.L
bd7be07c38
v3.0.24
2017-07-08 12:53:20 +08:00
Alex Lam S.L
71ee91e716
handle duplicate argument names in collapse_vars ( #2215 )
2017-07-08 04:42:35 +08:00
kzc
e7334b4048
uglify-es: have repository point to harmony branch ( #2212 )
2017-07-07 11:39:48 +08:00
Alex Lam S.L
4f70d2e28c
inlining of static methods & constants ( #2211 )
...
- guard by `unsafe`
- support `Array`, `Math`, `Number`, `Object` & `String`
fixes #2207
2017-07-07 05:35:32 +08:00
Alex Lam S.L
4b6ca5e742
inline property access of object literal ( #2209 )
...
- only if property value is side-effect-free
- guard by `unsafe`
fixes #2208
2017-07-06 21:51:58 +08:00
Alex Lam S.L
f5c46db738
improve AST_ConciseMethod compression ( #2202 )
...
p(){return x;} ---> p:()=>x
Optimization subject to the `compress` option `arrows`.
2017-07-06 01:21:04 +08:00
Alex Lam S.L
9306da3c58
suppress collapse_vars of this as call argument ( #2204 )
...
fixes #2203
2017-07-06 01:03:52 +08:00
Alex Lam S.L
1ac25fc032
improve compress granularity through typeofs ( #2201 )
...
fixes #2198
2017-07-05 19:20:33 +08:00
kzc
fdbb1d09ef
Convert p: function(){} to p(){} in object literals ( #2199 )
...
when `compress` option `ecma` is 6 or greater.
2017-07-04 14:35:58 +08:00
Alex Lam S.L
5f046c724b
minor clean-ups to evaluate ( #2197 )
2017-07-03 18:52:39 +08:00
Alex Lam S.L
af0262b7e5
improve parenthesis emission ( #2196 )
...
- eliminate `throw` usages
- suppress extraneous parenthesis
- `new function() {foo.bar()}.baz`
- `for (function() { "foo" in bar; };;);`
2017-07-03 04:17:37 +08:00
Alex Lam S.L
6b3aeff1d8
clean up TreeWalker.pop() ( #2195 )
...
Remove superfluous parameter.
2017-07-03 03:23:38 +08:00
Alex Lam S.L
20e4f8277f
refactor throw usage within compress ( #2193 )
...
Eliminate exceptional constructs from normal control flow.
2017-07-03 02:10:56 +08:00
kzc
f3a487a368
document fast mangle-only minify mode ( #2194 )
2017-07-03 01:37:04 +08:00
Alex Lam S.L
33ad0d258c
harmony-v3.0.23
2017-07-02 19:04:15 +08:00
alexlamsl
5ea1da2d42
handle AST_Expansion in collapse_vars & inline
2017-07-02 18:15:16 +08:00
alexlamsl
e77b6d525c
Merge branch 'master' into harmony-v3.0.23
2017-07-02 17:47:21 +08:00
Alex Lam S.L
2dde41615a
v3.0.23
2017-07-02 17:24:22 +08:00
Alex Lam S.L
8b69a3d18e
drop argument value after collapse_vars ( #2190 )
2017-07-02 04:28:11 +08:00
Alex Lam S.L
d40950b741
improve inline efficiency ( #2188 )
...
... by teaching `collapse_vars` some new tricks.
fixes #2187
2017-07-02 01:05:14 +08:00
Alex Lam S.L
a9eecd844f
harmony-v3.0.22
2017-06-30 12:56:56 +08:00
alexlamsl
ed3032e52a
Merge branch 'master' into harmony-v3.0.22
2017-06-30 11:24:07 +08:00
Alex Lam S.L
7659ea1d2e
v3.0.22
2017-06-30 11:18:34 +08:00
Alex Lam S.L
52cc21d999
remove extraneous ! before AST_Arrow ( #2185 )
2017-06-30 11:17:58 +08:00
kzc
a938fe5e1f
async arrow function IIFE fix ( #2184 )
...
fixes #2183
2017-06-30 10:12:42 +08:00
kzc
07a5a57336
fix await parens for property access and calls ( #2181 )
...
fixes #2179
2017-06-30 09:14:24 +08:00
Alex Lam S.L
bdeadffbf5
improve usability of name cache under minify() ( #2176 )
...
fixes #2174
2017-06-29 12:48:34 +08:00
Alex Lam S.L
945db924fc
Merge pull request #2177 from alexlamsl/harmony-v3.0.21
...
Merging from master for 3.0.21
2017-06-29 02:37:28 +08:00
alexlamsl
087bce508a
Merge branch 'master' into harmony-v3.0.21
2017-06-29 00:58:28 +08:00
Alex Lam S.L
5e6f26445f
v3.0.21
2017-06-29 00:49:06 +08:00
kzc
fc7e33453f
[ES6] document mangle option keep_classnames ( #2175 )
2017-06-28 23:51:58 +08:00
Alex Lam S.L
d052394621
fix line terminators in template literals ( #2173 )
...
fixes #2172
2017-06-28 22:52:29 +08:00
Alex Lam S.L
4d5aeeddfb
compress AST_Arrow properly ( #2170 )
2017-06-28 01:06:30 +08:00
Alex Lam S.L
f0a99125ee
improve unsafe_Func ( #2171 )
...
- minimise disturbance to `compute_char_frequency()`
- remove extraneous quotation marks
2017-06-27 23:53:42 +08:00
Alex Lam S.L
1e4de2e6d3
parse @global_defs as expressions ( #2169 )
...
- let parser rejects non-conformant input
- eliminate need for extraneous parenthesis
2017-06-27 10:31:19 +08:00
Alex Lam S.L
ad139aa34d
fix side_effects on AST_Expansion ( #2165 )
...
fixes #2163
2017-06-27 01:13:00 +08:00
kzc
26be15f111
update uglify-es keywords in package.json ( #2168 )
2017-06-27 00:56:01 +08:00
kzc
179f33f08a
update doc notes for uglify-es ( #2164 )
2017-06-26 11:04:22 +08:00
kzc
d260fe9018
more documentation for the ecma option ( #2162 )
2017-06-26 02:39:14 +08:00
Alex Lam S.L
96f9b8cba3
Merge pull request #2161 from alexlamsl/harmony-v3.0.20
...
Merging from master for 3.0.20
2017-06-25 17:18:06 +08:00
alexlamsl
11afa816e3
Merge branch 'master' into harmony-v3.0.20
2017-06-25 16:43:44 +08:00
Alex Lam S.L
8b4dcd8f3e
v3.0.20
2017-06-25 15:05:05 +08:00
Alex Lam S.L
285401ced8
more tests for #2158 ( #2160 )
2017-06-25 14:21:48 +08:00
Alex Lam S.L
9db4c42380
fix cascade & collapse on property access of constants ( #2158 )
2017-06-24 21:30:06 +08:00
Alex Lam S.L
49f3de8397
toplevel shorthand for ecma ( #2157 )
2017-06-24 19:06:58 +08:00
Alex Lam S.L
94f93ad82d
support trailing commas in function parameter lists and calls ( #2156 )
...
fixes #2155
2017-06-24 17:34:14 +08:00
Alex Lam S.L
d1f085bce7
add new arrows compress option ( #2154 )
...
Convert ES5 style anonymous function expressions
to arrow functions if permissible by language semantics.
Note: `arrows` requires that the `ecma` compress option
is set to `6` or greater.
fixes #2150
2017-06-24 14:45:24 +08:00
Alex Lam S.L
7b95b63ca1
[ES6] support async arrow functions ( #2153 )
...
fixes #2102
2017-06-24 05:26:35 +08:00
Alex Lam S.L
94e5e00c03
refactor compute_char_frequency() ( #2152 )
...
- minimise maintenance when updating AST
- maximise code sharing between `master` & `harmony`
2017-06-23 20:05:31 +08:00
Alex Lam S.L
dc6bcaa18e
synchronise mangle.properties for minify() & test/compress ( #2151 )
2017-06-23 15:53:13 +08:00
Alex Lam S.L
d58b184835
refactor Compressor.toplevel ( #2149 )
2017-06-23 13:11:40 +08:00
Alex Lam S.L
137e4c4753
fix unused on AST_Destructuring ( #2146 )
2017-06-23 13:11:26 +08:00
Alex Lam S.L
b3a57ff019
minimise reduce_vars cloning overhead ( #2148 )
2017-06-23 06:59:53 +08:00
Alex Lam S.L
3d5bc08185
fix reduce_vars on this ( #2145 )
...
fixes #2140
2017-06-23 04:44:57 +08:00
Alex Lam S.L
0692435f01
fix for-in loop parsing ( #2144 )
2017-06-23 04:14:30 +08:00
Alex Lam S.L
b163b13a0b
fix export of keyword and redirection ( #2143 )
...
fixes #2141
fixes #2142
2017-06-23 03:49:30 +08:00
Alex Lam S.L
402954bdf3
Merge pull request #2139 from alexlamsl/harmony-v3.0.19
...
Merging from master for 3.0.19
2017-06-22 05:36:14 +08:00
alexlamsl
f5931866e0
Merge branch 'master' into harmony-v3.0.19
2017-06-22 03:26:49 +08:00
Alex Lam S.L
f67a6b0e43
v3.0.19
2017-06-22 03:24:22 +08:00
Alex Lam S.L
471db8a717
fix inline & unused on AST_Expansion ( #2138 )
...
- handle rest parameters
- suppress cases with spread arguments
fixes #2136
2017-06-22 01:39:11 +08:00
Alex Lam S.L
8ba9e4e0da
fix toplevel on export ( #2137 )
...
fixes #2134
2017-06-22 00:31:17 +08:00
Alex Lam S.L
71556d00b5
correctly parse export of function & class ( #2135 )
2017-06-21 23:15:39 +08:00
Alex Lam S.L
8709753bfb
fix mangle on export ( #2133 )
...
- `export default ...`
- `export` with `AST_Destructuring`
fixes #2129
2017-06-21 14:22:09 +08:00
Alex Lam S.L
db877e8729
fix drop_unused() accounting of symbols within export function ( #2132 )
...
fixes #2131
2017-06-21 12:32:58 +08:00
Alex Lam S.L
11923e3ae8
reject non-toplevel import/export ( #2128 )
...
fixes #2124
2017-06-21 03:18:48 +08:00
Alex Lam S.L
62d1fbf645
support export statements properly ( #2126 )
...
- mangle & compress correctly with `toplevel`
- retain non-toplevel import/export
- parse & output `export { variable as name }`
- remove extraneous spaces from `beautify`
fixes #2038
fixes #2124
2017-06-21 00:51:36 +08:00
Alex Lam S.L
343ea326c2
ensure mangling works if catch reuses a scope variable ( #2123 )
...
fixes #2120
2017-06-20 02:14:05 +08:00
kzc
849ba79dee
retain names in export default class and function ( #2122 )
...
fixes #2121
2017-06-19 14:30:59 +08:00
Alex Lam S.L
a298bcce02
Merge pull request #2119 from alexlamsl/harmony-v3.0.18
...
Merging from master for 3.0.18
2017-06-18 17:16:46 +08:00
alexlamsl
daaf1273fa
Merge branch 'master' into harmony-v3.0.18
2017-06-18 15:49:49 +08:00
Alex Lam S.L
1c150c632f
v3.0.18
2017-06-18 15:01:20 +08:00
Alex Lam S.L
0a0f4f5591
make defensive copies when inline ( #2116 )
...
fixes #2114
2017-06-17 14:32:37 +08:00
Alex Lam S.L
931daa85bf
fix loss of context in collapse_vars & cascade ( #2112 )
...
fixes #2110
2017-06-16 21:18:43 +08:00
Alex Lam S.L
00e4f7b3c1
in-place tigten_body() ( #2111 )
...
By reducing copies of `AST_Node` arrays, we should be able to reduce:
- memory pressure
- potential bugs caused by multiple references in AST
- duplicated executions of `OPT()`
2017-06-16 19:19:54 +08:00
Alex Lam S.L
11e63bc335
correctly determine scope of AST_This ( #2109 )
...
fixes #2107
2017-06-16 14:54:46 +08:00
kzc
3fa862ce19
support shorthand property named "async" ( #2108 )
2017-06-16 12:18:18 +08:00
Alex Lam S.L
33405bb24b
enforce inline scope restriction ( #2106 )
...
fixes #2105
2017-06-16 03:21:38 +08:00
Alex Lam S.L
370f2cc906
Merge pull request #2104 from alexlamsl/harmony-v3.0.17
...
Merging from master for 3.0.17
2017-06-15 23:07:22 +08:00
alexlamsl
78cf35f89c
Merge branch 'master' into harmony-v3.0.17
2017-06-15 19:01:36 +08:00
Alex Lam S.L
57dc4fb32f
v3.0.17
2017-06-15 18:59:37 +08:00
Alex Lam S.L
b85a358deb
suppress inline of this ( #2103 )
...
fixes #2101
2017-06-15 12:14:16 +08:00
kzc
100e18305d
first cut of async/await ( #2098 )
...
- async arrow functions not yet supported
fixes #1789
2017-06-15 06:15:48 +08:00
Alex Lam S.L
43697958f3
avoid intermittent test time-out failures ( #2100 )
2017-06-15 04:47:57 +08:00
Alex Lam S.L
3f961bbba0
compute uses_arguments correctly in figure_out_scope() ( #2099 )
...
fixes #2097
2017-06-15 03:28:26 +08:00
Alex Lam S.L
7cc03d4d40
fix parsing of expect_stdout ( #2096 )
...
fixes #2095
2017-06-15 01:26:49 +08:00
Alex Lam S.L
0a1e523cd5
fix parsing of expect_stdout ( #2096 )
...
fixes #2095
2017-06-15 01:00:03 +08:00
Alex Lam S.L
c28056d7ed
Merge pull request #2094 from alexlamsl/harmony-v3.0.16
...
Merging from master for 3.0.16
2017-06-14 19:25:21 +08:00
alexlamsl
8af362ed57
Merge branch 'master' into harmony-v3.0.16
2017-06-14 17:09:30 +08:00
Alex Lam S.L
4231f7323e
v3.0.16
2017-06-14 16:45:09 +08:00
Alex Lam S.L
68138f2281
fix reduce_vars on AST_Arrow ( #2091 )
...
fixes #2090
2017-06-14 16:40:37 +08:00
kzc
da2de350c3
add comment about quote_style and gzip ( #2092 )
2017-06-14 12:23:03 +08:00
Alex Lam S.L
41beae4dd7
cache web assets between CI runs ( #2089 )
...
- skip `test/jetstream.js` for `node@0.12 `
2017-06-14 11:53:10 +08:00
Ziad El Khoury Hanna
82db9188ac
fix CLI parsing of --source-map content ( #2088 )
...
fixes #2082
2017-06-13 16:30:46 +08:00
Alex Lam S.L
3dc9e140e4
add Node.js 8 to Travis CI ( #2086 )
...
- explicitly terminate `test/jetstream.js` upon completion
- log verbose output from `test/benchmark.js` & `test/jetstream.js`
- remove obsolete workaround for Travis CI
2017-06-13 06:21:16 +08:00
Alex Lam S.L
fed0096556
allow expect_stdout to specify Error ( #2087 )
2017-06-13 04:57:26 +08:00
Alex Lam S.L
2bdc8802dd
fix variable accounting in inline ( #2085 )
...
fixes #2084
2017-06-13 01:40:14 +08:00
Alex Lam S.L
5ef7cb372a
suppress false positives for-in loops ( #2080 )
...
fixes #2079
2017-06-10 13:55:17 +08:00
Alex Lam S.L
4ad7b1dae4
fix portability of sandbox.run_code() on Node.js 0.1x ( #2078 )
2017-06-10 01:08:58 +08:00
Alex Lam S.L
9186859cb7
fix non-string parameters ( #2076 )
...
`Stream.write()` is not as versatile as `console.log()`
2017-06-10 00:11:40 +08:00
Alex Lam S.L
47c0713747
report test/ufuzz.js failures in process.stderr ( #2074 )
2017-06-09 15:56:28 +08:00
Alex Lam S.L
293c566d6c
marshal mangle[.properties].reserved from non-Array values ( #2072 )
2017-06-09 04:29:12 +08:00
Alex Lam S.L
9c306406f1
fix iteration over object with inherited properties ( #2068 )
...
fixes #2055
2017-06-08 03:27:03 +08:00
Alex Lam S.L
9db0695b10
fix cascade on multi-branch evaluations ( #2067 )
...
Partially reverts #2059 as this has better coverage and performance.
fixes #2062
2017-06-07 19:52:01 +08:00
Alex Lam S.L
a7971f4e34
fix unused crash with top-level AST_Var ( #2066 )
...
fixes #2063
2017-06-07 19:12:35 +08:00
Alex Lam S.L
f2af093402
fix CLI output corruption ( #2061 )
...
Using `console.error()` & `console.log()` result in inconsistent formatting across Node.js versions.
Avoid this issue by directly writing to `process.stderr` & `process.stdout` instead.
Miscellaneous
- prettify invalid option listing
2017-06-07 04:25:32 +08:00
Alex Lam S.L
b9ad53d1ab
fix inline handling of AST_Call.args ( #2059 )
2017-06-06 22:55:25 +08:00
Alex Lam S.L
b0eab71470
implement test/jetstream.js --debug ( #2058 )
2017-06-06 19:28:12 +08:00
Alex Lam S.L
3493a182b2
implement function inlining ( #2053 )
...
- empty body
- single `AST_Return`
- single `AST_SimpleStatement`
- avoid `/*#__PURE__*/`
Miscellaneous
- enhance single-use function substitution
fixes #281
2017-06-06 05:49:53 +08:00
Alex Lam S.L
27c5284d3d
workaround webkit parsing error ( #2056 )
...
apply `webkit` to jetstream tests
2017-06-06 04:06:42 +08:00
Alex Lam S.L
540220b91b
fix AST_Function scope invariance ( #2052 )
...
improve function name hack in `run_code()`
2017-06-04 19:27:43 +08:00
kzc
82fefc5d29
fix class expression statements ( #2051 )
...
- class expression statements require parentheses
- allow unused class expression statements to be dropped
fixes #1782
closes #1784
2017-06-04 02:45:26 +08:00
kzc
753932b302
drop unused arrow functions ( #2050 )
2017-06-04 00:20:46 +08:00
Alex Lam S.L
84634da4b5
add tests for AST_SymbolAccessor ( #2049 )
2017-06-03 16:08:10 +08:00
Alex Lam S.L
1743621889
clean up lib/parse.js ( #2047 )
...
- remove unused definitions
- replace `array_to_hash()`
2017-06-03 14:00:59 +08:00
Alex Lam S.L
1edbd6556f
fix beautify whitespace output within AST_Destructuring ( #2046 )
...
fixes #2044
2017-06-02 18:50:39 +08:00
kzc
f330ab743a
better document behavior of unsafe_Func ( #2043 )
2017-06-02 12:07:17 +08:00
Alex Lam S.L
888a321417
Merge pull request #2042 from alexlamsl/harmony-v3.0.15
...
Merging from master for 3.0.15
2017-06-01 19:28:30 +08:00
alexlamsl
ee5c03f7f1
Merge branch 'master' into harmony-v3.0.15
2017-06-01 18:26:09 +08:00
Alex Lam S.L
4377e932ca
v3.0.15
2017-06-01 18:12:38 +08:00
Alex Lam S.L
bac14ba881
fix non-identifier getter/setter name ( #2041 )
...
fixes #2040
2017-06-01 18:11:16 +08:00
Alex Lam S.L
ec095ed647
whitelist unsafe evaluate candidates ( #2039 )
...
- all arguments may accept constant values
- return constant value
- free of side effects
- available & identical across locales and runtime environments
2017-06-01 04:33:05 +08:00
Alex Lam S.L
17e73121fa
enhance unsafe evaluate ( #2037 )
2017-06-01 00:56:28 +08:00
kzc
0cb75089f0
document safari10 mangle option ( #2035 )
2017-05-31 23:16:20 +08:00
kzc
f71e8fd948
reformat mangle options section of README ( #2036 )
2017-05-31 21:52:43 +08:00
Alex Lam S.L
a1647ee0c5
Merge pull request #2034 from alexlamsl/harmony-v3.0.14
...
Merging from master for 3.0.14
2017-05-31 12:44:58 +08:00
alexlamsl
c814060b4a
Merge branch 'master' into harmony-v3.0.14
2017-05-31 11:42:54 +08:00
Alex Lam S.L
3e62faa64f
v3.0.14
2017-05-31 11:34:51 +08:00
Alex Lam S.L
e9645e017f
introduce unsafe_Func ( #2033 )
...
Separate flag for #203 functionality.
2017-05-31 03:38:00 +08:00
Alex Lam S.L
55b5f2a8aa
widen CLI parse error code fragment displayed ( #2032 )
...
fixes #2030
2017-05-31 01:56:52 +08:00
Alex Lam S.L
303293e4aa
fix side_effects on AST_Class ( #2031 )
...
fixes #2028
2017-05-31 01:44:29 +08:00
Alex Lam S.L
23265ac253
mangle destructuring function parameters ( #2029 )
...
fixes #2025
2017-05-30 23:41:55 +08:00
Alex Lam S.L
0cc6dedccc
fix block elimination ( #2023 )
...
fixes #1664
fixes #1672
2017-05-30 14:59:54 +08:00
kzc
ec63588496
fix compress of IIFE with destructuring args ( #2022 )
2017-05-30 13:17:06 +08:00
Alex Lam S.L
c2e471e3ad
fix if_return on block-scoped variables ( #2021 )
...
fixes #1317
2017-05-29 18:08:08 +08:00
Alex Lam S.L
ee23a84e14
Merge pull request #2020 from alexlamsl/harmony-v3.0.13
...
Merging from master for 3.0.13
2017-05-29 12:24:38 +08:00
alexlamsl
520da57fdc
Merge branch 'master' into harmony-v3.0.13
2017-05-29 10:58:05 +08:00
Alex Lam S.L
4e0a22e5c8
v3.0.13
2017-05-29 10:52:13 +08:00
Alex Lam S.L
1aa38051fb
better fix for #512 & #2010 ( #2019 )
...
- remove duplicated functionalities
- fix similar issue with `else`
2017-05-29 10:51:41 +08:00
Alex Lam S.L
e62b879b48
display default values in --help options ( #2018 )
2017-05-28 22:57:20 +08:00
Alex Lam S.L
c6c9f4f5a8
implement --help options ( #2017 )
2017-05-28 18:21:44 +08:00
Alex Lam S.L
fec14379f6
improve CLI usability ( #2016 )
...
Report supported options upon invalid option syntax.
fixes #1883
2017-05-28 04:09:40 +08:00
Alex Lam S.L
e5e0ce0b42
Merge pull request #2014 from alexlamsl/harmony-v3.0.12
...
Merging from master for 3.0.12
2017-05-28 00:08:08 +08:00
Alex Lam S.L
79131cd647
extend node_version range on applicable tests ( #2015 )
2017-05-27 22:18:28 +08:00
alexlamsl
94d2aeee89
fix block-scoped function for ES6
...
fixes #1903
2017-05-27 19:28:07 +08:00
alexlamsl
aa835eb0f6
Merge branch 'master' into harmony-v3.0.12
2017-05-27 18:12:10 +08:00
Alex Lam S.L
c3f14a1481
v3.0.12
2017-05-27 18:08:09 +08:00
Alex Lam S.L
7b13159cda
fix hoist_funs on block-scoped function under "use strict" ( #2013 )
...
Technically not part of ES5, but commonly used code exists in the wild.
2017-05-27 17:44:59 +08:00
Alex Lam S.L
95094b9c22
fix if_return on AST_Defun ( #2010 )
...
Previous fiix for #1052 perturbs declaration order of functions which leads to incorrect behaviour under "use strict".
2017-05-27 13:41:49 +08:00
kzc
1ff8e9dd38
clarify what --mangle-props does ( #2012 )
2017-05-27 13:17:30 +08:00
kzc
78309a293d
better document mangle properties options ( #2009 )
2017-05-27 02:28:43 +08:00
kzc
695e182d59
fix and expand --mangle-props documentation ( #2008 )
...
fixes #2007
2017-05-27 01:25:51 +08:00
Alex Lam S.L
dc33facfcb
fix dead_code on block-scoped function under "use strict" ( #2006 )
...
Technically not part of ES5, but commonly used code exists in the wild.
2017-05-26 16:08:51 +08:00
Alex Lam S.L
39d4d7e20a
fix export related issues ( #2005 )
...
- `mangle` non-exported names
- `unused` on `export` of `function`
- `hoist_funs` on `export`
- `export default`
- prohibit definition statements
- parse `AST_Defun` properly
- drop only unused class and function names
fixes #2001
fixes #2004
2017-05-26 13:35:40 +08:00
Alex Lam S.L
c70fb60384
clean up lib/scope.js ( #2003 )
...
fixes #2004
2017-05-26 03:58:35 +08:00
Alex Lam S.L
02811ce35e
fix issues related to export & function ( #2002 )
...
- `unused` function names
- confusion with function call syntax
fixes #2001
2017-05-26 03:12:52 +08:00
Alex Lam S.L
793d61499b
report timing breakdown ( #2000 )
...
fix corner cases with `sourceMap`
fixes #1998
2017-05-25 07:15:55 +08:00
Alex Lam S.L
a277fe168d
ensure new line after describe_ast() ( #1999 )
2017-05-25 02:32:36 +08:00
Alex Lam S.L
c988e5f4d6
remove AST_ArrowParametersOrSeq ( #1997 )
2017-05-24 17:45:18 +08:00
Alex Lam S.L
7d3b941e6e
reinstate describe_ast() on CLI ( #1996 )
...
fixes #1995
2017-05-24 02:30:09 +08:00
Alex Lam S.L
075b648bb1
Merge pull request #1994 from alexlamsl/harmony-v3.0.11
...
Merging from master for 3.0.11
2017-05-24 00:04:47 +08:00
alexlamsl
37e549ff4f
Merge branch 'master' into harmony-v3.0.11
2017-05-23 22:29:04 +08:00
Alex Lam S.L
e95052a423
v3.0.11
2017-05-23 22:26:59 +08:00
Alex Lam S.L
e667f0acb8
fix source map offset ( #1993 )
...
Account for whitespace insertions.
fixes #505
fixes #890
2017-05-23 20:25:48 +08:00
kzc
7bcb442e4c
fix destructuring bugs in mangle and compress ( #1992 )
...
- destructuring mangle
- destructuring array default values
fixes #1335
2017-05-23 02:53:01 +08:00
kzc
a658cd84a5
fix destructuring of non string keys ( #1989 )
2017-05-22 16:38:03 +08:00
kzc
69ac794bc8
add another minify() options example ( #1988 )
2017-05-22 12:19:07 +08:00
Alex Lam S.L
efdb65913b
improve usability of global_defs in minify() ( #1987 )
...
Use `@key` to `parse()` string value as `AST_Node`.
fixes #1986
2017-05-22 01:38:43 +08:00
kzc
a1dedeb3ce
more refinement of minify() documentation ( #1983 )
2017-05-21 04:55:03 +08:00
Alex Lam S.L
5b22334f3b
Merge pull request #1982 from alexlamsl/harmony-v3.0.10
...
Merging from master for 3.0.10
2017-05-21 03:23:59 +08:00
alexlamsl
a3053c537a
Merge branch 'master' into harmony-v3.0.10
2017-05-21 01:36:38 +08:00
Alex Lam S.L
d3c4a8e9e7
v3.0.10
2017-05-21 01:30:17 +08:00
kzc
d6f77a6352
update keywords in package.json ( #1981 )
2017-05-20 22:10:51 +08:00
kzc
7e164aba8f
add "es5" to package.json keywords ( #1980 )
2017-05-20 22:09:50 +08:00
kzc
22aedef849
document minify() option toplevel ( #1979 )
2017-05-20 22:09:21 +08:00
Alex Lam S.L
58fae7dc07
enhance if_return to handle return void... ( #1977 )
...
fixes #512
2017-05-20 15:58:46 +08:00
Alex Lam S.L
a2172e1a99
fix parsing of yield as object key ( #1976 )
...
fixes #1974
2017-05-20 13:11:37 +08:00
kzc
5bf8d7e949
document 3.x minify() does not throw errors ( #1975 )
2017-05-20 10:49:35 +08:00
kzc
1df9d06f4a
document minify warnings and add an error example ( #1973 )
2017-05-19 17:20:21 +08:00
Alex Lam S.L
9a074c2637
Merge pull request #1972 from alexlamsl/harmony-v3.0.9
...
Merging from master for 3.0.9
2017-05-19 10:38:45 +08:00
alexlamsl
02b14528fa
Merge branch 'master' into harmony-v3.0.9
2017-05-19 09:51:00 +08:00
Alex Lam S.L
3408fc9d32
v3.0.9
2017-05-19 09:35:26 +08:00
Alex Lam S.L
eae26756f1
introduce unsafe_regexp ( #1970 )
...
fixes #1964
2017-05-19 09:06:29 +08:00
Alex Lam S.L
3db2001633
suppress unused on block variables ( #1969 )
...
fixes #1968
2017-05-19 00:28:19 +08:00
Alex Lam S.L
aaba482e48
Merge pull request #1967 from alexlamsl/harmony-v3.0.8
...
Merging from master for 3.0.8
2017-05-18 16:02:29 +08:00
alexlamsl
5f29fced0a
Merge branch 'master' into harmony-v3.0.8
2017-05-18 14:54:18 +08:00
Alex Lam S.L
43add9416b
v3.0.8
2017-05-18 14:49:40 +08:00
Alex Lam S.L
efcf167e5e
make expect_stdout node version specific ( #1963 )
...
... via semver string on `node_version` label.
2017-05-18 11:28:35 +08:00
Kara
6ed90913ca
fix docs for side_effects flag to reflect current behavior ( #1966 )
2017-05-18 10:51:49 +08:00
kzc
b1b918e6d6
better extends paren fix ( #1962 )
2017-05-18 02:36:29 +08:00
Alex Lam S.L
569c21e952
improve RegExp handling ( #1959 )
...
- remove `options.output.unescape_regexps`
- preserve original pattern whenever possible
fixes #54
fixes #1929
2017-05-17 20:10:50 +08:00
Alex Lam S.L
87c3a2c0ce
remove space_colon ( #1960 )
...
Always emit space after colon when `options.output.beautify` is enabled.
2017-05-17 14:07:34 +08:00
Rob Garrison
baef8bf050
update output options in readme ( #1958 )
2017-05-17 11:54:46 +08:00
alexlamsl
0813c5316f
remove Travis CI badge
2017-05-17 10:32:59 +08:00
kzc
ebb469e4cd
fix class extends expression ( #1956 )
2017-05-17 03:29:25 +08:00
kzc
c22d26b483
support export default of anonymous functions and classes ( #1954 )
2017-05-17 03:28:24 +08:00
Alex Lam S.L
f751e64d49
Merge pull request #1951 from alexlamsl/harmony-v3.0.7
...
Merging from master for 3.0.7
2017-05-17 01:03:55 +08:00
alexlamsl
60c56a24b9
Merge branch 'master' into harmony-v3.0.7
2017-05-16 20:02:30 +08:00
Alex Lam S.L
c88139492d
v3.0.7
2017-05-16 19:59:40 +08:00
Alex Lam S.L
cb45886512
export TreeTransformer ( #1950 )
...
- link to existing documentation on `TreeWalker` & `TreeTransformer`
- fix Travis build failures
fixes #1949
2017-05-16 19:59:05 +08:00
Alex Lam S.L
01f23cf5a1
Merge pull request #1948 from alexlamsl/harmony-v3.0.6
...
Merging from master for 3.0.6
2017-05-16 13:26:45 +08:00
alexlamsl
99fb3e8f0d
Merge branch 'master' into harmony-v3.0.6
2017-05-16 06:48:23 +08:00
Alex Lam S.L
050474ab44
v3.0.6
2017-05-16 06:38:58 +08:00
Alex Lam S.L
f6c805ae1d
print package name alongside version in CLI ( #1946 )
...
fixes #1945
2017-05-16 06:34:32 +08:00
Alex Lam S.L
9464d3c20f
fix parsing of property access after new line ( #1944 )
...
Account for comments when detecting property access in `tokenizer`.
fixes #1943
2017-05-16 05:40:49 +08:00
alexlamsl
f18abd1b9c
minor fixes to README.md
2017-05-16 01:33:01 +08:00
kzc
3be06ad085
reorg README for 3.x ( #1942 )
2017-05-16 01:12:00 +08:00
Alex Lam S.L
265008c948
improve keyword-related parser errors ( #1941 )
...
fixes #1937
2017-05-15 23:02:55 +08:00
Alex Lam S.L
756c9aa7dc
keep minify() options in sync ( #1940 )
2017-05-15 20:29:48 +08:00
Alex Lam S.L
07d6bfd707
Merge pull request #1939 from alexlamsl/harmony-v3.0.5
...
Merging from master for 3.0.5
2017-05-15 19:48:00 +08:00
alexlamsl
81243c4e71
Merge branch 'master' into harmony-v3.0.5
2017-05-15 18:58:54 +08:00
alexlamsl
cd6e849555
Revert "remove support for const ( #1910 )"
...
This reverts commit c391576d52 .
2017-05-15 18:38:16 +08:00
Alex Lam S.L
ff526be61d
v3.0.5
2017-05-15 11:37:14 +08:00
Alex Lam S.L
e005099fb1
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 02:37:53 +08:00
kzc
504a436e9d
Tweak README Notes ( #1934 )
2017-05-14 02:12:14 +08:00
Alex Lam S.L
3ca902258c
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-14 02:10:34 +08:00
kzc
91de285166
uglify-es: update homepage in package.json ( #1933 )
...
to point to harmony branch on github
2017-05-14 00:25:06 +08:00
kzc
4d8f289eb0
fix export default expression; ( #1932 )
2017-05-13 12:56:46 +08:00
olsonpm
fd0951231c
document 3 max passes ( #1928 )
2017-05-13 12:54:32 +08:00
olsonpm
9e29b6dad2
clarify wording ( #1931 )
2017-05-13 12:54:01 +08:00
Alex Lam S.L
c391576d52
remove support for const ( #1910 )
...
As this is not part of ES5.
2017-05-12 14:57:41 +08:00
Alex Lam S.L
ac73c5d421
avoid arguments and eval in reduce_vars ( #1924 )
...
fixes #1922
2017-05-12 12:34:55 +08:00
olsonpm
547f41beba
add documentation for side_effects & [#@]__PURE__ ( #1925 )
2017-05-12 12:29:55 +08:00
Alex Lam S.L
945ba64160
Merge pull request #1923 from alexlamsl/harmony-v3.0.4
...
Merging from master for 3.0.4
2017-05-12 06:52:21 +08:00
Anthony Van de Gejuchte
c699200398
Make sure globals can be accessed from the browser ( #1920 )
...
Note: no tests as there are no integration tests
2017-05-12 05:50:35 +08:00
alexlamsl
daf44f2b21
Merge branch 'master' into harmony-v3.0.4
2017-05-12 05:13:11 +08:00
Alex Lam S.L
daaefc17b9
v3.0.4
2017-05-12 04:52:39 +08:00
Alex Lam S.L
1d407e761e
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 04:51:44 +08:00
kzc
2b44f4ae30
update README ( #1918 )
2017-05-12 03:36:33 +08:00
Alexis Tyler
e51c3541da
fix typo ( #1913 )
2017-05-11 20:24:33 +08:00
Alex Lam S.L
3bf194684b
update documentation ( #1909 )
...
- clarify options on `--source-map`
- fix `minify()` examples
fixes #1905
2017-05-11 17:50:50 +08:00
Gyusun Yeom
fcd90db30d
fix safari syntax error - declare twice ( #1851 )
...
To avoid Safari bug, scope of for loop should enclose parent scope variables.
fixes #1753
2017-05-11 16:48:43 +08:00
Alex Lam S.L
e2888bdc43
Merge pull request #1901 from alexlamsl/harmony-v3.0.3
...
Merging from master for 3.0.3
2017-05-10 14:26:58 +08:00
alexlamsl
fb50b7b627
Merge branch 'master' into harmony-v3.0.3
2017-05-10 11:52:59 +08:00
Alex Lam S.L
aae7d49d0c
v3.0.3
2017-05-10 11:45:03 +08:00
kzc
9d59c693c2
fix for-of loop with const iterator ( #1899 )
2017-05-10 11:36:03 +08:00
kzc
0459af2ecc
Update issue template: change harmony to uglify-es ( #1900 )
2017-05-10 11:07:54 +08:00
kzc
04f2344efc
Remove unnecessary git clone instructions in README ( #1897 )
2017-05-10 11:06:50 +08:00
kzc
6ddb5bd94d
Remove incorrect git clone instructions from uglify-es README ( #1896 )
2017-05-10 11:06:22 +08:00
kzc
bad9d5cf88
Change harmony to uglify-es in master README ( #1895 )
2017-05-10 05:07:45 +08:00
kzc
eda49605c5
Have harmony docs use uglify-es package name. ( #1894 )
2017-05-10 04:41:09 +08:00
Alex Lam S.L
a0f5f862df
gracefully handle non-Error being thrown ( #1893 )
2017-05-10 04:20:59 +08:00
Alex Lam S.L
1e9ef17e32
Merge pull request #1892 from alexlamsl/harmony-v3.0.2
...
Merging from master for 3.0.2
2017-05-10 03:14:45 +08:00
Alex Lam S.L
41996be86f
extend test timeout
...
Travis has gone a lot slower recently, and most test failures are due to time-out on this particular test.
2017-05-10 02:43:12 +08:00
alexlamsl
222100ea4c
Merge branch 'master' into harmony-v3.0.2
2017-05-10 01:57:32 +08:00
Alex Lam S.L
5fd8244a2e
v3.0.2
2017-05-10 01:52:00 +08:00
Alex Lam S.L
93db48a317
rename package
2017-05-10 01:46:55 +08:00
Alex Lam S.L
2944e3df7d
fix collapse_vars on destructuring declarations ( #1889 )
...
fixes #1886
2017-05-09 17:44:28 +08:00
Alex Lam S.L
c14e280585
print error stack in CLI ( #1890 )
2017-05-09 16:36:44 +08:00
Alex Lam S.L
bc3fa78e8c
mention minify().error
2017-05-09 16:09:48 +08:00
Alex Lam S.L
8c7c107765
update minify() usage in test/ufuzz.js ( #1888 )
...
fixes #1887
2017-05-09 15:58:46 +08:00
Alex Lam S.L
e0ae8da089
Merge pull request #1885 from alexlamsl/harmony-v3.0.1
...
Merging from master for 3.0.1
2017-05-09 02:49:28 +08:00
alexlamsl
81f1311b24
Merge branch 'master' into harmony-v3.0.1
2017-05-09 02:10:06 +08:00
Alex Lam S.L
2433bb4e52
fix Unicode handling in parser ( #1884 )
...
There was an implicit assumption that first character within surrogate header range implies the next character must form a surrogate pair, which is not necessarily true.
2017-05-09 01:58:31 +08:00
kzc
3dd328dce3
[3.x] fix documentation for beautify options ( #1882 )
...
- use underscores rather than dashes.
2017-05-08 23:06:56 +08:00
Alex Lam S.L
014f428153
v3.0.1
2017-05-08 07:05:57 +08:00
Alex Lam S.L
a3b2eb75bd
return Error from minify() ( #1880 )
...
Have `minify()` return `Error` in `result.error` rather than throwing it.
2017-05-08 07:05:19 +08:00
Alex Lam S.L
da295de82b
support dumping AST ( #1879 )
...
Re-order `AST_Binary` properties to make dump more readable.
closes #769
2017-05-08 06:23:01 +08:00
Alex Lam S.L
4f8ca4626e
deprecate low level API ( #1877 )
...
fixes #1872
2017-05-08 03:24:42 +08:00
Alex Lam S.L
e54748365c
support minify() output as AST ( #1878 )
...
- `options.output.ast` (default `false`)
- `options.output.code` (default `true`)
2017-05-08 02:11:45 +08:00
Alex Lam S.L
3fac29a017
Merge pull request #1876 from alexlamsl/harmony-v3.0.0
...
Merging from master for 3.0.0
2017-05-08 01:44:07 +08:00
alexlamsl
b4c18f6b83
Merge branch 'master' into harmony-v3.0.0
2017-05-07 15:34:16 +08:00
Alex Lam S.L
2d99d06601
update documentation
...
Remove deprecated CLI option
2017-05-07 03:02:46 +08:00
Alex Lam S.L
98cf95e5b5
fix test for #1865 ( #1873 )
2017-05-07 02:56:02 +08:00
Alex Lam S.L
7313465cba
v3.0.0
2017-05-06 23:51:10 +08:00
Alex Lam S.L
2c7ee956fd
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:18:55 +08:00
Alex Lam S.L
ecf3563c45
kill opera ( #1869 )
2017-05-06 17:42:07 +08:00
Alex Lam S.L
dee5a27516
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
2017-05-06 16:15:43 +08:00
Alex Lam S.L
5a25d24b56
rename variables for better readability ( #1863 )
2017-05-02 20:47:10 +08:00
Alex Lam S.L
bffdc8dca8
update test/benchmark.js resources ( #1864 )
2017-05-02 19:48:12 +08:00
Alex Lam S.L
69b5663653
restore report of supported options ( #1861 )
...
fixes #1859
2017-05-02 01:42:29 +08:00
kzc
ea9289771b
improve literal return optimization ( #1860 )
2017-05-02 00:10:11 +08:00
Alex Lam S.L
2cb55b2ad0
enforce toplevel on other compress options ( #1855 )
...
Respect "funcs" and "vars" properly.
fixes #1850
2017-04-30 22:52:36 +08:00
kzc
73d6438773
fix \\n and \\r in template strings ( #1857 )
...
fixes #1856
2017-04-30 17:05:32 +08:00
kzc
5c6316a37d
fix class method formatting ( #1853 )
...
fixes #1852
2017-04-29 18:13:25 +08:00
kzc
bbb5f2a89c
Update ISSUE_TEMPLATE.md ( #1846 )
2017-04-26 01:30:43 +08:00
Alex Lam S.L
76d19b60ad
fix fuzzer on this ( #1842 )
...
- forbid redeclaration of `this`
- suppress probability for `this` within nested functions
2017-04-24 03:15:03 +08:00
Alex Lam S.L
9e62628171
fix unused on for-in statements ( #1843 )
...
Only need to avoid `var` within the initialisation block.
fixes #1841
2017-04-24 03:14:01 +08:00
Alex Lam S.L
9bf72cf758
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
2017-04-23 20:05:22 +08:00
kzc
64d74432f6
update README for 3.x ( #1840 )
2017-04-23 04:28:32 +08:00
Alex Lam S.L
45ce369480
fix AST_For.init patch-up in drop_unused() ( #1839 )
...
fixes #1838
2017-04-23 01:51:56 +08:00
Alex Lam S.L
ca32a09032
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-04-22 22:15:04 +08:00
Roman Dvornov
6f954aa3d0
Fix API reference examples ( #1834 )
2017-04-21 02:23:41 +08:00
Alex Lam S.L
f05d4f7af3
improve unused ( #1832 )
...
- extract leading value with side-effects out of `var` statement
- reduce scanning of `AST_Definitions` from 3 passes to just once
2017-04-20 13:06:14 +08:00
Alex Lam S.L
88e7a542cd
fix unused on labeled for-loop ( #1831 )
...
fixes #1830
2017-04-20 04:18:38 +08:00
Alex Lam S.L
4dcff038cb
improve collapse_vars on AST_Var ( #1828 )
...
Perform the same cascaded scanning within `var` statement as we do on array of statements.
2017-04-19 04:49:09 +08:00
Alex Lam S.L
b4b9305db0
fix parser bugs & CLI reporting ( #1827 )
...
fixes #1825
2017-04-19 04:27:13 +08:00
Alex Lam S.L
28cfb65c47
extend cascade into a.b ( #1829 )
...
fixes #27
2017-04-19 04:17:15 +08:00
Alex Lam S.L
0f4f01b66c
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`
2017-04-18 21:45:34 +08:00
Alex Lam S.L
5d9f1da3ab
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
2017-04-18 13:38:42 +08:00
Alex Lam S.L
d1aa09c5c7
fix reduce_vars on conditionals ( #1822 )
2017-04-18 01:44:23 +08:00
Alex Lam S.L
6d5f341999
fix reduce_vars on boolean binary expressions ( #1819 )
...
Side effects of `&&` and `||` have not mattered until #1814 , which takes assignment expressions into account.
2017-04-17 17:24:29 +08:00
Alex Lam S.L
4ffb6fce76
compress duplicated variable definitions ( #1817 )
...
These are surprisingly common, as people reuse the same variable name within loops or switch branches.
2017-04-17 17:11:29 +08:00
Alex Lam S.L
71a8d0d236
fix reduce_vars within try-block ( #1818 )
...
Possible partial execution due to exceptions.
2017-04-17 14:03:29 +08:00
Alex Lam S.L
1a498db2d3
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
2017-04-17 01:36:50 +08:00
Alex Lam S.L
44dfa5a318
fix variable substitution ( #1816 )
...
- let `collapse_vars` take care of value containing any symbols
- improve overhead accounting
2017-04-16 17:25:39 +08:00
Alex Lam S.L
251ff1d1af
update README ( #1813 )
...
- mention major version bump
- remove reference to internal API
2017-04-16 04:04:28 +08:00
Alex Lam S.L
ec443e422c
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
2017-04-15 23:50:50 +08:00
Alex Lam S.L
32deb365d5
drop angular ( #1812 )
...
Remove support for `@ngInject` as there are proper alternatives anyway.
2017-04-15 05:52:29 +08:00
Alex Lam S.L
2244743545
convert AST_Seq from binary tree to array ( #1460 )
...
- rename `AST_Seq` to `AST_Sequence`
- raise default sequences_limit from 200 to 800
2017-04-12 21:56:27 +08:00
Alex Lam S.L
278577f3cb
Merge pull request #1805 from alexlamsl/harmony-v2.8.22
...
Merging from master for 2.8.22
2017-04-09 17:27:30 +08:00
alexlamsl
0d8597e904
Merge branch 'master' into harmony-v2.8.22
2017-04-09 15:50:38 +08:00
Alex Lam S.L
04b8964505
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
Anthony Van de Gejuchte
c20bb99a62
Put expression after extend between parentheses if necessary ( #1780 )
2017-04-04 12:38:13 +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
Anthony Van de Gejuchte
2377171200
Fix walker not able to handle destr pattern in spread when compressing ( #1438 )
2017-04-04 01:23:22 +08:00
Anthony Van de Gejuchte
603d92effc
Allow AST_DefaultAssign as parameter ( #1778 )
...
This may be the case for parsing arrow functions,
as left side expressions are converted to destructuring patterns
before being converted to parameters.
2017-04-04 00:46:05 +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
Anthony Van de Gejuchte
17f0cc359f
Allow empty destructuring ( #1773 )
2017-04-03 17:21:27 +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
35bae3fcd0
Merge pull request #1766 from alexlamsl/harmony-v2.8.21
...
Merging from master for 2.8.21
2017-04-02 18:10:58 +08:00
alexlamsl
4614b5b46e
Merge branch 'master' into harmony-v2.8.21
2017-04-02 17:25:20 +08:00
Alex Lam S.L
b7f6b73f4e
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
Alex Lam S.L
d57527697f
avoid confusion of NaN & Infinity with catch symbol of the same name ( #1763 )
...
fixes #1760
fixes #1761
2017-04-02 16:14:09 +08:00
Alex Lam S.L
f7ca4f2297
fix corner cases in switch and undefined ( #1762 )
...
- fix side effects in switch condition for singular blocks
- fix `undefined` confusion with local variable
- gate `OPT(AST_Switch)` with `switches`
fixes #1758
fixes #1759
2017-04-02 14:52:25 +08:00
Alex Lam S.L
c076e7b60d
speed up fuzzer code generation ( #1757 )
...
- only output one top-level function or statement block
- reduce `rng()` granularity from 2^32 to 65536
- fix overflow in `rng()`
- track `canThrow` during `typeof` creation
2017-04-02 05:11:29 +08:00
Alex Lam S.L
4a55bb0be5
minor tweaks to test/ufuzz.js ( #1756 )
...
- count iterations from `1` instead of `0`
- remove `unsafe` from default set of `minify()` tests
- improve usability of help
2017-04-02 03:17:01 +08:00
Alex Lam S.L
28ecea50a6
upgrade fuzzer ( #1754 )
...
- configurable set of `minify()` options
- test and report suspects upon failure
- continue after failure if infinite iterations is specified
2017-04-02 02:10:50 +08:00
kzc
9a311705f5
fuzz regexp literals, more constant numbers, typeof expression ( #1755 )
2017-04-02 02:08:46 +08:00
Alex Lam S.L
ee3fe0f4cd
fix switch branch elimination ( #1752 )
...
Merge unreachable case body with previous fallthrough case
fixes #1750
2017-04-01 17:19:57 +08:00
Alex Lam S.L
87f6e1b091
minor tweaks to fuzzer ( #1751 )
...
- remove `let` as variable name
- employ `crypto.randomBytes()`
2017-04-01 17:09:52 +08:00
Alex Lam S.L
c934fc8142
implement test/sandbox.js ( #1749 )
...
- `test/run-tests.js` and `test/ufuzz.js` now shares the same `run_code()` and `same_stdout()`
- re-enable fuzzer to generate top-level `NaN`, `Infinity` & `undefined`
- attempt to show beautified output only when `run_code()` output is preserved
2017-04-01 05:47:11 +08:00
Alex Lam S.L
257ddc3bdb
improve compression of undefined, NaN & Infinitiy ( #1748 )
...
- 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-04-01 03:02:14 +08:00
Alex Lam S.L
1ddc05725d
combine rules for binary boolean operations ( #1744 )
2017-03-31 18:47:44 +08:00
Ondřej Španěl
2f93058c6e
More variants of import added ( #1738 )
...
- `import * from "x.js"`
- `import * as Name from "x.js"`
2017-03-31 17:52:56 +08:00
Ondřej Španěl
a729c43e87
Another variant of export added - export {Name}. ( #1737 )
2017-03-31 17:51:27 +08:00
Peter van der Zee
e6b76a4879
Massive extension of the fuzzer ( #1697 )
...
Fix bug where a `throw` was generated without expression
Reenable try/catch/finally and fix them up
Skip serialization errors
Allow function decl in other funcs but not in blocks etc
Rename function to be more appropriate
Fix global functions not getting certain names
Make the canaries more likely to appear as expressions
Add a silly rounding edge case
Add a new canary, `c`, which should only ever be incremented
Refactoring
Fix (another) iife not actually being invoked
When a statement hits recursion max return an expression instead of `;`
When a expression hits recursion max also inc `c`
Generate global code as well as function code
Also fixes some argument juggling related bugs.
No longer reduces the recursion max when generating sub functions.
Generates a function arg.
Add used names to var name pool while in that scope
This is a little wonky, possibly a hack, but since it's synchronous code I think it's alright to do this. The alternative is to slice the varnames array and juggle them through almost all the generator functions and there are various reasons why this patch is a better alternative.
Minify generated code, not beautified code. Prevents beautifier bias.
Prevent unnecessary duplication
Remove serialization protection because I think it got handled elsewhere
Abstract toplevel code generation
Add example line of running test case
Add poor man options parser, and some options
Reindent to 4 spaces
Lower chance of `default` generation
Comment example of testing a case and output improvement
Enable `default` clause appearing at any clause index
Removing some training wheels; dont add parens where we dont absolutely need them
Support `-s1` and `-s2` to force specific statements being generated at that recursion level
Add round number to output when failing. For stats and fun and profit.
Solidify statement depth counting. The argument juggling is real.
Renamed option to something long. -scf was ugly and probably confusing.
Fix missing arguments causing `canThrow` to be truthy, generating crashing code
Generate more binary nested expressions
Add black and white list cli options for statement generation
Allows you to explicitly require or forbid certain statements from/to being made.
```
node test/ufuzz.js --without-stmt switch,try -t 5 -r 5 -V
```
```
node test/ufuzz.js --only-stmt ifelse,expr -t 5 -r 5 -V
```
Similar granularity for expression may be added later.
There can be no comma between names; it just does a split on that arg.
Trim down the binary expression generator
Prevent scoping issues in nodejs by preventing certain names in global space
Oh this list was incomplete?
Allow bin-expr to generate assignments too. More vigilant with storing and reusing vars.
Add more global builtin names
Update wrapper code
Also patch Function valueOf
2017-03-31 17:23:50 +08:00
Alex Lam S.L
a0c3836ba0
sort options in alphabetical order ( #1743 )
...
They started off as functional groups I guess, but given the sheer number of options this is becoming too difficult to read.
2017-03-31 16:41:04 +08:00
Alex Lam S.L
f8a71b56fd
v2.8.20
2017-03-31 15:27:40 +08:00
Alex Lam S.L
11e9bdc427
fix missing preamble when shebang is absent ( #1742 )
2017-03-31 15:26:57 +08:00
Alex Lam S.L
66e9039350
Merge pull request #1740 from alexlamsl/harmony-v2.8.19
...
Merging from master for 2.8.19
2017-03-31 13:28:56 +08:00
alexlamsl
d717bf9ce8
Merge branch 'master' into harmony
2017-03-31 12:54:03 +08:00
Alex Lam S.L
a84564d1a8
v2.8.19
2017-03-31 12:26:10 +08:00
Alex Lam S.L
c595b84032
fix catch symbol mangling ( #1734 )
...
Only need to look up the immediate non-block/catch scope for the same-name special case.
fixes #1733
2017-03-31 02:57:47 +08:00
Ondřej Španěl
5dea52266b
[ES6] Implemented parse for export Name from Module variants. ( #1701 )
...
- add `AST_Export` new variants output
- add tests to `test/compress/`
- update `$propdoc` of `AST_Export` ("exported_names" & "module_name")
- add tests for `export ... as ...` variants
2017-03-30 17:07:50 +08:00
Alex Lam S.L
7cb1adf455
remove paranthesis for -(x*y) ( #1732 )
2017-03-30 16:09:00 +08:00
Alex Lam S.L
7bea38a05d
optimize try-catch-finally ( #1731 )
...
- eliminate empty blocks
- flatten out if try-block does not throw
2017-03-30 12:16:58 +08:00
Alex Lam S.L
0f910ee25c
improve tests from #1726 ( #1729 )
2017-03-30 00:13:46 +08:00
Alex Lam S.L
beb9659778
speed up IIFE elimination ( #1728 )
...
- `side_effects` will clean up inner statements, so checking for an empty function body should suffice
- drop side effects when dropping `return` from statement
2017-03-29 23:27:35 +08:00
Alex Lam S.L
f1a833a7aa
speed up equivalent_to() and AST_Switch ( #1727 )
2017-03-29 22:08:26 +08:00
Alex Lam S.L
2e41cd6394
fix missing parentheses around NaN/Infinity shorthands ( #1726 )
...
fixes #1724
fixes #1725
2017-03-29 20:53:03 +08:00
Alex Lam S.L
09f77c7d4d
output optimal representations of NaN & Infinity ( #1723 )
...
- 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-29 18:31:55 +08:00
Alex Lam S.L
fef0bf9ee0
improve beautified output of switch blocks ( #1721 )
2017-03-29 04:40:05 +08:00
Alex Lam S.L
ae740b933f
v2.8.18
2017-03-29 03:13:30 +08:00
Alex Lam S.L
ec7f37f314
remove UGLIFY_DEBUG ( #1720 )
...
fixes #1719
2017-03-29 01:27:24 +08:00
Alex Lam S.L
fccefbeaca
Merge pull request #1717 from alexlamsl/harmony-v2.8.17
...
Merging from master for 2.8.17
2017-03-29 01:01:28 +08:00
Alex Lam S.L
eb48a035e7
fix corner case in unused ( #1718 )
...
When fixing catch-related issue in #1715 , it tries to optimise for duplicate definitions but did not take anonymous functions into account.
Remove such optimisation for now and we can cover this as a more general rule later.
2017-03-29 01:00:21 +08:00
alexlamsl
1e2b0aaa04
Merge branch 'master' into harmony-v2.8.17
2017-03-28 22:03:46 +08:00
Alex Lam S.L
6ab3224c0d
v2.8.17
2017-03-28 21:49:04 +08:00
Alex Lam S.L
c909ffb715
fix unused on var of the same name within catch ( #1716 )
...
fixes #1715
2017-03-28 21:25:49 +08:00
Alex Lam S.L
f71f4905b0
fix is_number() on += ( #1714 )
...
fixes #1710
2017-03-28 17:08:16 +08:00
Alex Lam S.L
fb177a6312
drop anonymous function name when overshadowed by other declarations ( #1712 )
...
fixes #1709
2017-03-28 17:02:20 +08:00
Alex Lam S.L
65da9acce6
handle var within catch of the same name ( #1711 )
...
The following code prints `1`:
var a = 1;
!function(){
a = 4;
try{
throw 2;
} catch (a) {
var a = 3;
}
}();
console.log(a);
fixes #1708
2017-03-28 16:42:39 +08:00
Alex Lam S.L
67d0237f73
fix tail trimming of switch blocks ( #1707 )
...
now guarded under `dead_code`
fixes #1705
2017-03-28 03:59:13 +08:00
Alex Lam S.L
984a21704e
fix mangle for variable declared within catch block ( #1706 )
...
fixes #1704
2017-03-28 03:26:35 +08:00
Alex Lam S.L
aa3f647656
ufuzz: workaround for Function.toString() v2 ( #1700 )
2017-03-27 21:49:08 +08:00
Alex Lam S.L
c526da59a1
has_side_effects() should take AST_Switch.expression into account (#1699 )
...
fixes #1698
2017-03-27 18:09:35 +08:00
Alex Lam S.L
581630e0a7
fix 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.
2017-03-27 04:37:42 +08:00
Alex Lam S.L
f5952933a0
preserve side effects in switch expression ( #1694 )
...
fixes #1690
2017-03-27 02:32:46 +08:00
Alex Lam S.L
f001e4cb9d
fix 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.
2017-03-27 01:58:21 +08:00
Alex Lam S.L
57ce5bd9e0
handle 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.
2017-03-27 01:30:21 +08:00
Alex Lam S.L
861a79ac9f
fix delete related issues in collapse_vars and reduce_vars ( #1689 )
2017-03-26 19:14:30 +08:00
Alex Lam S.L
00996afd2c
ufuzz: workaround function name and toString() ( #1688 )
...
fixes #1686
2017-03-26 18:18:44 +08:00
Alex Lam S.L
e76fb354eb
fix 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 #1685
2017-03-26 18:08:44 +08:00
Alex Lam S.L
3276740779
fallthrough should not execute case expression ( #1683 )
...
- de-duplicate trailing cases only, avoid all potential side-effects
- enable switch statement fuzzing
fixes #1680
2017-03-26 16:52:38 +08:00
kzc
5509e51098
optimize conditional when condition symbol matches consequent ( #1684 )
2017-03-26 16:36:33 +08:00
Alex Lam S.L
94f84727ce
suppress switch branch de-duplication upon side effects ( #1682 )
...
fixes #1679
2017-03-26 13:32:43 +08:00
Alex Lam S.L
8a4f86528f
fix side-effects detection on switch statements ( #1678 )
...
extension of #1675
2017-03-26 12:05:44 +08:00
Peter van der Zee
adb0e882e9
Improve 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 contexts
2017-03-26 12:04:50 +08:00
kzc
6a54de79b5
optimize trivial arrow functions with a return statement in braces ( #1681 )
...
fixes #1676
2017-03-26 12:03:11 +08:00
Alex Lam S.L
f83d370f57
improve switch optimisations ( #1677 )
...
- correctly determine reachability of (default) branches
- gracefully handle multiple default branches
- optimise branches with duplicate bodies
fixes #376
fixes #441
fixes #1674
2017-03-26 05:15:46 +08:00
Alex Lam S.L
b19aa58cff
fix 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 #1673
2017-03-25 23:03:26 +08:00
Alex Lam S.L
0a65de89b9
fix reduce_vars on AST_Switch ( #1671 )
...
Take conditional nature of switch branches into account.
fixes #1670
2017-03-25 21:17:30 +08:00
Alex Lam S.L
6e86ee950d
fix typeof side-effects ( #1669 )
...
`has_side_effects()` does not take `typeof`'s magical power of not tripping over undeclared variable into account.
fixes #1668
2017-03-25 17:40:18 +08:00
Alex Lam S.L
8ca2401ebe
fix dead_code on AST_Switch ( #1667 )
...
Need to call `extract_declarations_from_unreachable_code()`.
fixes #1663
2017-03-25 16:21:42 +08:00
Alex Lam S.L
491f16c766
v2.8.16
2017-03-25 03:21:16 +08:00
Alex Lam S.L
a30092e20f
fix 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 #1656
2017-03-25 03:18:36 +08:00
Alex Lam S.L
b1abe92e1a
introduce ufuzz.js ( #1655 )
...
closes #1647
2017-03-25 01:46:12 +08:00
Alex Lam S.L
b454ce667e
Update ISSUE_TEMPLATE.md
2017-03-24 23:12:58 +08:00
Alex Lam S.L
32283a0def
fix cascade of evaluate optimisation ( #1654 )
...
Operator has changed, so break out from rest of the rules.
fixes #1649
2017-03-24 22:09:19 +08:00
Alex Lam S.L
ac51d4c5a0
fix corner case in AST_For.init ( #1652 )
...
Enforce `null` as value for empty initialisation blocks.
fixes #1648
2017-03-24 19:31:17 +08:00
Alex Lam S.L
0432a7abb9
fix assignment extraction from conditional ( #1651 )
...
fixes #1645
fixes #1646
2017-03-24 18:52:48 +08:00
Alex Lam S.L
f3a1694a41
fix assignment substitution in sequences ( #1643 )
...
take side effects of binary boolean operations into account
fixes #1639
2017-03-24 14:30:31 +08:00
Alex Lam S.L
2e0dc97003
improve error marker placement ( #1644 )
...
For AST_UnaryPrefix, points to the operator rather than end of expression.
2017-03-24 14:28:40 +08:00
Alex Lam S.L
701035621d
fix expect_stdout ( #1642 )
...
`compress()` may modify input ASTs
add tests for #1627 & #1640
2017-03-24 13:19:50 +08:00
kzc
79334dda10
fix regression: CLI options with hyphens like -b ascii-only ( #1640 )
...
fixes #1637
2017-03-24 11:55:03 +08:00
Alex Lam S.L
e918748d88
improve 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 move
2017-03-24 02:55:32 +08:00
Alex Lam S.L
9e2290b29c
Merge pull request #1636 from alexlamsl/harmony-v2.8.15
...
Merging from master for 2.8.15
2017-03-23 16:08:53 +08:00
alexlamsl
97d0fc271d
Merge branch 'master' into harmony-v2.8.15
2017-03-23 15:28:17 +08:00
Alex Lam S.L
6b2f34769a
v2.8.15
2017-03-23 13:36:47 +08:00
Alex Lam S.L
48ffbef51d
account for cross-scope modifications in collapse_vars ( #1634 )
...
mostly done by @kzc
fixes #1631
2017-03-23 07:17:34 +08:00
Alex Lam S.L
c0f3feae9f
introduce compressor.info() ( #1633 )
...
report the following only when `options.warnings = "verbose"`
- unused elements due to inlining
- collpased variables
2017-03-23 06:49:49 +08:00
Alex Lam S.L
a00040dd93
fix a bug in simple_glob ( #1632 )
...
- "?" should not match "/"
- other minor clean-ups
2017-03-23 06:11:16 +08:00
Alex Lam S.L
ee95c1b38b
metadata 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.js
2017-03-23 01:31:46 +08:00
Alex Lam S.L
4bceb85cbf
throw parse error on invalid assignments ( #1627 )
...
fixes #1626
2017-03-21 14:11:32 +08:00
Alex Lam S.L
7906033e82
Merge pull request #1624 from alexlamsl/harmony-v2.8.14
...
Merging from master for 2.8.14
2017-03-19 18:24:29 +08:00
alexlamsl
4bf21ce5c1
add expect_stdout to tests
2017-03-19 15:35:39 +08:00
alexlamsl
44d6b47bdc
Merge branch 'master' into harmony-v2.8.14
2017-03-19 15:31:18 +08:00
Alex Lam S.L
30a75049f5
v2.8.14
2017-03-19 15:24:57 +08:00
Alex Lam S.L
a3cc3a9b87
make 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.
2017-03-19 12:00:32 +08:00
Alex Lam S.L
96f8befdd7
fix 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`
2017-03-19 11:59:42 +08:00
Alex Lam S.L
cd58635dcc
fix AST_Binary.lift_sequences() ( #1621 )
...
Commit eab99a1c fails to account for side effects from compound assignments.
2017-03-19 03:04:22 +08:00
Alex Lam S.L
274331d0ea
transform String.charAt() to index access ( #1620 )
...
Guarded by `unsafe` as `charAt()` can be overridden.
2017-03-19 02:17:15 +08:00
Alex Lam S.L
129e449c8e
Merge pull request #1614 from alexlamsl/harmony-v2.8.13
...
Merging from master for 2.8.13
2017-03-18 13:02:09 +08:00
alexlamsl
75c3c8963f
Merge branch 'master' into harmony-v2.8.13
2017-03-18 02:52:45 +08:00
Alex Lam S.L
0489d6de64
handle runtime errors in expect_stdout ( #1618 )
...
allow test to pass if both `input` and `expect` throws the same kind of error
2017-03-18 02:33:51 +08:00
Alex Lam S.L
fb092839c2
fix 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`.
2017-03-18 01:56:15 +08:00
Alex Zaworski
d26b7522d9
Allow 'name' as object literal shorthand property ( #1617 )
...
fixes #1613
2017-03-18 01:29:13 +08:00
Christian Maughan Tegnér
b7c112eefe
Add --in-source-map inline documentation ( #1611 )
2017-03-17 03:08:38 +08:00
Alex Lam S.L
b2b8a0d386
v2.8.13
2017-03-17 02:01:33 +08:00
Alex Lam S.L
ac40301813
fix 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 #1609
2017-03-17 00:26:48 +08:00
Alex Lam S.L
3563d8c09e
extend test/run-tests.js to optionally execute uglified output ( #1604 )
...
fixes #1588
2017-03-16 23:20:06 +08:00
Alex Lam S.L
5ae04b3545
make collapse_vars consistent with toplevel ( #1608 )
...
fixes #1605
2017-03-16 13:22:26 +08:00
Alex Lam S.L
a80b228d8b
fix hoist_vars on reduce_vars ( #1607 )
...
`hoist_vars` converts variable declarations into plain assignments, which then confuses `reduce_vars`
fixes #1606
2017-03-16 12:03:30 +08:00
Alex Lam S.L
cf4bf4ceb1
fix stack issues with AST_Node.evaluate() ( #1603 )
...
As patched in #1597 , `make_node_from_constant()` makes inconsistent and sometimes incorrect calls to `optimize()` and `transform()`.
Fix those issues properly by changing the semantics of `evaluate()` and `make_node_from_constant()`, with the side effect that `evaluate()` no longer eagerly converts constant to `AST_Node`.
2017-03-16 01:02:59 +08:00
Alex Lam S.L
8223b2e0db
fix 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.
2017-03-15 18:44:13 +08:00
Alex Lam S.L
2fd86d3cb0
Merge pull request #1601 from alexlamsl/harmony-v2.8.12
...
Merging from master for 2.8.12
2017-03-14 14:29:32 +08:00
Alex Lam S.L
381bd3836e
minor clean-ups ( #1600 )
...
- remove obsolete optimisation in `AST_Binary` after #1477
- improve `TreeWalker.has_directive()` readability and resilience against multiple visits
2017-03-14 13:19:05 +08:00
alexlamsl
8f7ab602e2
Merge branch 'master' into harmony-v2.8.12
2017-03-14 13:17:42 +08:00
Alex Lam S.L
1dd339f95e
fix unused crashes ( #1599 )
...
- `AST_DefaultAssign` on `keep_fargs`
- `AST_Expansion on` `keep_fargs`
- `AST_Destructuring` on top-level declarations without `toplevel`
2017-03-14 13:13:43 +08:00
Alex Lam S.L
919d5e3482
v2.8.12
2017-03-11 05:00:55 +08:00
Alex Lam S.L
e3a3db73ae
temporary fix for boolean bug ( #1597 )
...
fixes #1592
2017-03-11 04:59:55 +08:00
Alex Lam S.L
d9344f30b8
disallow 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 #1595
2017-03-11 03:34:55 +08:00
Alex Lam S.L
c7063c1f38
Merge pull request #1591 from alexlamsl/harmony-v2.8.11
...
Merging from master for 2.8.11
2017-03-10 16:38:23 +08:00
Alex Lam S.L
be80f7e706
support 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.
2017-03-10 11:27:30 +08:00
alexlamsl
f4a12b34f2
Merge branch 'master' into harmony-v2.8.11
2017-03-10 11:17:49 +08:00
Alex Lam S.L
cf45e2f79b
fixup 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.
2017-03-10 10:49:41 +08:00
Alex Lam S.L
8354758f30
v2.8.11
2017-03-10 04:17:21 +08:00
Alex Lam S.L
9e6b128374
fix catch variable reference in IE8 ( #1587 )
...
`AST_Scope.def_variable()` will overwrite `AST_Symbol.thedef`, so save a copy before calling.
fixes #1586
2017-03-10 03:15:21 +08:00
Michael Mior
93cdb194f4
Correctly raise a parse exception with a missing loop body ( #1585 )
2017-03-10 03:08:43 +08:00
Alex Lam S.L
b633706ce4
fix & 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 #1583
2017-03-09 19:11:05 +08:00
Alex Lam S.L
5d5c7934a5
Merge pull request #1582 from alexlamsl/harmony-v2.8.10
...
Merging from master for 2.8.10
2017-03-09 13:14:55 +08:00
alexlamsl
8f4b45f4f8
Merge branch 'master' into harmony-v2.8.10
2017-03-09 06:02:28 +08:00
Alex Lam S.L
e9920f7ca1
v2.8.10
2017-03-09 05:48:06 +08:00
Alex Lam S.L
7e465d4a01
scan RHS of dropped assignments ( #1581 )
...
- similar case as #1578 but against #1450 instead
- fix `this` binding in #1450 as well
closes #1580
2017-03-09 05:22:27 +08:00
Alex Lam S.L
aa80ee349d
remove checkboxes from Issues template
2017-03-08 19:19:54 +08:00
Alex Lam S.L
80e81765cf
explain how to make a proper bug report ( #1579 )
...
fixes #1574
2017-03-08 18:56:01 +08:00
Alex Lam S.L
711f88dcb4
scan 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 #1577
2017-03-08 18:37:32 +08:00
Alex Lam S.L
344d11d591
v2.8.9
2017-03-08 12:41:22 +08:00
Alex Lam S.L
c7cdcf06a6
fix 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 #1575
2017-03-08 12:39:57 +08:00
Alex Lam S.L
3ee55748d4
only run benchmark & jetstream on CI ( #1571 )
2017-03-08 06:00:51 +08:00
Alex Lam S.L
dedbeeff15
plan 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 #1568
2017-03-08 05:07:05 +08:00
Alex Lam S.L
bd6dee52ab
fix return from recursive IIFE ( #1570 )
...
`side-effects` did not account for IIFEs being able to reference itself thus making its return value potentially significant
2017-03-08 03:31:51 +08:00
Alex Lam S.L
952e2656eb
Merge pull request #1567 from alexlamsl/harmony-v2.8.8
...
Merging from master for 2.8.8
2017-03-07 23:56:23 +08:00
qinayi
240383a314
is_block_scope return true when current node is an instance of AST_IterationStatement. then the scope of let variable can be figured out accurately ( #1561 )
2017-03-07 23:50:58 +08:00
alexlamsl
250b782b1e
Merge branch 'master' into harmony-v2.8.8
2017-03-07 20:25:52 +08:00
Alex Lam S.L
144052ca49
v2.8.8
2017-03-07 19:58:41 +08:00
Alex Lam S.L
65c848cc6f
include benchmark.js in test suite ( #1564 )
...
- report file sizes and overall run time
- exit with non-zero code upon error
2017-03-07 19:25:12 +08:00
Alex Lam S.L
8a8a94a596
fix 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.
2017-03-07 18:38:27 +08:00
Alex Lam S.L
8153b7bd8a
transform function calls to IIFEs ( #1560 )
...
- expose function body to call sites for potential optimisations
- suppress substitution of variable used within `AST_Defun`
2017-03-07 15:37:52 +08:00
Alex Lam S.L
d787d70127
avoid substitution of global variables ( #1557 )
...
- unless `toplevel` is enabled
- global `const` works as before
2017-03-07 03:11:03 +08:00
kzc
3ac2421932
collapse_vars: do not replace a constant in loop condition or init ( #1562 )
2017-03-07 01:42:33 +08:00
Alex Lam S.L
a9fc9ddc33
suppress semicolons after do/while ( #1556 )
...
- unless both `beautify` & `screw-ie8` are enabled
- deprecate workaround for if-do-while-else
fixes #186
2017-03-06 17:31:35 +08:00
Alex Lam S.L
3c2b3aeddb
Merge pull request #1554 from alexlamsl/harmony-v2.8.6
...
Merging from master for 2.8.7
2017-03-05 23:03:30 +08:00
alexlamsl
aa605495f8
Merge branch 'master' into harmony-v2.8.6
2017-03-05 21:42:34 +08:00
kzc
33a26d456b
patch up #1543 for harmony
...
fixes #1537
2017-03-05 21:39:31 +08:00
Alex Lam S.L
a5d62a3fc6
v2.8.7
2017-03-05 17:17:08 +08:00
Alex Lam S.L
067e5a5762
fixup for #1553 ( #1555 )
...
- `++a` is the one that is foldable
- transform `a++` into `++a` for better optimisation
2017-03-05 17:15:37 +08:00
alexlamsl
49d9ac1c43
Merge branch 'master' into harmony-v2.8.6
2017-03-05 16:03:56 +08:00
Alex Lam S.L
33b5f31984
v2.8.6
2017-03-05 15:48:28 +08:00
Alex Lam S.L
35a849dc48
collapse assignment with adjacent subsequent usage ( #1553 )
...
- consolidate `cascade` optimisations
- support ++/-- postfixes
- remove redundant optimisation identified in #1460
fixes #368
2017-03-05 14:56:14 +08:00
Alex Lam S.L
b70591be1a
handle variable declaration within catch blocks ( #1546 )
...
accounts for IE8- scoping
2017-03-05 13:13:44 +08:00
Alex Lam S.L
b33e7f88e6
improve 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.
2017-03-05 13:09:27 +08:00
Alex Lam S.L
1f0333e9f1
stay 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 bug
2017-03-05 12:51:11 +08:00
Alex Lam S.L
eb98a7f2f3
fix handling of shebang and preamble ( #1545 )
...
fixes #1332
2017-03-05 12:16:02 +08:00
Alex Lam S.L
78d1bb92d4
fix a corner case in #1530 ( #1552 )
2017-03-05 12:12:59 +08:00
Alex Lam S.L
ea9ab9fb0e
resolve issue with outdated version of async ( #1549 )
...
fixes #746
2017-03-05 01:54:20 +08:00
kzc
ce54c9ccee
disallow collapse_vars constant replacement in for-in statements ( #1543 )
2017-03-04 02:39:54 +08:00
Alex Lam S.L
07accd2fbb
process code with implicit return statement ( #1522 )
...
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-03 18:13:07 +08:00
Alex Lam S.L
18059cc94f
compress numerical expressions ( #1513 )
...
safe operations
- `a === b` => `a == b`
- `a + -b` => `a - b`
- `-a + b` => `b - a`
- `a+ +b` => `+b+a`
associative operations
(bit-wise operations are safe, otherwise `unsafe_math`)
- `a + (b + c)` => `(a + b) + c`
- `(n + 2) + 3` => `5 + n`
- `(2 * n) * 3` => `6 * n`
- `(a | 1) | (2 | d)` => `(3 | a) | b`
fixes #412
2017-03-03 18:04:32 +08:00
Alex Lam S.L
c8e61448cb
Merge pull request #1541 from alexlamsl/harmony-v2.8.5
...
Merging from master for 2.8.5
2017-03-03 07:30:28 +08:00
alexlamsl
f704e9b65c
fix destructing crash in reduce_vars
...
fixes #1531
2017-03-03 07:23:46 +08:00
alexlamsl
0b77d861a8
Merge branch 'master' into harmony-v2.8.5
2017-03-03 07:17:52 +08:00
Alex Lam S.L
b5e0e8c203
facilitate fix for #1531 ( #1542 )
2017-03-03 07:12:24 +08:00
Alex Lam S.L
e5cb9275df
v2.8.5
2017-03-03 05:14:21 +08:00
Alex Lam S.L
17b81350d4
fix chained assignment with unused ( #1540 )
...
When #1450 optimises `a=b=42`, it stops after the first variable even if both are unused.
fixes #1539
2017-03-03 04:45:20 +08:00
kzc
4d63d4f5b3
collapse_vars should not replace constant in for-in init section ( #1538 )
...
fixes #1537
2017-03-03 03:51:15 +08:00
Alex Lam S.L
70d72ad806
properly cover all cases of for-in loop variables ( #1536 )
2017-03-03 02:39:57 +08:00
Alex Lam S.L
fe9227a41b
fix reference marking in for-in loops ( #1535 )
...
fixes #1533
2017-03-03 00:56:06 +08:00
Alex Lam S.L
b49e142a26
disable do{...}while(false) optimisation ( #1534 )
...
- fails to handle `break` in body
fixes #1532
2017-03-03 00:54:41 +08:00
kzc
ee3b39b909
optimize trivial IIFEs returning constants ( #1530 )
2017-03-02 15:11:40 +08:00
Alex Lam S.L
9699ffb1af
trim unused invocation parameters ( #1526 )
2017-03-02 11:33:59 +08:00
Alex Lam S.L
fdc9b9413b
minor improvement to string optimisation ( #1514 )
...
- "" + "a" => "a"
- "" + a + "b" => a + "b"
- "a" + "" => "a" (improving on #45 )
2017-03-02 11:31:39 +08:00
Alex Lam S.L
e27dab7e7c
Merge pull request #1528 from alexlamsl/harmony-v2.8.4
...
Merging from master for 2.8.4
2017-03-02 11:22:06 +08:00
alexlamsl
80f3ad3ce0
Merge branch 'master' into harmony-v2.8.4
2017-03-02 11:16:55 +08:00
Alex Lam S.L
40ceddb48a
v2.8.4
2017-03-02 00:24:49 +08:00
Alex Lam S.L
7aa69117e1
fix corner cases in reduce_vars ( #1524 )
...
Avoid variable substitution in the following cases:
- use of variable before declaration
- declaration within conditional code blocks
- declaration within loop body
fixes #1518
fixes #1525
2017-03-02 00:20:53 +08:00
Alex Lam S.L
bff7ad67bb
v2.8.3
2017-03-01 15:28:46 +08:00
Alex Lam S.L
c2334baa48
fix crash on missing props to string_template() ( #1523 )
...
Patched up `make_node()` without `orig`.
There may be other cases where `start` could be missing, so make it print "undefined" instead of crashing.
fixes #1518
2017-03-01 15:25:26 +08:00
Alex Lam S.L
22f7af205d
Merge pull request #1521 from alexlamsl/harmony-v2.8.2
...
Merging from master for 2.8.2
2017-03-01 11:13:32 +08:00
alexlamsl
8a7a4749c7
Merge branch 'master' into harmony-v2.8.2
2017-03-01 11:06:33 +08:00
Alex Lam S.L
fb2b6c7c6f
v2.8.2
2017-03-01 04:46:12 +08:00
Alex Lam S.L
f5cbe19b75
invert reduce_vars tracking flag ( #1519 )
...
Modules like webpack and grunt-contrib-uglify still uses `ast.transform(compressor)` before `Compressor.compress(ast)` was introduced.
Workaround this compatibility issue by deactivating `reduce_vars` in such case.
Also fix use case with omitted `options` when calling `Compressor()`.
fixes #1516
2017-03-01 04:12:10 +08:00
Alex Lam S.L
b34fa11a13
fix evaluate on object getter & setter ( #1515 )
2017-03-01 02:03:47 +08:00
Alex Lam S.L
320984c5f5
v2.8.1
2017-03-01 00:27:08 +08:00
Alex Lam S.L
4365a51237
temporarily disables reduce_vars ( #1517 )
...
... as we investigate #1516
2017-03-01 00:25:43 +08:00
Alex Lam S.L
514fc68f4f
Merge pull request #1509 from alexlamsl/harmony-2.8.0
...
Merging from master for 2.8.0
2017-02-28 23:14:25 +08:00
alexlamsl
478aaab469
fix parser test
...
not sure if `start.pos` is correct, but oh well
2017-02-28 14:08:31 +08:00
alexlamsl
ab217539e9
restore sourceMappingURL in test
2017-02-28 13:23:02 +08:00
alexlamsl
a942dc07c4
fix parser tests
...
update exception messages
2017-02-28 03:58:01 +08:00
kzc
a0eaff750d
fix parsing of arrow function with bind
...
fixes #1510
2017-02-28 02:47:33 +08:00
alexlamsl
57777b6cfa
Merge branch 'master' into harmony-2.8.0
2017-02-28 02:28:58 +08:00
Alex Lam S.L
858e6c78a4
warn & drop #__PURE__ iff IIFE is dropped ( #1511 )
...
- consolidate `side-effects` optimisations
- improve string `+` optimisation
- enhance literal & `conditionals` optimisations
2017-02-28 02:25:44 +08:00
kzc
8d205f7f39
fix parser handling of comments
2017-02-27 14:54:47 +08:00
alexlamsl
bc9bfd15a2
fix test
2017-02-27 11:39:48 +08:00
alexlamsl
9fc1c4b3b5
update test
...
top-level block-variables not within blocks are global variables
2017-02-27 06:23:12 +08:00
alexlamsl
c59bf5e8d8
fix SymbolDef.global
...
properly compute for top-level block-variables
2017-02-27 06:20:08 +08:00
alexlamsl
d2d3a6e065
fix double-descend()
...
for `AST_Export` in `AST_Toplevel.figure_out_scope()`
2017-02-27 06:06:09 +08:00
alexlamsl
7755733716
fix "Starting destructuring."
...
commit 32f76f7ff does not take into account `AST_SymbolFunarg` is also `AST_SymbolVar`, so don't need to call `AST_Scope.def_variable()` twice
2017-02-27 05:30:18 +08:00
alexlamsl
b3a987b0df
fix up drop_unused()
2017-02-27 05:11:01 +08:00
alexlamsl
88a338f29e
Merge branch 'master' into harmony-2.8.0
2017-02-27 04:37:48 +08:00
Alex Lam S.L
0b0296eb2a
v2.8.0
2017-02-27 03:47:54 +08:00
Alex Lam S.L
872270b149
improve error messages ( #1506 )
...
- better inheritance of `Error` sub-classes
- mark parse error against source in CLI
closes #235
closes #348
closes #524
closes #1356
closes #1405
2017-02-27 03:40:54 +08:00
kzc
b1c593a041
add harmony branch details in README ( #1507 )
2017-02-27 01:55:24 +08:00
Alex Lam S.L
13be50a4a9
faster tree transversal ( #1462 )
...
- convert `[].forEach()` to for-loops
2017-02-26 05:58:26 +08:00
Alex Lam S.L
16cd5d57a5
consolidate evaluate & reduce_vars ( #1505 )
...
- improve marking efficiency
- apply smarter `const` replacement to `var`
fixes #1501
2017-02-26 00:40:33 +08:00
Alex Lam S.L
834f9f3924
update docs for pure_funcs & drop_console ( #1503 )
...
closes #1362
closes #1399
2017-02-25 04:13:10 +08:00
Alex Lam S.L
cf0951f726
allow --in-source-map inline ( #1490 )
...
- limited to one input file (or `stdin`)
- only works with built-in parser
fixes #520
2017-02-25 04:11:21 +08:00
Ondřej Španěl
852f78491a
Avoid using exports when undefined ( #1471 )
...
Makes direct usage within web browser easier, even if officially unsupported.
2017-02-24 08:51:24 +08:00
Anthony Van de Gejuchte
07734b000a
Destructuring consistency fixes ( #1417 )
...
- Use AST_Destructuring for lhf assignment patterns
- Use AST_DefaultAssign for default assignments
- Add more checks for lhs expressions
- Add lots of testing
- Cleanup ast (e.g. remove default property)
- Fix #1402 based on a patch from @kzc
- Refine spread allowance in array destructring pattern
- Add destructuring AST tree checker
2017-02-24 08:49:19 +08:00
Anthony Van de Gejuchte
85c1cba760
Remove duplicated code ( #1456 )
...
[ES6] Remove duplicated code
2017-02-24 08:48:13 +08:00
Alex Lam S.L
229e42cdee
Merge pull request #1485 from alexlamsl/merge-2.8.0
...
2.8.0 staging
2017-02-24 07:33:57 +08:00
alexlamsl
4e49302916
enable collapse_vars & reduce_vars by default
...
- fix corner cases in `const` optimisation
- deprecate `/*@const*/`
fixes #1497
closes #1498
2017-02-24 01:46:57 +08:00
kzc
1e51586996
Support marking a call as pure
...
A function call or IIFE with an immediately preceding comment
containing `@__PURE__` or `#__PURE__` is deemed to be a
side-effect-free pure function call and can potentially be
dropped.
Depends on `side_effects` option.
`[#@]__PURE__` hint will be removed from comment when pure
call is dropped.
fixes #1261
closes #1448
2017-02-21 14:24:18 +08:00
Ondřej Španěl
d48a3080ac
Fix: AST_Accessor missing start / end tokens
...
fixes #1492
closes #1493
2017-02-21 13:32:16 +08:00
alexlamsl
26fbeece1c
fix pure_funcs & improve side_effects
...
- only drops side-effect-free arguments
- drop side-effect-free parts with discarded value from `AST_Seq` & `AST_SimpleStatement`
closes #1494
2017-02-21 13:31:59 +08:00
alexlamsl
8898b8a0fe
clean up max_line_len
...
- never exceed specified limit
- otherwise warning is shown
- enabled only for final output
closes #1496
2017-02-21 13:29:58 +08:00
alexlamsl
ec64acd2c8
introduce unsafe_proto
...
- `Array.prototype.slice` => `[].slice`
closes #1491
2017-02-21 13:29:58 +08:00
alexlamsl
ac0b61ed6e
remove extraneous spaces between ++/+/--/-
...
fixes #1377
closes #1488
2017-02-21 13:29:58 +08:00
Anthony Van de Gejuchte
c06a50f338
Add .gitattributes to checkout lf eol style
...
closes #1487
2017-02-21 13:29:58 +08:00
alexlamsl
09f9ae2de9
improve --beautify bracketize
...
reduce whitespaces from if-else statements
fixes #1482
closes #1483
2017-02-21 13:29:58 +08:00
alexlamsl
7e6331bb39
add benchmark & JetStream tests
...
- `test/benchmark.js` measures performance
- `test/jetstream.js` verifies correctness
- configurable mangle/compress/output options
closes #1479
2017-02-21 13:29:58 +08:00
alexlamsl
e275148998
enhance global_defs
...
- support arrays, objects & AST_Node
- support `"a.b":1` on both cli & API
- emit warning if variable is modified
- override top-level variables
fixes #1416
closes #1198
closes #1469
2017-02-21 13:29:58 +08:00
alexlamsl
974247c8c0
evaluate AST_SymbolRef as parameter
...
fix invalid boolean conversion now exposed in `make_node_from_constant()`
closes #1477
2017-02-21 13:29:58 +08:00
alexlamsl
a0f4fd390a
improve reduce_vars and fix a bug
...
- update modified flag between compress() passes
- support IIFE arguments
- fix corner case with multiple definitions
closes #1473
2017-02-21 13:29:58 +08:00
alexlamsl
b8b133d91a
improve keep_fargs & keep_fnames
...
- utilise in_use_ids instead of unreferenced()
- drop_unused now up-to-date for subsequent passes
closes #1476
2017-02-21 13:29:58 +08:00
alexlamsl
c525a2b190
fix duplicated test names
...
previously test cases with the same name would be skipped except for the last one
`test/run-test.js` will now report duplicated names as errors
closes #1461
2017-02-21 13:29:58 +08:00
kzc
6ffbecb72b
smarter const replacement taking name length into account
...
closes #1459
2017-02-21 13:29:58 +08:00
alexlamsl
f0ff6189be
clean up negate_iife
...
- remove extra tree scanning phase for `negate_iife`
- `negate_iife` now only deals with the narrowest form, i.e. IIFE sitting directly under `AST_SimpleStatement`
- `booleans`, `conditionals` etc. will now take care the rest via more accurate accounting
- `a(); void b();` => `a(); b();`
fixes #1288
closes #1451
2017-02-21 13:29:58 +08:00
alexlamsl
6b3c49e458
improve string concatenation
...
shuffle associative operations to minimise parentheses and aid other uglification efforts
closes #1454
2017-02-21 13:29:57 +08:00
alexlamsl
f584ca8d07
-c sequences=N suboptimal at N expression cutoff
...
N = 2:
a;
b;
c;
d;
was:
a, b;
c;
d;
now:
a, b;
c, d;
fixes #1455
closes #1457
2017-02-21 13:29:57 +08:00
alexlamsl
ae4db00991
tweak do-while loops
...
- `do{...}while(false)` => `{...}`
- clean up `AST_While` logic
closes #1452
2017-02-21 13:29:57 +08:00
alexlamsl
100307ab31
fixes & improvements to [].join()
...
fixes
- [a].join() => "" + a
- ["a", , "b"].join() => "a,,b"
- ["a", null, "b"].join() => "a,,b"
- ["a", undefined, "b"].join() => "a,,b"
improvements
- ["a", "b"].join(null) => "anullb"
- ["a", "b"].join(undefined) => "a,b"
- [a + "b", c].join("") => a + "b" + c
closes #1453
2017-02-21 13:29:57 +08:00
alexlamsl
148047fbbf
drop unused: toplevel, assign-only
...
- assign statement does not count towards variable usage by default
- only works with assignments on the same scope level as declaration
- can be disabled with `unused` set to "keep_assign"
- `toplevel` to drop unused top-level variables and/or functions
- `top_retain` to whitelist top-level exceptions
closes #1450
2017-02-21 13:29:57 +08:00
kzc
d11dca3cf9
fix stray else in compress with conditionals=false
...
closes #1449
2017-02-21 13:29:57 +08:00
alexlamsl
e5badb9541
enable typeof "undefined" for general use
...
move out of unsafe, guard corner case with screw_id8 instead
closes #1446
2017-02-18 19:01:42 +08:00
alexlamsl
fa668a28b4
fix corner case in keep_fnames
...
happens when inner function:
- just below top level
- not referenced
- `unused` is disabled
closes #1445
2017-02-18 19:00:54 +08:00
alexlamsl
686a496b1c
remove unused AST_Scope.nesting & AST_SymbolRef.frame
...
they are computed but never used
closes #1444
2017-02-18 18:59:40 +08:00
alexlamsl
11676f9d72
fix crash in unsafe replacement of undefined
...
remove extraneous call to AST_SymbolRef.reference()
closes #1443
2017-02-18 18:58:23 +08:00
Anthony Van de Gejuchte
dd31d12a91
Improve optimizing function() { if(c){return foo} bar();}
...
closes #1437
2017-02-18 18:56:18 +08:00
Mihai Bazon
eb55d8a9bb
Merge pull request #1481 from anatdagan/propsmangle_only_identifiers
...
verify that property names after mangle are legal
2017-02-12 10:59:43 +02:00
Anat Dagan
81f1df14d7
in mangle_names there is a check that the variable name is legal and that it is not a reserved word. This should apply to propsmangle as well.
2017-02-10 14:13:47 +02:00
Richard van Velzen
4bd31607f6
Merge branch 'master' into harmony
2017-01-26 13:02:22 +01:00
Alex Lam S.L
7f8d72d9d3
update test ( #1441 )
...
improved reduce_vars & binary operands produce more optimal results
2017-01-26 12:59:32 +01:00
Alex Lam S.L
1eaa211e09
fix mangling collision with keep_fnames ( #1431 )
...
* fix mangling collision with keep_fnames
fixes #1423
* pass mangle options to figure_out_scope()
bring command-line in line with minify()
2017-01-26 12:18:28 +01:00
Alex Lam S.L
0610c020b1
optimise binary operands with evaluate() ( #1427 )
...
- 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-26 12:16:50 +01:00
Alex Lam S.L
0d7d4918eb
augment evaluate to extract within objects ( #1425 )
...
- 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
2017-01-26 12:14:18 +01:00
Anthony Van de Gejuchte
4728bc73ad
Allow parsing regexp after arrow token ( #1439 )
2017-01-26 12:06:46 +01:00
alexlamsl
48284844a4
add missing LHS cases which global_defs should avoid
2017-01-19 21:06:28 +01:00
Anthony Van de Gejuchte
52ce9a333c
Fix compression with unused containing destructuring
2017-01-19 21:04:28 +01:00
kzc
abbeb266b5
[ES6] output parens for yield when parented by AST_Dot or AST_Sub ( #1419 )
2017-01-19 17:15:59 +01:00
kzc
ec2e5fa3a2
Have minify() and tests use figure_out_scope() as uglifyjs CLI does
...
Clarify docs, help and tests for --support-ie8 and screw_ie8=false
2017-01-19 17:14:33 +01:00
Anthony Van de Gejuchte
da17766ddd
Add preventive test involving non-ascii function identifiers
2017-01-19 17:13:33 +01:00
Anthony Van de Gejuchte
b11c5151bc
Fix regression with non-ascii function identifiers
...
Regression since 110a1ac885
2017-01-19 16:47:37 +01:00
Wiktor Kwapisiewicz
0913db8c84
Add note about name mangling when using --mangle-props=unquoted ( #1314 )
2017-01-19 16:47:10 +01:00
Richard van Velzen
962b1f3d40
Merge branch 'master' into harmony
2016-11-30 18:59:32 +01:00
kzc
5c7705fcad
remove npm-shrinkwrap.json to work around npm@4.0.2 bug ( #1384 )
2016-11-30 18:09:52 +01:00
Richard van Velzen
3ee46e91e8
Merge branch 'master' into harmony
2016-11-29 22:32:49 +01:00
Richard van Velzen
f6372483a0
v2.7.5
2016-11-29 22:29:59 +01:00
Richard van Velzen
ee26e7f11b
Merge branch 'master' into harmony
2016-11-29 20:50:27 +01:00
Anthony Van de Gejuchte
937f534392
Fix flag name in readme
2016-11-29 20:44:22 +01:00
Martijn Swaagman
98f330658f
Generate source map data from normalized files
...
If using `inSourceMap` this fix will ensure the copying of `sourcesContent` is based on potentially normalized `sources` values (https://github.com/mozilla/source-map/blob/master/lib/source-map-consumer.js#L304-L309 ).
For example `normalize` (https://github.com/mozilla/source-map/blob/master/lib/util.js#L80-L123 ) will rewrite `./dist/mySource.js` to `dist/mySource.js` in the target `_sources` of the `SourceMapConsumer`. As a result `orig_map.sourceContentFor(source, true);` would return `null` since the orginal `source` was no longer available in the consumer. By using the keys generating from the `SourceMapConsumer.constructor` consistency is ensured.
2016-11-29 20:42:56 +01:00
Anthony Van de Gejuchte
1b2c02c944
Fix nlb property for template strings tokens starting with nlb
...
Also add .gitattributes to checkout lf eol style
2016-11-29 20:36:00 +01:00
Anthony Van de Gejuchte
0aa526e72c
Do not allow arrow functions in the middle of an expression
2016-11-29 20:32:05 +01:00
1111hui
a7b3b0d3a5
docs: add doc for option.outFileName
2016-11-29 20:29:12 +01:00
1111hui
0a35acbbe7
feat: add option.outFileName for JS API, if absense, sourceMap.file field will deduced
2016-11-29 20:29:12 +01:00
Ashley (Scirra)
2a9989dd18
Add --mangle-props-debug and fix --mangle-props=unquoted collision
...
Patch by @AshleyScirra
Based on: PR #1316
Renamed the CLI debug option to --mangle-props-debug
Fixes : #1321 name collision in --mangle-props=unquoted
2016-11-29 20:25:39 +01:00
Anthony Van de Gejuchte
79b98a9fe8
Do not overwrite options.comments + cleanup
2016-11-29 20:24:08 +01:00
Anthony Van de Gejuchte
c2112d5886
Fix case where a lonely var is used as computed property
2016-11-29 20:19:01 +01:00
Anthony Van de Gejuchte
057de570e6
Pass mangle options to figure_out_scope before mangling in tests
2016-10-27 22:55:49 +02:00
Anthony Van de Gejuchte
5f6825f9ec
Introduce is_block_scope to AST_Node to determine block scope.
...
Will return false if AST_Node is instance of AST_Scope for now.
2016-10-24 21:28:32 +02:00
Anthony Van de Gejuchte
7e80a979a7
Remove AST_ObjectComputedKeyVal
2016-10-23 22:12:30 +02:00
Richard van Velzen
b7bb706150
Merge branch 'master' into harmony
2016-10-23 22:11:27 +02:00
Richard van Velzen
557b3e412f
v2.7.4
2016-10-23 21:46:22 +02:00
Anthony Van de Gejuchte
8d74f34373
Don't filter shebangs when using the 'some' comment filter
...
Also clarify documentation a bit more about using regexp as filter
2016-10-23 21:31:03 +02:00
Jann Horn
266ddd9639
fix uses_arguments handling (broken since 6605d15783)
...
Using the symbol declaration tracking of UglifyJS doesn't make sense here
anyway, `arguments` always comes from something in the current scope.
fixes #1299
2016-10-23 21:29:18 +02:00
pengzhenqing
e51c6ba380
Add an option for writing inline source map
2016-10-23 21:21:39 +02:00
Anthony Van de Gejuchte
32c2cc33bb
Improve binding patterns for arrow functions
2016-10-23 21:13:12 +02:00
Anthony Van de Gejuchte
947b8750e8
Make classes implicitly strict mode
2016-10-17 20:24:38 +02:00
Richard van Velzen
6389e52305
Remove console.log and add extra test case
2016-10-06 14:11:32 +02:00
Richard van Velzen
e05510f3bc
Add an option to wrap IIFEs in parenthesis
...
For #1307 .
2016-10-06 14:11:32 +02:00
kzc
fc9804b909
Fix (typeof side_effect()) in boolean context
...
Fixes #1289 with suggestion by @rvanvelzen
2016-10-06 13:50:11 +02:00
alexlamsl
4761d07e0b
Optimize unmodified variables
2016-10-01 11:36:11 +02:00
kzc
88f6ff38d1
[ES6] fix template string escaping of \${...}
2016-10-01 11:32:36 +02:00
kzc
4198095a9c
[ES6] fix parsing spread arguments that are expressions
2016-09-29 13:34:22 -04:00
Anthony Van de Gejuchte
0111497fc9
Make all comment options in cli available in js api
...
Also removing more code within "loop" while at it.
2016-09-06 17:54:45 +02:00
Anthony Van de Gejuchte
13ed445607
Improve support for binding pattern
...
Including improvements for parameters, variable assignment and
catch parameter.
2016-09-05 17:48:48 +02:00
Richard van Velzen
1db50c3b16
Don't parenthesize arrow functions in parameter lists
2016-09-02 09:35:31 +02:00
Mihai Bazon
7d8dea3b26
Merge pull request #1277 from kzc/fix-string-plus-opt
...
Account for side effects in `string + expr` optimization
2016-09-01 16:32:22 +03:00
kzc
25fc02743a
Account for side effects in string + expr optimization
2016-09-01 09:24:56 -04:00
Richard van Velzen
7f6b5d662b
Merge branch 'master' into harmony
2016-08-30 15:16:23 +02:00
kzc
0bd8053524
implement optimization: (x = 2 * x) ---> (x *= 2)
2016-08-30 08:43:02 -04:00
Anthony Van de Gejuchte
1c15d0db45
Fix quoting of properties
...
- Make AST_ConciseMethod child of AST_ObjectProperty.
- Fix some typos.
2016-08-26 15:06:24 +02:00
Richard van Velzen
67461666dc
Merge branch 'master' into harmony
2016-08-17 21:30:35 +02:00
Richard van Velzen
1a78bbcd23
v2.7.3
2016-08-17 20:34:27 +02:00
Richard van Velzen
45d81f881b
Merge branch 'master' into harmony
2016-08-17 20:21:38 +02:00
Richard van Velzen
8430123e9d
Fix negate_iife transform to return a correct tree for nested IIFEs
...
Fix for #1256 , partially reverts d854523783
2016-08-17 11:55:59 +02:00
Richard van Velzen
614db97cca
v2.7.2
2016-08-17 08:51:23 +02:00
Richard van Velzen
8c7d23dfb1
Merge branch 'master' into harmony
2016-08-17 08:50:31 +02:00
kzc
d854523783
Fix negate_iife regression #1254
2016-08-17 01:29:34 -04:00
Richard van Velzen
7fa0dbdeb9
Ignore default reserved properties in compress test
2016-08-15 09:54:15 +02:00
Richard van Velzen
c644c1292d
Merge branch 'master' into harmony
2016-08-15 09:09:04 +02:00
Richard van Velzen
781f26eda1
v2.7.1
2016-08-14 22:02:01 +02:00
Timothy Gu
37f4395cc0
Add missing { in README
...
Also fix a trivial style mistake.
2016-08-14 21:52:39 +02:00
kzc
de619ae5a6
Fix --mangle-props and --mangle-props=unquoted
...
Fixes : #1247
Fix --mangle-props and --name-cache inconsistency.
AST_Dot and AST_Sub properties are now mangled by --mangle-props
without regard to being used in an assignment statement.
Note: if --mangle-props is used then *all* javascript files used must
be uglified with the same mangle options.
Fix the ignore_quoted=true mangle option, also known as
`--mangle-props=unquoted`. If a given property is quoted anywhere
it will not be mangled in any quoted or non-quoted context.
2016-08-14 21:51:25 +02:00
kzc
86859f6d7e
Additional object literal property tests
2016-08-14 21:49:43 +02:00
kzc
dcdcfe4d39
Add input file glob support to minify()
2016-08-14 21:46:38 +02:00
kzc
72306b9885
Add simple file globbing to bin/uglifyjs for Windows
2016-08-14 21:46:38 +02:00
kzc
d224d71b8d
[ES6] Fix handling of semicolons in export parse.
2016-08-14 21:43:24 +02:00
Lucas Wiener
38756b1f26
Moved test input files to test/input.
2016-08-14 21:40:14 +02:00
Lucas Wiener
85a09fc3b6
Added test for #1236
2016-08-14 21:40:14 +02:00
Lucas Wiener
307b88d6cc
Fixed sourceMapIncludeSources and inSourceMap = string combination of the UglifyJS.minify function.
2016-08-14 21:40:14 +02:00
kzc
fb049d3a81
Fix unneeded parens around unary args in new expression.
2016-08-14 21:38:38 +02:00
Anthony Van de Gejuchte
27d3669800
Don't allow escaped surrogated identifiers + introduce ascii_identifiers
...
Don't use 2 characters for surrogates in identifiers because there is
support for the \u{} syntax when escaped identifiers were introduced.
Also catch eof errors while reading identifier names
Introduce ascii_identifiers:
By setting ascii_identifiers to undefined (default value),
ascii_identifiers will print identifiers using the same setting as
ascii_only within the limits of the ecmascript 6 grammar.
ascii_identifiers accept true and false, allowing identifiers to be
printed under different settings than strings with the ascii_only setting.
2016-08-14 21:36:06 +02:00
kzc
67cca43358
Test reparsing test/compress/*.js output
2016-08-14 21:27:23 +02:00
Anthony Van de Gejuchte
110a1ac885
Make distinction between * method and * operator
...
Also add quotes to properties when necessary,
this might be the case if the name isn't a valid
identifier
2016-07-29 21:31:08 +02:00
Anthony Van de Gejuchte
3f8fc3a316
Fix computed getters + cleanup AST
2016-07-21 18:21:46 +02:00
Anthony Van de Gejuchte
88384cf351
Add more globals, whereof most defined after es5.1
...
Also do not pollute env with mocks replacing standard globals
2016-07-21 16:52:04 +02:00
Anthony Van de Gejuchte
72a9d799b6
Various property fixes
...
* Implement getter/setter with computed value
* Fix parsing getter/setter after static or generator token
* Allow storing expressions for computed expression in AST_SymbolMethod
* Allow get and set in shorthand properties in object literals
Fixes #1094 , #1146 and #1221
2016-07-21 16:50:32 +02:00
Anthony Van de Gejuchte
642273c290
Legacy octal integer strict mode fixes
2016-07-21 14:42:16 +02:00
Anthony Van de Gejuchte
766fafda8b
Don't remove empty generators passed as parameter
2016-07-19 18:13:07 +02:00
Richard van Velzen
e8b23c7798
Build with AppVeyor on windows
2016-07-17 20:00:41 +02:00
kzc
842ac27efb
[ES6] Get compress and global_defs working for AST_Class
2016-07-17 19:56:02 +02:00
homuler
9edbe93df5
Fix the document of keep_fnames option
2016-07-17 19:50:48 +02:00
Yotam Spenser
af37ecafe1
Source map URL override from programmatic API
2016-07-17 19:39:08 +02:00
Lauri Pokka
41a9329409
lib/sourcemap.js: Copy sourceContent from old souce-map to the new source-map. Should fix #882
2016-07-17 19:36:15 +02:00
Anthony Van de Gejuchte
0af42d1831
Template fixes
...
* Fixes #1147 : template strings not obeying -b ascii_only true
* Allow evaluation of template expressions by adding optimizers and
walkers
* Make sure tagged templates are never changed
* Remove template tokenizer in parser, add template tokenizer in
tokenizer. It is using a brace counter to track brace position of
templates
* Add tokens `template_head` and `template_substitution` but parsing
tokens stays mostly the same
* Do not output strings anymore in AST_TemplateString, instead use
AST_TemplateSegment
* Fix parsing tagged templates, allowing multiple templates behind
as spec allows this
These changes don't influence tagged templates because raw content
may influence code execution, however they are safe to do in normal
templates:
* Allow basic string concatenation of templates where possible
* Allow custom character escape style similar to strings, except in
tagged templates
Note that expressions are still compressed in tagged templates.
Optional things that may be improved later:
* Custom quote style for templates if it doesn't have expressions.
Making it obey the quote_style option if this is the case.
2016-07-17 00:36:42 +02:00
Anthony Van de Gejuchte
7eb52d2837
Keep const in own scope while compressing
...
- Fixes #1205
- Fix provided by @kzc
2016-07-15 13:20:52 +02:00
kzc
eb63fece2f
Fix mangle with option keep_fnames=true for Safari.
...
Fixes : #1202
2016-07-15 13:18:14 +02:00
Anthony Van de Gejuchte
2d8af8947e
Fix error style for regex errors
2016-07-15 13:14:30 +02:00
Anthony Van de Gejuchte
ff7f6139ba
Improve multi-line comment parsing
...
* Make sure comments are skipped correctly with surrogates
* Fix regression in multiline comments with nlb
2016-07-12 00:08:35 +02:00
Anthony Van de Gejuchte
2650182f47
Backport mocha with test from harmony
2016-07-04 00:51:09 +02:00
Richard van Velzen
572b97b0bb
v2.7.0
2016-07-03 21:46:14 +02:00
Richard van Velzen
0db7caf13b
Merge branch 'master' into harmony
2016-07-03 21:39:00 +02:00
Anthony Van de Gejuchte
d9bc6f303c
Fix output arrow function with 1 param with default value
...
Fixes #1090
2016-07-03 21:37:53 +02:00
Anthony Van de Gejuchte
6fd9b338dd
Merge branch 'master' into harmony
2016-07-03 21:35:00 +02:00
Anthony Van de Gejuchte
698705a820
Don't convert all strings to directives from moz-ast
2016-07-03 12:36:57 +02:00
Anthony Van de Gejuchte
d8d4e71b9e
Fix uses_with/uses_eval/directives state in block scope
2016-07-01 15:43:17 +02:00
Richard van Velzen
debc525fa1
Introduce a test that tests the --self build
2016-07-01 09:46:05 +02:00
kzc
5576e2737a
Document that the smallest sequences optimization length is 2
...
and a sequences value of 1 is considered to be `true` - which
will be set to the default value of 200.
2016-07-01 09:41:31 +02:00
kzc
b40d5de69c
Change the default sequences limit to 200 to speed up compress.
...
Has little or no impact on minification size in the majority of
cases but can speed up rollup builds significantly.
This sequences change also has the beneficial side effect of avoiding
"stack size exceeded" errors on very large input files.
The user is free to alter the sequences limit if they are so inclined.
The previous sequences limit was 2000. 20 is often sufficient.
2016-07-01 09:41:31 +02:00
kzc
b7ef7840f3
Allow sequences maximum length to be user configurable.
2016-07-01 09:41:31 +02:00
Anthony Van de Gejuchte
fb2f8d1a51
Add reserved words to list unescapable keywords
...
Additionals:
* Update list reserved keywords
2016-06-30 22:47:44 +02:00
Anthony Van de Gejuchte
54a783ba84
Add ecma5 flag for codegen
2016-06-30 22:47:44 +02:00
Anthony Van de Gejuchte
63c432f4fa
Extend unicode support
...
* Support \u{xxxx} syntax
* Add support for surrogate pairs
* Allow identifiers to have unicode escape sequence
2016-06-30 22:47:44 +02:00
Geraint
85924bb32e
Allow input files to be map (url->filename)
2016-06-30 22:23:59 +02:00
Anthony Van de Gejuchte
a97690fc72
Various LineTerminator changes
...
* Escaped newlines should also produce SyntaxError
* Fix multiline comment parsing and add tests
* Adapt makePredicate to handle \u2028 and \u2029
* Move up nlb check in regex so it's checked before any escape handling
* Change error messages to conform ecma standard
* Find_eol not recornizing \u2028 and \u2029 as line terminator
* Remove \u180e as it is removed in unicode 6.3.0 from the category zs
2016-06-30 22:12:50 +02:00
kzc
02c638209e
Enable --screw-ie8 by default.
...
catch identifier is mangled correctly for ES5 standards-compliant JS engines by default.
Unconditionally use the ie8 if/do-while workaround whether or not --screw-ie8 is enabled.
To support non-standard ie8 javascript use: uglifyjs --support-ie8
2016-06-30 21:49:48 +02:00
iliashk
030611b729
Add Node API documentation for mangling options
2016-06-30 21:45:25 +02:00
kzc
335b72df03
Fix spidermonkey AST (ESTree) export and import, Array holes
...
Fixes : #1156 #1161
Also add test to exercise Uglify after spidermonkey export/import of itself.
2016-06-30 21:44:12 +02:00
Anthony Van de Gejuchte
3a7d53f3cf
Move OctalEscapeSequence to read_escape_char
...
This should simplify and improve implementation, make it easier to
implement template strings, and keep master a bit more in sync with
harmony.
Previous implementation wasn't broken, though the loop gave me the
impression it could read infinite numbers and annoyed me a bit. It was
also slightly unnecessary because the lookup involved only 3 characters.
2016-06-30 21:42:15 +02:00
Anthony Van de Gejuchte
07785d0003
Throw error if new.target is like new.foo
2016-06-25 19:32:53 +02:00
Richard van Velzen
9676167aac
v2.6.4
2016-06-22 12:24:31 +02:00
Anthony Van de Gejuchte
6eaeb19a4a
Add exponentiation operator
2016-06-22 12:23:37 +02:00
Mihai Bazon
1840a0b282
Merge pull request #1155 from kzc/issue_1154
...
Fix conditional expressions of form (x ? -1 : -1)
2016-06-21 23:14:05 +03:00
kzc
ace8aaa0f4
Fix conditional expressions of form (x ? -1 : -1)
...
Fixes #1154 , #1153
2016-06-21 14:52:13 -04:00
kzc
0c003c92a8
Don't replace undefined, NaN and Infinity within with scope
2016-06-21 10:53:29 +02:00
Anthony Van de Gejuchte
2246c79318
Merge branch 'master' into fix-harmony
2016-06-20 19:21:25 +02:00
Anthony Van de Gejuchte
85fbf86d7b
Keep master in sync with harmony
...
* Do not mangle when no mangle is required
* Improve use_asm reset while printing code
2016-06-20 18:42:17 +02:00
Anthony Van de Gejuchte
dda58244b6
Fixes to prevent failing tests after merging master
...
* Add missing quote properties to AST_ObjectKeyVal
* Avoid test results being interpret as directives
2016-06-20 15:02:09 +02:00
Richard van Velzen
aa82027a17
Don't assume DEBUG is defined when exporting --self
...
Potential fix for #1148
2016-06-20 08:40:45 +02:00
Richard van Velzen
55c592dd43
v2.6.3
2016-06-19 21:56:06 +02:00
Asia
fc1abd1c11
Document the except option to mangle
...
Added documentation for the `except` option to the `mangle` option in the API reference.
2016-06-19 21:17:31 +02:00
Shrey Banga
e645ba84cf
Respect quote style in object literals
...
The option added in fbbaa42ee5 wasn't
being respected inside object literals, so quoted property names would
still be stripped out with this option.
This is mostly a corner-case, but useful when the output is passed to
something like the Closure compiler, where quoted property names can be
used to prevent mangling.
2016-06-19 21:13:31 +02:00
Anthony Van de Gejuchte
6c99816855
Normalize error messages
2016-06-19 21:08:34 +02:00
Anthony Van de Gejuchte
ca04508cd1
Restrict yield outside generators in strict mode
...
* Move some yield/generic tests from compress/harmony.js to
compress/yield.js
* Adjust error messages to conform ecmascript standards
2016-06-19 21:03:36 +02:00
Anthony Van de Gejuchte
2149bfb707
Don't mix strings with directives in output
...
* Don't interpret strings with escaped content as directive
* Don't interpret strings after empty statement as directive
* Adapt output to prevent strings being represent as directive
* Introduce UGLIFY_DEBUG to allow internal testing like EXPECT_DIRECTIVE
2016-06-19 20:59:17 +02:00
Anthony Van de Gejuchte
6b03b800b3
Only last parameter between parentheses can have spread
2016-06-19 20:51:29 +02:00
Anthony Van de Gejuchte
f9cab7ad61
Allow expand in array literals
2016-06-19 20:49:18 +02:00
Anthony Van de Gejuchte
d7971ba0e4
Fix test262 failures related to <, <=, in and instanceof
...
Fixed-by: @kzc
2016-06-15 23:11:08 +02:00
Anthony Van de Gejuchte
5c4cfaa0a7
Re-add parens after new expression in beautify mode
2016-06-12 20:03:48 +02:00
Anthony Van de Gejuchte
bb9c9707aa
Don't allow with statements in strict mode
2016-06-12 19:08:16 +02:00
Richard van Velzen
0a3d780327
Merge branch 'master' into harmony
2016-06-12 17:29:42 +02:00
Anthony Van de Gejuchte
6c8e001fee
Stop dropping args in new expressions
2016-06-12 17:17:17 +02:00
Richard van Velzen
9c53c7ada7
Fix octal string strict mode tests
2016-06-12 14:35:43 +02:00
David Bau
f99b7b630d
Escape null characters as \0 unless followed by 0-7.
2016-06-12 14:32:32 +02:00
Anthony Van de Gejuchte
ea31da2455
Don't drop unused if scope uses with statement
...
Fix provided by @kzc
2016-06-12 14:30:28 +02:00
Anthony Van de Gejuchte
4d7746baf3
Throw errors in strict mode for octal strings
...
Adds a directive tracker for the parser/tokenizer to
allow parsing depending on directive context.
2016-06-12 14:27:08 +02:00
Anthony Van de Gejuchte
b0555a123a
Fix newline handling after yield
...
YieldExpressions can only be defined as:
* `yield`
* `yield` [no nlb] AssignmentExpression
* `yield` [no nlb] `*` AssignmentExpression
2016-06-11 21:41:16 +02:00
Richard van Velzen
fa29344781
Merge branch 'master' into harmony
2016-06-09 22:29:52 +02:00
Anthony Van de Gejuchte
dcfc514c38
Improve yield support and restrict usage of strict
...
- Partially reverting 91cdb93e57 and eaf3911c31 and reimplement
- Add generators support for objects and classes
- Only classes can have static methods so restrict use of it
Special thanks to @rvanvelzen and @kzc for reviewing this patch and
providing constructive feedback over and over again.
2016-06-09 22:22:15 +02:00
Anthony Van de Gejuchte
31d5825a86
Catch errors when compression test fails to parse
2016-06-09 21:12:15 +02:00
Anthony Van de Gejuchte
8287ef6781
Fix uglify attempting to rewrite invalid new expressions
2016-06-08 19:45:21 +02:00
ChALkeR
5cb5305cf3
Export tokenizer function
...
In uglify-js@1, both parser and tokenizer methods were exported
This allows to use tokenizer() separately, e.g. to wrap or override it, as
parse() method accepts not only text, but also tokenized functions.
2016-06-07 12:25:16 +03:00
Anthony Van de Gejuchte
00ad57e393
Do not allow newlines in regex
2016-06-05 17:02:19 +02:00
kzc
09d5707a8a
collapse_vars: Do not consider RegExp literals to be constants
...
Fixes #1100
2016-05-27 00:03:51 -04:00
Anthony Van de Gejuchte
8ad8d7b717
Add Symbol to builtins
2016-05-24 17:57:18 +02:00
Richard van Velzen
0357e5923f
Merge branch 'master' into harmony
2016-05-24 17:56:20 +02:00
kzc
1e390269d4
Optimize if_return for single if/return cases.
...
Fixes #1089
2016-05-24 17:54:08 +02:00
Richard van Velzen
bc49dfd27a
Completely allow evaluating -0
2016-05-24 17:50:29 +02:00
Richard van Velzen
27eedbc302
Never produce -0 when evaluating expressions (like -"")
...
Fix for #1085 . The major case was already there, but more expressions can result in -0.
2016-05-17 22:34:38 +02:00
Richard van Velzen
f63803e3e3
Merge branch 'master' into harmony
2016-05-16 09:53:13 +02:00
kzc
5f464b41e2
Simplify iife new fix
...
as suggested by @rvanvelzen.
Added a test for IIFEs in nested contexts.
2016-05-15 19:12:17 -04:00
Richard van Velzen
63be1f3a4d
Only allow var definitions to be moved into the for-init clause
...
Fixes #1079
2016-05-15 21:00:51 +02:00
kzc
bcc1318d4b
Do not apply negate_iife optimization to new expression
2016-05-09 03:19:28 -04:00
Richard van Velzen
e36e07fa77
Merge branch 'master' into harmony
2016-05-04 20:13:35 +02:00
kzc
a0e03c9df4
Retain comments before AST_Constants during mangle.
2016-05-04 20:11:45 +02:00
Anthony Van de Gejuchte
6641dcafb6
Fix regression causing tests to fail on windows
2016-05-04 20:05:51 +02:00
kzc
d2945744f2
Workaround for process.exit() tty output truncation.
...
Fixes #1055
2016-05-04 20:04:48 +02:00
Anthony Van de Gejuchte
35bc716625
Add node 6 to travis
2016-05-04 20:03:39 +02:00
kzc
f39fd3d583
Handle CR line endings in comments.
...
Fixes #1050
2016-05-04 20:02:29 +02:00
Mihai Bazon
65887d9a56
Merge pull request #1053 from rvanvelzen/hoist_if_return_funs
...
Hoist functions when reversing if (x) return; ... vs. if (!x) ...
2016-04-26 22:09:52 +03:00
Richard van Velzen
d1b4f61f93
Merge pull request #1059 from not-an-aardvark/harmony
...
Avoid syntax error in yield assignments
2016-04-26 11:51:13 +02:00
Richard van Velzen
e9224ab444
Add test cases for slightly more esoteric cases
2016-04-26 11:49:55 +02:00
Richard van Velzen
4d9a085687
Add test case for hoisting a single function
2016-04-26 11:43:03 +02:00
not-an-aardvark
5b893c8ec3
Avoid syntax error in yield assignments ( fixes #1054 )
2016-04-25 19:14:44 -04:00
Richard van Velzen
4fe630431c
Hoist functions when reversing if (x) return; ... vs. if (!x) ...
...
Fixes #1052
2016-04-23 23:48:33 +02:00
kzc
c55dd5ed74
Add passes compress option. Fix duplicate compress warnings.
2016-04-19 20:05:33 +02:00
Richard van Velzen
8571a08a93
Do not attempt evaluating class expressions
...
Broadly the same as function expressions - these actually are statements but
we're limited by the inheritance tree.
Fixes #1044
2016-04-19 20:01:26 +02:00
Richard van Velzen
68cc14f846
Fixups after merge
2016-04-18 15:51:32 +02:00
Richard van Velzen
f94497d1d6
Merge branch 'master' into harmony
2016-04-18 15:50:35 +02:00
kzc
e4fa4b109a
Parse comments without recursion to avoid RangeError.
...
Fixes #993
2016-04-16 02:02:47 -04:00
Richard van Velzen
4b4528ee05
Prevent endless recursion when evaluating self-referencing consts
...
Fix #1041
2016-04-13 15:03:31 +02:00
Richard van Velzen
eaf3911c31
Consider yield expressions as having side-effects
...
See #1043
2016-04-13 14:39:49 +02:00
Darío Javier Cravero
91cdb93e57
Implement harmony generators and yield
...
Uses #716 's implementation and adds tests.
Fixes #716 .
2016-04-13 14:22:08 +02:00
Richard van Velzen
187a0caf9d
Add base54.reset() to compress tests
...
Without this reset, char counts bleed to next tests. One test had a bad expect clause.
2016-04-12 20:08:09 +02:00
Mihai Bazon
b5a7a231f7
Actually limit sequence length.
...
Fix #1038
2016-04-12 14:17:24 +03:00
kzc
3907a5e3b2
Fix warnings for referenced non-hoisted functions.
...
Fixes #1034
Also added `expect_warnings` functionality to test framework.
2016-04-11 18:15:20 +02:00
Mihai Bazon
b434b75b36
Merge pull request #1032 from kzc/member
...
Simplify member(name, array) implementation.
2016-04-08 00:32:14 +03:00
kzc
c70d176f35
Simplify member(name, array) implementation.
2016-04-07 09:57:30 -04:00
Mihai Bazon
9317237372
Avoid using inherited hasOwnProperty
...
Fix #1031
2016-04-07 13:16:22 +03:00
kzc
98434258d0
Optimize ternaries with boolean consequent or alternative.
...
Fixes #511
2016-04-02 17:22:12 +02:00
kzc
45ddb9caeb
Speedup unused compress option for already minified code
...
Fixes : #321 #917 #1022
2016-03-28 17:58:50 -04:00
Sebastien Daniel
9bcf702a6e
added documentation on conditional compilation using API
2016-03-27 19:42:52 +02:00
Fábio Santos
634f231b78
First class block scope
...
- Make let, const, and class symbols be declared in a block scope.
- Piggy back on existing catch symbol implementation to get block-aware mangling working
- Make sure unused block-scoped declarations can be dropped
- Don't eliminate a block if it has a block-scoped declaration
- Remove silly empty anonymous blocks left over from drop_unused
- AST_Toplevel now gets to call drop_unused too, since block-scoped variables aren't global!
- Don't consider block declarations global
2016-03-27 19:40:20 +02:00
Fábio Santos
6702cae918
fix #1021
2016-03-27 12:21:39 +01:00
Mihai Bazon
f68de86a17
Merge pull request #1011 from kzc/dont-produce-let-in-mangle
...
Do not produce `let` as a variable name in mangle.
2016-03-24 18:16:26 +02:00
Mihai Bazon
c3c7587796
Merge pull request #1019 from kzc/escape-ascii-only
...
Escape all ASCII control characters within strings for ascii_only
2016-03-24 18:08:57 +02:00
kzc
07bb7262d0
Escape all ASCII control characters within strings when using ascii_only.
...
Fixes #1017 .
Tab characters within strings are now output as `\t` in all output modes.
2016-03-24 11:51:54 -04:00
kzc
21befe583f
Attempt to increase timeout for mocha let test.
2016-03-15 11:44:09 -04:00
kzc
a9d4a6291b
Do not produce let as a variable name in mangle.
...
Would previously occur in large generated functions with 21,000+ variables.
Fixes #986 .
2016-03-15 11:20:32 -04:00
Fábio Santos
6d2f77c180
fix #1003 by removing AST_ObjectSymbol and using AST_ObjectKeyVal for the same effect
2016-03-14 13:42:50 +01:00
Fábio Santos
accca2445f
fix crash: Import statements don't abort
2016-03-14 12:54:05 +01:00
Fábio Santos
0bc4f6edb4
Don't mangle exported symbols
2016-03-14 12:54:05 +01:00
Fábio Santos
ce84a706a3
Implement the export statement
2016-03-14 12:54:05 +01:00
Fábio Santos
86b5248837
Mangling externally imported names by using aliasing
2016-03-14 12:54:05 +01:00
Fábio Santos
59e1601fb8
importing names in the modules, not just default imports
2016-03-14 12:54:05 +01:00
Fábio Santos
d35a9e7839
Importing names from places
2016-03-14 12:54:05 +01:00
Fábio Santos
0465bd270d
Starting out the import statement
2016-03-14 12:54:05 +01:00
philippsimon
ee6c9fabb7
Fix: Uglified Number.prototype functions on big numbers
2016-03-14 12:41:06 +01:00
viclm
6780d0906c
Fix eager parsing of arrow functions for non-punc tokens
2016-03-10 22:18:48 +01:00
kzc
102d1b9137
#877 Ignore mangle sort option
2016-02-27 15:33:10 -05:00
Mihai Bazon
294861ba96
v2.6.2
2016-02-22 21:39:14 +02:00
kzc
11b0efdf84
boolean_expression ? true : false --> boolean_expression
2016-02-22 17:59:36 +01:00
kzc
5486b68850
Take operator || precendence into account for AST_If optimization.
...
Fixes #979 .
2016-02-21 12:05:02 -05:00
Richard van Velzen
bdd8e34f63
Allow --no-* options to disable their respective parameter
...
Fixes #974 and #972
2016-02-17 20:04:45 +01:00
alexlamsl
6547437725
preserve ThisBinding for side_effects
2016-02-17 19:34:01 +01:00
Richard van Velzen
9662228f6a
Don't compress (0, eval)() to eval()
2016-02-16 19:00:48 +01:00
alexlamsl
31a9b05c96
Preserve ThisBinding in conditionals & collapse_vars
...
Fixes #973
2016-02-16 18:47:49 +01:00
Richard van Velzen
63b01fe8f9
Merge pull request #948 from kzc/collapse_vars_doc
...
collapse_vars: document the compress option in README
2016-02-11 22:13:30 +01:00
sergeyv
7a4ed9d200
Revert "using the original sourcemap as the base"
...
This reverts commit ad18689d92 .
Reason for revert: introduce issue #882
Currently, generated sourcemap contains copy of all existing mappings and adds new mappings from uglified code to original one.
However, previous mapping are no longer valid and shouldn't be added.
2016-02-10 10:19:39 +01:00
Darío Javier Cravero
0b303379c0
fix: don't fail if definition is undefined
...
Running `uglifyjs --verbose --compress --mangle --screw-ie8 class.js`
with
`class.js`:
```
class Foo {
bar() {
}
}
```
Fails with:
```
undefined:4041
return this.definition().unmangleable(options);
TypeError: Cannot read property 'unmangleable' of undefined
...
```
2016-02-10 10:17:32 +01:00
Richard van Velzen
d5c651a5e5
Allow cli options to be specified in separate definitions
...
Fix for #963 . This allows stuff like `--define a=1 --define b=1` besides only `--define a=1,b=1`
2016-02-10 10:14:46 +01:00
Fábio Santos
d7ec2ecc12
Fix #931 : Create arrow functions in maybe_assign so that they can be used in assignments
2016-02-09 00:02:23 +00:00
Martii
cdba43cfa4
Create and map bare-returns into new parse property name
2016-02-08 10:45:42 +01:00
Boris Letocha
a123e232b9
Fixes #951 missing export for SymbolDef
2016-01-31 21:41:38 +01:00
Mihai Bazon
601780acc1
Merge pull request #949 from kzc/collapse_vars_conditions
...
collapse_vars: fix if/else and ternary operator side effects
2016-01-29 18:05:39 +02:00
kzc
7c3fee9e31
collapse_vars: avoid replacement across AST_Case nodes to be on safe side even though no issues seen.
2016-01-29 10:35:07 -05:00
kzc
929de2b0de
collapse_vars: fix if/else and ternary operator side effects
2016-01-28 12:17:06 -05:00
kzc
12e6ad326c
collapse_vars: small change to README
2016-01-28 11:04:30 -05:00
kzc
00c8d1d241
collapse_vars: document option in README
2016-01-28 11:01:17 -05:00
kzc
af2472d85e
collapse_vars: fix bug in repeated var defs of same name
2016-01-28 16:48:50 +01:00
Bryan Rayner
3eb9101918
Add mangleProperties documentation to README
...
Add additional documentation to mangleProperties.
2016-01-27 14:24:32 -06:00
kzc
0a38a688f9
fix bug in collapse_vars for right side of "||" and "&&"
2016-01-27 14:18:46 -05:00
kzc
f4c2ea37bf
Collapse single use var definitions
...
Fix #721
2016-01-27 11:48:15 +02:00
Mihai Bazon
915f907186
Add start/end in the arguments definition
...
(keeps my https://github.com/mishoo/jsinfo.el working)
2016-01-27 11:36:03 +02:00
Jeremy Marzka
799509e145
Added a mangle properties option
2016-01-26 22:10:08 +01:00
Richard van Velzen
b5a7197ae5
Merge pull request #928 from STRML/constPragma
...
Mark vars with /** @const */ pragma as consts so they can be eliminated.
2016-01-20 19:04:36 +01:00
Samuel Reed
1b703349cf
Tighten up @const regex.
2016-01-20 11:35:45 -06:00
Samuel Reed
4a7179ff91
Simplify by skipping extra tree walk.
2016-01-20 11:03:41 -06:00
Samuel Reed
f97da4294a
Use TreeWalker for more accurate @const results and update tests
2016-01-20 10:54:00 -06:00
Samuel Reed
918c17bd88
Update README for /** @const */
2016-01-19 13:24:36 -06:00
Samuel Reed
8b71c6559b
Mark vars with /** @const */ pragma as consts so they can be eliminated.
...
Fixes older browser support for consts and allows more flexibility
in dead code removal.
2016-01-19 13:23:02 -06:00
Anthony Van de Gejuchte
26641f3fb2
Allow operator names as getters/setters
...
Fixes #919
Fix provided by @kzc
2016-01-19 19:28:51 +01:00
Anthony Van de Gejuchte
ebe118dc79
Add keywords to package.json
...
Should hopefully bump up on the results of the npm site when searching `uglify`
2016-01-19 19:26:55 +01:00
Richard van Velzen
2827fa8699
Merge branch 'harmony' of github.com:mishoo/UglifyJS2 into harmony
2016-01-19 19:22:35 +01:00
Richard van Velzen
c80ec625ec
Add test for bad template string parsing
2016-01-19 19:22:22 +01:00
Fugiman
5e78f20f1c
Remove duplicate error message
2016-01-19 19:22:22 +01:00
Fugiman
1f75232062
Fix template string parsing
2016-01-19 19:22:22 +01:00
Fábio Santos
028ff64e9a
Default values inside destructurings
2016-01-19 19:22:22 +01:00
Fábio Santos
7a8cffd631
Move the idea of a symbol having a default value up the class chain.
2016-01-19 19:22:22 +01:00
Fábio Santos
5b553aafe2
Destructuring parameters with defaults. function x({ foo, bar } = {}) { }
2016-01-19 19:22:22 +01:00
Fábio Santos
084437bc6d
Non-destructuring default parameters
2016-01-19 19:22:22 +01:00
Anthony Van de Gejuchte
70e5b6f15b
Add some tests for comment-filters through api
...
Also never bother comment options to filter comment5/shebang comments
as they have their custom filter.
2016-01-19 19:14:19 +01:00
Richard van Velzen
57e0fafd5c
Merge pull request #918 from avdg/fix-arguments-handling
...
Never mangle arguments and keep them in their scope
2016-01-18 18:35:48 +01:00
Anthony Van de Gejuchte
8439c8ba98
Make arguments test slightly more strict
2016-01-15 00:04:05 +01:00
Anthony Van de Gejuchte
5c4e470d43
Add scope test for arguments
2016-01-14 22:32:46 +01:00
Anthony Van de Gejuchte
6605d15783
Never mangle arguments and keep them in their scope
...
Fixes #892
Helped-by: kzc
2016-01-14 19:45:52 +01:00
Richard van Velzen
ac8db977b9
Merge pull request #905 from avdg/unit-tests
...
Add unit tests
2016-01-14 08:54:40 +01:00
Anthony Van de Gejuchte
88b77ddaa9
Add test case for line continuation
2016-01-13 00:34:56 +01:00
Richard van Velzen
1cd9a2df9a
Merge pull request #872 from fabiosantoscode/feature/harmony-defaults
...
Feature/harmony defaults
2016-01-05 21:39:23 +01:00
Mihai Bazon
fe4e9f9d97
Fix hoisting the var in ForIn
...
Close #913
2016-01-05 13:56:52 +02:00
Anthony Van de Gejuchte
8c6af09ae0
Add mocha tests
2015-12-27 22:38:20 +01:00
Anthony Van de Gejuchte
6f3e35bb3f
Fix ch that could contain other newline characters
2015-12-27 22:24:37 +01:00
Richard van Velzen
7f3dbb6df7
Merge branch 'master' into harmony
2015-12-26 17:59:38 +01:00
Anthony Van de Gejuchte
174404c0f3
Do not allow newlines in string literals
2015-12-26 15:08:37 +01:00
Richard van Velzen
60c4030a4d
Merge pull request #874 from kzc/fix-conditionals
...
#873 Fix `conditionals` optimizations with default compress options
2015-12-26 14:28:33 +01:00
Richard van Velzen
ac810dc07a
Merge pull request #896 from avdg/do-while-semicolon
...
Semicolon after do...while statement is optional
2015-12-26 14:26:22 +01:00
Anthony Van de Gejuchte
0cabedc526
Disable loop optimization for parse-only tests
2015-12-18 19:20:56 +01:00
Anthony Van de Gejuchte
5cd26c005b
Add tests
2015-12-18 14:39:48 +01:00
Anthony Van de Gejuchte
bd99b00413
Semicolon after do...while statement is optional
2015-12-17 23:02:35 +01:00
Richard van Velzen
9e2f9f7910
Merge pull request #879 from ReadmeCritic/master
...
Update README URLs based on HTTP redirects
2015-12-07 19:04:56 +01:00
Richard van Velzen
e4d73d8b7c
Merge pull request #870 from fabiosantoscode/feature/harmony-class
...
Harmony: classes
2015-12-07 18:59:07 +01:00
ReadmeCritic
e87c77ed41
Update README URLs based on HTTP redirects
2015-11-27 08:46:55 -08:00
kzc
774bda13cd
#873 Fix conditionals optimizations with default compress options
2015-11-24 13:27:50 -05:00
Fábio Santos
8220dbbea0
Default values inside destructurings
2015-11-22 19:04:42 +00:00
Fábio Santos
59e999597e
Move the idea of a symbol having a default value up the class chain.
2015-11-22 19:00:54 +00:00
Fábio Santos
cbcb3ac44e
Destructuring parameters with defaults. function x({ foo, bar } = {}) { }
2015-11-22 18:02:51 +00:00
Fábio Santos
f07ab4666f
Non-destructuring default parameters
2015-11-22 17:40:05 +00:00
Fábio Santos
a800356ad0
Implement new.target
2015-11-21 14:48:23 +00:00
Fábio Santos
e076abdbf2
Mangle class names correctly
2015-11-21 13:59:18 +00:00
Fábio Santos
425613b0d2
mangle class names
2015-11-21 12:20:20 +00:00
Fábio Santos
69da8e53e0
Separate class expressions from class declarations and their symbols like defuns
2015-11-21 09:17:32 +00:00
Fábio Santos
bb6b3a773a
Make AST_Class inherit AST_Scope instead of AST_Object
...
This is one of those days I'd love to use multiple inheritance.
An AST_Class has lots of common with AST_Object, but unfortunately
`instanceof AST_Scope` is used very, very much, and a class has its name
inside its own special pocket scope. This compels me to make AST_Class
inherit Scope instead.
It looks like, although there is much in common with AST_Object,
`instanceof AST_Object` seldom are made, perhaps because it is less
often necessary to traverse an object than a scope.
2015-11-20 19:34:10 +00:00
Fábio Santos
364d20f8fb
Add mangle = { ...mangleopts } option to tests.
2015-11-20 18:11:17 +00:00
Mihai Bazon
15b5f70338
v2.6.1
2015-11-16 12:10:47 +02:00
Mihai Bazon
7f48d5b33c
Fix endless loop
...
Close #866
2015-11-16 12:08:24 +02:00
Mihai Bazon
b6968b6bd2
Limit max iterations for tighten_body
...
Ref #866
2015-11-16 12:08:24 +02:00
Richard van Velzen
08b80302eb
Merge pull request #864 from plievone/patch-1
...
Fix docs for keep_fargs
2015-11-14 12:04:49 +01:00
plievone
645626ebe8
Fix docs for keep_fargs
...
Compression options `keep_fargs` and `unsafe` were decoupled in v.2.5.0 (commit 5fd1245 ), so document actual keep_fargs default.
2015-11-14 11:38:00 +02:00
Mihai Bazon
d895c09c70
v2.6.0
2015-11-12 12:46:28 +02:00
Mihai Bazon
08623aa6a7
Fix output for "use asm" code from SpiderMonkey AST
...
(will only work properly if the SM tree contains "raw" properties for
Literal number nodes)
2015-11-12 12:18:25 +02:00
Mihai Bazon
c898a26117
Build label def/refs info when figuring out scope
...
Fix #862
2015-11-12 11:48:06 +02:00
Mihai Bazon
619adb0308
Replace util.error with console.log
2015-11-12 11:47:37 +02:00
Mihai Bazon
7691bebea5
Rework has_directive
...
It's now available during tree walking, i.e. walker.has_directive("use
asm"), rather than as part of the scope. It's thus no longer necessary
to call `figure_out_scope` before codegen. Added special bits in the
code generator to overcome the fact that it doesn't inherit from
TreeWalker.
Fix #861
2015-11-11 22:15:25 +02:00
Mihai Bazon
3c4346728e
Merge pull request #854 from kzc/moz-regexp-2
...
Have mozilla AST RegExpLiteral parser use regex.pattern and regex.flags
2015-11-10 10:12:30 +02:00
Mihai Bazon
18d37ac761
Fix parsing invalid input
...
i.e. `x = 1.xe` — because parseFloat("1.xe") returns 1, this parsed as
`x = 1`.
Ref #857
2015-11-09 13:15:20 +02:00
Richard van Velzen
63d35f8f6d
Prevent ReDoS by not using a regexp to verify floating point numbers
...
`parseFloat` will return `NaN` for invalid numbers anyway, which is the check used to throw the parse error.
Fixes #857
2015-11-09 11:28:27 +01:00
kzc
7dbe961b2d
simplify mozilla AST RegExpLiteral token parse and handle corner cases of regex.pattern better
2015-11-02 13:10:37 -05:00
kzc
94c4daaf9e
Have mozilla AST RegExpLiteral parser use regex.pattern and regex.flags rather than non-standard raw property.
2015-11-02 12:24:09 -05:00
kzc
37ee9de902
rename To_Moz_Literal to To_Moz_RegExp
2015-11-01 10:20:42 -05:00
kzc
83db98ad3b
Fixed RegExp literal in mozilla AST generation/output and added a --dump-spidermonkey-ast flag
2015-11-01 01:02:52 -04:00
kzc
bd0ae6569f
return undefined optimization no longer uses return_void_0 option
2015-10-29 08:19:12 +01:00
kzc
841a661071
more tests for return undefined optimization
2015-10-29 08:19:12 +01:00
kzc
7491d07666
optimize return undefined and return void 0
2015-10-29 08:19:12 +01:00
Richard van Velzen
335e349314
Allow specification beautify options in tests
...
Caught an error in #847 as well - `output` wasn't passed anywhere which led to an exception. `options` was available though.
2015-10-28 20:50:01 +01:00
Richard van Velzen
392ac4ff31
Merge branch 'master' into harmony
2015-10-28 20:38:07 +01:00
Richard van Velzen
2a88d07b3a
Stop building for io.js
2015-10-28 20:36:03 +01:00
Michael Ficarra
a887cde9f2
fixes #845 : \v escaping should be restricted to "screw_ie8" mode
2015-10-27 09:05:21 -07:00
Fábio Santos
9ffed2bea6
static properties
2015-10-27 12:24:37 +00:00
Fábio Santos
5f7cb6939c
Starting ES6 classes
2015-10-27 12:24:37 +00:00
Fábio Santos
64e7a00399
Accept keyword names as concise method names
2015-10-27 09:31:16 +01:00
Fábio Santos
c99eaae360
Make concise methods work with propmangle
2015-10-27 09:31:16 +01:00
Fábio Santos
34213ea2f8
Create a new symbol for methods' names
2015-10-27 09:31:16 +01:00
Fábio Santos
da8c428a07
Just making sure that concise methods are separated by commas. When classes come, they won't be necessary.
2015-10-27 09:31:16 +01:00
Fábio Santos
0d8dea9538
start concise methods
2015-10-27 09:31:16 +01:00
Richard van Velzen
2babe737e0
Merge pull request #844 from fabiosantoscode/harmony-allow-of
...
Harmony: allow use of `of` as a name.
2015-10-27 09:26:51 +01:00
Fábio Santos
2cce61c564
Allow 'of' to be a name.
2015-10-26 20:56:59 +00:00
Richard van Velzen
246ec416c0
Merge branch 'master' into harmony
2015-10-20 21:58:58 +02:00
Fábio Santos
b5623b19d4
Fix #836
2015-10-20 19:48:56 +01:00
Richard van Velzen
6be9c752d5
Merge branch 'master' into harmony
2015-10-20 20:12:10 +02:00
startswithaj
6b2861e086
Make_string was missing \v and wasnt reversing vertical tabs even though read_escaped_char coverts them
2015-10-15 17:42:16 +10:00
Damian Krzeminski
d5138f7467
add --pure-funcs option
...
it has the same effect as specifying `pure_funcs` in `--compressor`
option, however it's much easier to use
instead of:
--compressor 'pure_func=["Math.floor","debug","console.logTime"]'
it's now possible:
--compressor --pure-funcs Math.floor debug console.logTime
fixes #684
2015-10-13 21:24:14 -04:00
Damian Krzeminski
eac67b2816
upgrade yargs 3.5.4 -> 3.10.0
...
we need a version with better support for 'array' params
see: https://github.com/bcoe/yargs/pull/164
2015-10-13 21:01:36 -04:00
Mihai Bazon
ce10072824
Merge pull request #829 from kzc/html_comment_ops
...
Fix other operator output producing <!-- or -->
2015-10-13 09:59:40 +03:00
kzc
dff54a6552
Fix other operator output related to <!-- or -->
2015-10-13 01:17:10 -04:00
Fábio Santos
76ed083e47
Using single quotes
2015-10-12 21:39:19 +01:00
Fábio Santos
b31918bbf0
computed properties
2015-10-12 21:38:20 +01:00
Mihai Bazon
1940fb682c
Fix tests
2015-10-12 10:27:00 +03:00
Mihai Bazon
17eef5a3c2
Only encode <!-- and --> in strings when inline_script
2015-10-12 10:21:22 +03:00
kzc
9f1f21b810
Output -- > instead of --> in expressions. Escape <!-- and --> within string literals.
2015-10-12 10:19:17 +03:00
Richard van Velzen
b14496c742
Merge branch 'master' into harmony
...
Conflicts:
lib/compress.js
2015-10-12 08:54:44 +02:00
Mihai Bazon
a8e67d157e
v2.5.0
2015-10-11 18:24:38 +03:00
kzc
e870c7db45
have minify() call figure_out_scope() if needed to produce well formed "use asm" code
2015-10-07 16:31:57 -04:00
kzc
6500f8c52c
get rid of SCOPE_IS_NEEDED as it was always true
2015-10-07 15:33:24 -04:00
kzc
4d2f7d83af
Fix handling of "use asm" when no command line flags are passed to uglifyjs. SCOPE_IS_NEEDED is unconditionally true now. Refactored floating point literal parsing to be more in keeping with the AST class design.
2015-10-07 13:10:53 -04:00
SpainTrain
99945fcd04
Pin dependencies with npm shrinkwrap
...
* Use `npm run shrinkwrap` to create a shrinkwrap file with all dependencies pinned
* Update dependency `source-map` to latest (Closes #738 )
2015-10-07 13:52:49 +02:00
kzc
0d952ae43d
add asm.js test
2015-10-07 10:00:28 +02:00
kzc
593677d2ff
Add proper support for "use asm"; blocks. Disable -c optimization within "use asm"; sections and preserve floating point literals in their original form. Non-asm.js sections are optimized as before. Asm.js sections can still be mangled and minified of whitespace. No special command line flags are required.
2015-10-07 10:00:28 +02:00
Anthony Van de Gejuchte
c69294c449
Implement shebang support
2015-10-06 22:35:45 +02:00
Mihai Bazon
2a06c7758e
Merge pull request #808 from avdg/travis
...
Add node 4.x in Travis
2015-09-24 19:27:54 +03:00
Anthony Van de Gejuchte
7ee1ec91a2
Add node 4.x in Travis
2015-09-24 17:41:52 +02:00
Mihai Bazon
233fb62bd8
Disable node 0.8 in Travis
2015-09-24 18:26:23 +03:00
Mihai Bazon
6637c267a5
Fix mozilla-ast after module loading changes
...
Need to explicitly qualify stuff now, since it's not evaluated in some
global scope.
Ref #636
2015-09-24 18:13:21 +03:00
Mihai Bazon
99233c44cc
No longer use vm to load code.
...
Improves performance 2x on node > 0.10.
Ref #636
2015-09-24 17:58:51 +03:00
Mihai Bazon
33528002b4
Fix wrap_commonjs to include code first
...
(code could have directives, i.e. "use strict")
2015-09-24 17:58:51 +03:00
Kyle Mitchell
20542a37a8
use a valid SPDX license identifier
2015-09-14 19:44:49 +02:00
Ville Lautanala
5fd12451f9
Control keeping function arguments with a single option
2015-09-14 19:38:45 +02:00
Richard van Velzen
991fa99655
Merge branch 'master' into harmony
2015-09-13 14:17:45 +02:00
Fábio Santos
3d7f73114d
Add a test to make sure future generations don't hoist lets
2015-09-13 14:15:53 +02:00
Fábio Santos
dde9e293df
parse, output the let statement
2015-09-13 14:15:53 +02:00
Richard van Velzen
34685a6f55
Merge pull request #794 from fabiosantoscode/feature/harmony-template-strings-2
...
Harmony: template strings
2015-09-08 21:23:41 +02:00
Richard van Velzen
ba939ccd6c
Merge pull request #786 from istr/anonymous-source-map
...
Allow for anonymous map generation using string type check
2015-09-06 17:06:14 +02:00
Richard van Velzen
9812c826e0
Merge pull request #795 from fabiosantoscode/harmony-fix-cannot-destructure-crash
...
Fix crash, remove unused code and state variable.
2015-09-06 17:05:34 +02:00
Fábio Santos
2fac2bbfe4
Remove unused state variable in_parameters, and also remove unreachable code (try_an_object always returned an object!)
2015-09-05 23:01:29 +01:00
Fábio Santos
242c61be94
prefixed template strings, like "String.rawfoo\nbar".
2015-09-05 22:48:38 +01:00
Fábio Santos
e1cb1a0e3c
Parse and output ES6 template strings. Yikes!
2015-09-05 22:32:57 +01:00
Ingo Struck
3a5f354846
allow for anonymous map generation using string type check
2015-08-27 19:38:33 +02:00
Richard van Velzen
fcde6109b0
Fix bad parsing of new new x()() constructs
...
Fixes #739
2015-08-27 12:29:36 +03:00
Richard van Velzen
af22b9c657
Merge pull request #768 from fabiosantoscode/feature/harmony-destructuring-expression
...
Feature/harmony destructuring expression
2015-08-25 19:00:36 +02:00
Fábio Santos
adee5023c0
What about --mangle-props being on and --mangle being off?
2015-08-25 17:52:51 +01:00
Fábio Santos
7ee8f3512e
play nice with propmangle
2015-08-25 17:49:29 +01:00
Fábio Santos
dc5db9b6ca
Starting destructuring expressions
2015-08-25 17:49:27 +01:00
Richard van Velzen
e3bd223dac
Don't change sequences that influence lexical binding in calls
...
Fixes #782
2015-08-25 10:53:35 +02:00
Fábio Santos
079aaa0d48
Tolerate expansions in vardefs, too!
2015-08-21 12:04:26 +02:00
Fábio Santos
d4f17f29ae
Destructuring vardef in for..of and for..in
2015-08-21 12:04:26 +02:00
Fábio Santos
e99bc914ca
Do not mangle a name if it is in a destructuring vardef.
2015-08-21 12:04:26 +02:00
Fábio Santos
025d34bfa2
Add holes in destructuring defs, also make them nestable
2015-08-21 12:04:26 +02:00
Fábio Santos
c44c2d6c21
Parse and compress destructuring VarDefs
2015-08-21 12:04:26 +02:00
Fábio Santos
824ecfb8a2
A little refactoring. Add a new function to get all symbols in a destructuring.
2015-08-21 12:04:26 +02:00
Fábio Santos
ceebc466b9
prepare AST_Destructuring for the Ents
2015-08-21 12:04:26 +02:00
Richard van Velzen
35b31bdd4e
Merge branch 'master' into harmony
2015-08-21 11:58:35 +02:00
Richard van Velzen
c8b82583d2
Merge pull request #773 from fabiosantoscode/harmony-typeof-arrows
...
Fix evaluating the typeof an arrow function.
2015-08-21 11:51:42 +02:00
Richard van Velzen
9f9179ba1a
Merge pull request #774 from fabiosantoscode/feature/harmony-symbol
...
remove Symbol's argument when we're unsafe and Symbol is undeclared
2015-08-21 11:51:02 +02:00
Richard van Velzen
872231a0ca
Merge pull request #775 from fabiosantoscode/feature/binary-literals
...
Parse ES6 number literals, round 2
2015-08-21 11:50:39 +02:00
Fábio Santos
36420183fd
s/binary/number/g
2015-08-17 16:23:43 +01:00
Fábio Santos
a8f8aa518b
Add new-style octal literals and make the B and the O case insensitive.
2015-08-17 11:50:56 +01:00
Fábio Santos
4c12cccff9
remove Symbol's argument when we're unsafe and it's undeclared
2015-08-14 22:44:16 +01:00
Fábio Santos
dcce4e5c66
Fix evaluating the typeof an arrow function. Using evaluate on used to cause a crash.
2015-08-14 22:05:42 +01:00
Richard van Velzen
56c0b834d6
Merge pull request #771 from fabiosantoscode/feature/binary-literals
...
Parse binary number literals
2015-08-14 14:59:55 +02:00
Fábio Santos
6f864402d3
Parse binary number literals
2015-08-14 03:24:54 +01:00
Richard van Velzen
6c8db6eae1
Merge pull request #767 from vjeux/208
...
[Fix] --define replaces SymbolRefs in LHS of assignments
2015-08-10 20:29:37 +02:00
Christopher Chedeau
3ff0b9e0c9
[Fix] --define replaces SymbolRefs in LHS of assignments
...
See #208 for context
2015-08-10 11:22:36 -07:00
Richard van Velzen
464a942a95
Merge pull request #736 from AlbertoGP/master
...
fromString option, use index from argument array for filename instead of "?"
2015-08-07 14:12:41 +02:00
Richard van Velzen
d7a4a4a462
Merge pull request #729 from DrewML/keep_fnames_docs
...
Add keep_fnames compressor option to README.md
2015-08-07 14:11:50 +02:00
Richard van Velzen
8909e9e1cb
Merge pull request #763 from fabiosantoscode/feature/harmony-super
...
Feature/harmony super
2015-08-07 08:54:20 +02:00
Fábio Santos
e80ed38772
Super!
2015-08-07 02:44:53 +01:00
Richard van Velzen
759b3f7d6d
Fix mangling of property names which overwrite unmangleable properties
...
Fixes #747 .
2015-08-05 21:18:39 +02:00
Richard van Velzen
958b6c2e57
Merge pull request #753 from Surgo/master
...
Support wrap and exportAll options for node.js tools.
2015-08-05 21:17:42 +02:00
Fábio Santos
9863f0efa3
expand parameters
...
Conflicts:
test/compress/harmony.js
2015-08-05 21:15:23 +02:00
Richard van Velzen
e8664e63ef
Merge branch 'master' into harmony
2015-08-05 21:13:11 +02:00
Fábio Santos
ddd30eeaaa
Uglifyjs already supports super as an implicit global! Just adding a test to indicate that.
2015-08-05 11:49:37 +01:00
Fábio Santos
a68953c491
=> with destructuring arguments. Requires a lot of parser changes
2015-08-04 00:57:53 +01:00
Fábio Santos
fa5c4f2d03
Adding arrow functions
2015-08-04 00:57:53 +01:00
Mihai Bazon
ab15d676d7
Merge pull request #757 from rvanvelzen/semicolon-fix
...
Fix semicolon printing when restricting max line length
2015-07-30 17:25:13 +03:00
Richard van Velzen
66761d7ecf
Fix semicolon printing when restricting max line length
...
Fixes #755
2015-07-30 16:13:32 +02:00
Richard van Velzen
3afad58a93
Revert "Fix semicolon printing when restricting max line length"
...
This reverts commit 170e8b519e .
2015-07-30 15:57:18 +02:00
Richard van Velzen
170e8b519e
Fix semicolon printing when restricting max line length
...
Fixes #755
2015-07-29 17:57:18 +02:00
Richard van Velzen
f8684f418a
Replace util.puts in run-tests with console.log
...
See d2dda34b2a
2015-07-29 15:24:45 +02:00
XhmikosR
881bda7f59
Make node.js 0.8 the minimum supported version.
...
Node.js 0.4 and 0.6 are ancient; things don't work there.
Update Travis CI configuration accordingly.
Note, that the npm update in Travis is needed for 0.8 only at the moment.
2015-07-29 15:21:01 +02:00
Fábio Santos
9d7d365c2b
for...of
2015-07-29 15:10:54 +02:00
Chris Cowan
9854deb626
Re-use the caught exception's error message in the parse error call.
2015-07-29 15:06:52 +02:00
Chris Cowan
d6814050dd
Give a good error message if an invalid regular expression is found.
2015-07-29 15:05:59 +02:00
Fábio Santos
ad344c5be3
Add a test to verify that destructuring arguments work with #203 code
2015-07-29 14:54:45 +02:00
Fábio Santos
96b89e34a3
test that names used in destructurings don't get hoisted
2015-07-29 14:54:45 +02:00
Fábio Santos
4644becb9b
do not support destructuring arguments and ngInject
2015-07-29 14:54:45 +02:00
Fábio Santos
f7460166dd
remove trace statement
2015-07-29 14:54:45 +02:00
Fábio Santos
32f76f7ff8
Starting destructuring.
2015-07-29 14:54:45 +02:00
thorn0
252fc65558
Advanced way to specify if a function call might have side effects. #400
2015-07-29 14:36:42 +02:00
Kosei Kitahara
8108c7ffaf
Support wrap and exportAll options.
2015-07-28 21:36:22 +09:00
Mihai Bazon
ba9936a572
v2.4.24
2015-07-22 16:58:09 +03:00
Mihai Bazon
905b601178
Don't attempt to negate non-boolean AST_Binary
...
Fix #751
2015-07-22 16:55:55 +03:00
Mihai Bazon
63fb2d5a44
Merge pull request #735 from kzc/master
...
optimizations for && and || where left side is constant expression
2015-07-20 09:58:01 +03:00
Mihai Bazon
85a5fc0aeb
Don't drop parens in a * (b * c). Close #744
2015-06-30 10:10:29 +03:00
Alberto González Palomo
4fba3e0b80
fromString option, use index from argument array for filename instead of "?"
...
The index allows the caller to map things like parse errors back to the
code chunk where they appeared.
2015-06-15 18:03:06 +02:00
kzc
9d398d999c
spacing
2015-06-14 17:45:19 -04:00
kzc
f47b2b52a5
operator && and || optimization: add "else" before "if" as intended
2015-06-14 17:44:26 -04:00
kzc
fedb6191a1
optimizations for && and || where left side is constant expression
2015-06-11 23:22:38 -04:00
Mihai Bazon
5bf617ebde
Merge pull request #733 from jcxplorer/add-mangle-regex-option
...
Add --mangle-regex option
2015-06-09 16:33:21 +03:00
Joao Carlos
0b82e1cd5b
Change --mangle-regex to accept a full regex
2015-06-09 15:14:41 +03:00
Joao Carlos
9aef34a816
Show descriptive error when --mangle-regex is invalid
2015-06-09 14:31:49 +03:00
Joao Carlos
0ac6918a41
Add --mangle-regex option
2015-06-09 14:16:50 +03:00
Andrew Levine
65ee5af78c
Add keep_fnames compressor option to README.md
2015-06-02 15:32:10 -05:00
Mihai Bazon
c6fa291571
v2.4.23
2015-05-20 17:48:30 +03:00
Mihai Bazon
bce4307e9e
Treat \uFEFF as whitespace.
...
Fix #714
2015-05-20 16:17:46 +03:00
Mihai Bazon
96ad94ab41
v2.4.22
2015-05-18 13:58:25 +03:00
Mihai Bazon
a5b60217ce
Fix compressing conditionals
...
Only transform foo() ? EXP(x) : EXP(y) into EXP(foo() ? x : y) if EXP has no
side effects.
Fix #710
2015-05-18 13:56:04 +03:00
Mihai Bazon
44fd6694eb
fix again reserved props
2015-05-13 22:03:00 +03:00
Mihai Bazon
e48db3a8b6
Make reserved names take priority over the name cache
2015-05-07 15:01:16 +03:00
Mihai Bazon
e637bdaf4e
Only drop the BOM when it's the first character.
...
Close #704
2015-05-05 10:11:38 +03:00
Mihai Bazon
d558abbdb7
v2.4.21
2015-05-04 19:14:42 +03:00
Mihai Bazon
4aed0830e5
Fix blank lines in the output.
...
The issue was more obvious when max_line_len has a small value, rather than
the default 32K characters. A blank line showed up after most statements.
2015-05-04 17:55:42 +03:00
Mihai Bazon
d2dda34b2a
Remove deprecated calls to utils.print/utils.error
...
Close #542 , #641 , #647
2015-05-04 15:07:16 +03:00
Mihai Bazon
c3a10c135e
Avoid spurious brackets when dropping unused vars
...
Fix #702
2015-05-04 14:49:17 +03:00
Mihai Bazon
92e4340732
Fix parsing strings with literal DOS newlines
...
(should not set newline_before)
Fix #693
2015-04-23 12:08:19 +03:00
Mihai Bazon
7b22f2031f
If name_cache is specified, do rename cached properties
...
(even if --mangle-props is not there)
2015-04-22 17:34:49 +03:00
Mihai Bazon
3b14582d6b
Fix tests
2015-04-17 11:28:59 +03:00
Mihai Bazon
274e1b3dc7
Drop NaN -> 0/0 transformation.
...
Fix #687
2015-04-17 11:26:36 +03:00
Fábio Santos
de58b0289d
Added expect_exact for testing the OutputStream
...
This works almost exactly like `expect`, except that you pass a literal string
of which the result is compared with the generated output.
2015-04-14 20:26:47 +02:00
XhmikosR
efea52a4f4
Normalize package.json.
...
* Specify the files to install in package.json
* Add missing properties
* Follow `npm init`'s scheme
2015-04-14 20:17:03 +02:00
Jordan Harband
763bd36b60
Test on latest node and io.js
...
Per https://github.com/mishoo/UglifyJS2/commit/0262b4244c13b3ef148bf096874847aea84b93e5 - if you're going to stop testing on 0.8, you should be testing on 0.12.
Also allow failures on unstable nodes and "older than two latest" `io.js` versions, and enable "sudo: false" which makes tests run faster.
2015-04-14 20:06:09 +02:00
Mihai Bazon
0552dbd93c
v2.4.20
2015-04-13 18:59:21 +03:00
Mihai Bazon
18c63ff3d8
Fix compression of conditionals
...
Don't move the condition on the right side of an assignment when
the left side may have side effects.
Fix #677
2015-04-13 17:29:48 +03:00
Mihai Bazon
e04ef56243
Use the before visitor in mangle props
...
(works around a bug in our tree walker which, while cloning nodes, breaks
references between labeled statements and break/continue labels)
2015-04-10 11:33:29 +03:00
Mihai Bazon
5d60484553
More fixes for the breaking changes in yargs
...
Close #670
2015-04-05 13:20:22 +03:00
Mihai Bazon
3c846e6f7b
Merge pull request #669 from galvanix/documentation-inSourceMap
...
Document passing source maps directly to minify() using inSourceMap
2015-04-04 15:29:03 +03:00
David Caldwell
2850dc69fd
Document passing source maps directly to minify() using inSourceMap
2015-04-03 17:27:28 -07:00
Mihai Bazon
94205c3a37
v2.4.19
2015-03-29 14:02:37 +03:00
Mihai Bazon
2ada34b229
Merge pull request #660 from ntkme/fix-long-options
...
Fix long options
2015-03-29 14:01:21 +03:00
なつき
db396da734
Fix long options
2015-03-29 04:00:42 -07:00
Mihai Bazon
0262b4244c
Disable testing with Node 0.8
2015-03-29 13:19:07 +03:00
Mihai Bazon
73ca767d06
v2.4.18
2015-03-29 13:15:27 +03:00
Mihai Bazon
3ec11c781b
Update README
2015-03-29 13:13:40 +03:00
Mihai Bazon
a79ff060d0
Merge branch 'propmangle'
2015-03-29 12:50:43 +03:00
Mihai Bazon
43991f8d2f
Add tool to extract property names
2015-03-29 12:38:06 +03:00
Mihai Bazon
6b82069e1a
Merge in more DOM properties.
2015-03-24 13:59:57 +02:00
Mihai Bazon
276b9a31cd
Fix compressing ![foo()]; as a statement
...
need to check whether the literal has any side effects before replacing that
with `false`.
2015-03-23 23:27:00 +02:00
Mihai Bazon
5801fa39e9
[sequencesize] Actually even better:
...
do create the sequence even if the stat list is bigger than 2000 statements,
but limit the sequence itself to 2000 expressions.
Ref #414
2015-03-22 13:02:45 +02:00
Mihai Bazon
f0ab1b02e6
Avoid sequencesize for more than 2000 statements.
...
It hardly saves any bytes for a sequence so long, and it risks blowing the
stack with the recursive Seq functions.
Ref #414
2015-03-22 12:51:15 +02:00
Mihai Bazon
36c28e02fd
Add start/end nodes for NaN/Infinity transformations
2015-03-22 12:50:36 +02:00
Mihai Bazon
e1c3861832
Export readDefaultReservedFile
2015-03-22 11:04:28 +02:00
Mihai Bazon
ecfd881ac6
Keep unused function arguments by default
...
Discarding unused function arguments affects function.length, which can lead
to some hard to debug issues. This optimization is now done only in "unsafe
mode".
Fix #121
2015-03-20 10:28:51 +02:00
Mihai Bazon
81b7335267
Don't use Object.create
2015-03-19 12:54:43 +02:00
Mihai Bazon
bb010c2253
tools/props.html: output complete JSON
2015-03-19 10:10:01 +02:00
Mihai Bazon
03b6121194
Add --reserve-domprops along with a default exclusion list in tools/domprops.json
2015-03-18 12:10:21 +02:00
Mihai Bazon
3ef092332b
Support multiple --reserved-file args
2015-03-18 11:53:17 +02:00
Mihai Bazon
540c19792f
Bump yargs version (for .array arguments)
2015-03-18 11:51:09 +02:00
Mihai Bazon
80d1c8206b
Fix parsing for U+2028 / U+2029
...
(they should be treated as whitespace)
2015-03-18 10:11:37 +02:00
Mihai Bazon
d36faffeca
Fix parsing for U+2028 / U+2029
...
(they should be treated as whitespace)
2015-03-18 10:09:30 +02:00
Mihai Bazon
7c8c9b94bc
tools/props.html: use try/catch in a few more places
2015-03-17 14:31:22 +02:00
Mihai Bazon
f5eeed7665
Add tool to list DOM properties/methods
2015-03-17 11:46:04 +02:00
Mihai Bazon
80cfd063e2
Export readNameCache / writeNameCache
2015-03-17 10:05:49 +02:00
Mihai Bazon
aa45f6586e
rename --prop-cache to --name-cache
...
... and support storing there variable names as well, to help with multiple
invocations when mangling toplevel.
2015-03-16 13:16:30 +02:00
Mihai Bazon
0c80d21e01
Fix prop mangling
...
Even if not “defined”, do mangle if name exists in the cache.
2015-03-16 10:53:31 +02:00
Mihai Bazon
375c88245a
Fix --reserved-file
2015-03-14 11:36:58 +02:00
Mihai Bazon
ea3430102c
Add property name mangler
...
We only touch properties that are present in an object literal, or which are
assigned to. Example:
x = { foo: 1 };
x.bar = 2;
x["baz"] = 3;
x[cond ? "qwe" : "asd"] = 4;
console.log(x.stuff);
The names "foo", "bar", "baz", "qwe" and "asd" will be mangled, and the
resulting mangled names will be used for the same properties throughout the
code. The "stuff" will not be, since it's just referenced but never
assigned to.
This *will* break most of the code out there, but could work on carefully
written code: do not use eval, do not define methods or properties by
walking an array of names, etc. Also, a comprehensive list of exclusions
needs to be passed, to avoid mangling properties that are standard in
JavaScript, DOM, used in external libraries etc.
2015-03-14 11:22:28 +02:00
Mihai Bazon
9de7199b88
v2.4.17
2015-03-11 00:04:26 +02:00
Edward Casbon
ae07714927
Add filename to the JS_Parse_Error exception.
...
It would be nice to have access to the filename of the file that includes the code that causes a JavaScript error. This is especially handy if uglifying multiple files at once.
Only a small change is needed for this to happen as it's already available in the function that throws the error.
2015-02-11 23:21:22 +01:00
Rob Loach
0e41a3fad4
Add .npmignore
2015-02-11 23:19:21 +01:00
Richard van Velzen
61e850ceb5
Clean up unit test breakage
...
In 992b6b9fcc unit test broke (which I missed). This was due to undeclared variables not being side-effects free.
However, since they're really not side-effect free, just declare them in the test cases.
2015-02-11 21:27:21 +01:00
Richard van Velzen
992b6b9fcc
Fix invalid removal of left side in && and || compression
...
See #637 . This does not produce the optimal result, but it does prevent the removal of non-side-effect-free code.
2015-02-11 21:08:41 +01:00
Anthony Van de Gejuchte
7b71344051
Parse regexes properly
2015-02-11 18:29:15 +01:00
Richard van Velzen
605362f89d
Drop all console statements properly
...
Because the base reference can be an member expression as well, we have to dig a bit deeper to find the leftmost base reference.
Fixes #451
2015-01-31 13:24:44 +01:00
Mihai Bazon
fbbaa42ee5
Add option to preserve/enforce string quote style
...
`-q 0` (default) use single or double quotes such as to minimize the number of
bytes (prefers double quotes when both will do); this is the previous
behavior.
`-q 1` -- always use single quotes
`-q 2` -- always use double quotes
`-q 3` or just `-q` -- always use the original quotes.
Related codegen option: `quote_style`.
Close #495
Close #460
Some `yargs` guru please tell me why `uglifyjs --help` doesn't display the
help string for `-q` / `--quotes`, and why it doesn't output the expected
argument types anymore, like good old `optimist` did.
2015-01-27 22:26:27 +02:00
Anthony Van de Gejuchte
099992ecae
Keep single line comments after nlb, after nlb
...
Fixes #583
2015-01-26 12:11:52 +01:00
Richard van Velzen
d78ae20e64
Make empty source map values more reasonable in .minify()
...
`"null"` isn't a very usable value. `JSON.parse(null)` also gives `null`, which makes this fully backwards compatible.
Closes #616
2015-01-26 12:07:44 +01:00
Bryce Cronkite-Ratcliff
5c02d65ddb
fixes issue #621 SourceMap toString JSON format
...
The correct format of a sourcemap is acquired
from a mozilla source map generator by calling
toJSON on this object. This patch alters the
toString function on mozilla generators to print
the format that is to spec instead of the generator's
internal representation of itself.
2015-01-24 00:33:02 -08:00
Mihai Bazon
d36067cd35
Merge pull request #615 from avdg/unicode
...
Give parser more unicode support
2015-01-20 13:00:31 +02:00
Anthony Van de Gejuchte
f1b2134dd1
Add test
2015-01-20 00:31:44 +01:00
Anthony Van de Gejuchte
74cda80d3b
Add unicode digit parsing support
2015-01-20 00:17:24 +01:00
Anthony Van de Gejuchte
9a3a848cc8
Update unicode letter
2015-01-20 00:17:03 +01:00
Tal Ater
a1a4c2ada7
Optimize conditionals where the consequent and alternative are both booleans and not equivalent
2015-01-13 18:27:21 +01:00
Mihai Bazon
189dbf02b6
Merge pull request #612 from rvanvelzen/issue-611
...
Replace the correct node when replacing in `void` sequences
2015-01-12 18:18:55 +02:00
Richard van Velzen
42ecd42ac0
Replace the correct node when replacing in void sequences
...
Close #611 .
2015-01-12 17:09:34 +01:00
Mihai Bazon
a10f6a96d7
Merge pull request #482 from arty-name/inline-ng-inject
...
added @ngInject support for inline functions
2015-01-11 12:10:42 +02:00
Mihai Bazon
0d232a1422
Merge pull request #606 from rvanvelzen/document-double-dash
...
Document `--` for usage in CLI class
2015-01-07 23:17:08 +02:00
Richard van Velzen
285bffd2c6
Document -- for usage in CLI class
...
Close #518
2015-01-07 19:04:10 +01:00
Mihai Bazon
61c233a08e
Fix make_node_from_constant for Regexp-s
...
Close #588
2015-01-07 11:20:04 +02:00
Mihai Bazon
d2d716483a
aborts(AST_If) returns the if node
...
Previously it returned the abort node from the alternative branch. This is
not much use as it can be different from the one in the body
branch (i.e. return vs. throw) and can trick us into issues like #591 .
Fix #591
2015-01-06 14:01:35 +02:00
Ingvar Stepanyan
f16033aafd
Location fix for Mozilla AST start token.
2015-01-06 11:32:41 +01:00
Ingvar Stepanyan
ae5366a31d
Track ending lines/columns; fix end locations in Mozilla AST.
2015-01-06 11:32:41 +01:00
Mihai Bazon
6b23cbc852
AST_Do nodes: walk body before condition
2015-01-06 12:29:07 +02:00
Richard van Velzen
7f9bc9e863
Pass mangle options to figure_out_scope and compute_char_frequence
...
Fix #219 . Because the options were not set and `toplevel` is `false` by default, some toplevel names would sometimes not be mangled correctly.
2015-01-05 19:10:32 +01:00
Mihai Bazon
13219cebcb
Fix handling \r\n
...
Close #437
2015-01-05 12:14:42 +02:00
Mihai Bazon
93a6e5780e
Declare boolean type for --keep-fnames
2015-01-05 11:20:00 +02:00
Mihai Bazon
fe55e0d93d
Merge branch 'keep-function-expression-names' of https://github.com/rvanvelzen/UglifyJS2
2015-01-05 11:11:38 +02:00
Mihai Bazon
e1f0747e4c
Support keep_fnames in compressor, and --keep-fnames. #552
...
Passing `--keep-fnames` will enable it both for compressor/mangler, so that
function names will not be dropped (when unused) nor mangled.
2015-01-05 11:03:13 +02:00
Richard van Velzen
e37b67d013
Add an option to prevent function names from being mangled
...
See #552 . This is mostly useful for having the actual function names in traces.
2015-01-04 21:48:43 +01:00
Caridy Patino
ad18689d92
using the original sourcemap as the base
...
* Creates a new SourceMapGenerator based on a SourceMapConsumer:
https://github.com/mozilla/source-map#sourcemapgeneratorfromsourcemapsourcemapconsumer
2015-01-04 21:08:29 +01:00
truiken
0f80b1058d
Resolve the relative path to lib files last
...
This allows usage of UglifyJS on build systems which have a flat (or non-matching relative) directory structure for source files.
2015-01-04 21:01:11 +01:00
Richard van Velzen
0d48af3f36
Add a "keep_fnames" option to the compressor to retain function expression names
...
See #552 . This is useful for stack traces.
2015-01-04 20:14:38 +01:00
achingbrain
4613644cce
passes in references to process and Buffer to silence ReferenceErrors
2015-01-04 19:26:47 +01:00
Derek Wickern
718e475613
Fix backslashes in source-map paths on Windows
2015-01-04 19:08:19 +01:00
Austin Brown
aa5dd15352
Update README.md
...
otions => options
2015-01-04 16:01:53 +01:00
Peter Dave Hello
5bff65c132
Use svg instead of png to get better image quality
2015-01-04 15:58:00 +01:00
Richard van Velzen
24bc09b79b
Fix #556
...
`\uFEFF` (ZERO WIDTH NO-BREAK SPACE) is removed when parsing, but was
un-escaped for the output when `ascii_only` was false.
When using
UglifyJS multiple times (creating packages from minified sources, for
example), this would lead to problems because the byte was removed when
parsing for the second time.
2015-01-04 15:01:55 +01:00
Richard van Velzen
37c17d5541
Merge pull request #570 from rvanvelzen/fix-569
...
Fix #569
2015-01-04 14:02:08 +01:00
Richard van Velzen
120948fa48
Merge pull request #584 from clyfish/fix-base54
...
fix base54
2015-01-04 14:00:23 +01:00
Richard van Velzen
66e6f0c3cb
Merge pull request #592 from micschro/patch-1
...
Fix max_line_len not working for JSON files
2015-01-04 13:53:31 +01:00
Richard van Velzen
f7447efa8c
Merge pull request #600 from KenPowers/master
...
Use yargs instead of optimist.
2015-01-04 13:52:02 +01:00
Richard van Velzen
f4d36a58c2
Fix #569
...
When no arguments are given to `new Function()`, it should be treated as
a regular anonymous function (http://es5.github.io/#x15.3.2.1 )
2015-01-04 13:37:59 +01:00
Kenneth Powers
6d1c3e1aec
Use yargs instead of optimist.
2015-01-01 01:04:54 -05:00
Mihai Bazon
73cc0505f5
Merge pull request #599 from rvanvelzen/fix-597
...
Fix #597
2014-12-31 14:18:31 +02:00
Richard van Velzen
c75f5a1fd8
Fix #597
...
NaN and Infinity were replaced in the output generation, instead of
during compression. This could lead to results where `1/0` was inserted
without parens leading to invalid output.
The nodes are replaced in the compression step now, and the output
generation returns their regular names. This should not be a problem,
since they're already only constructed from the original name.
2014-12-31 12:23:00 +01:00
micschro
39d8880f2c
Fix max_line_len not working for JSON files
...
As `maybe_newline()` is only called when `might_need_semicolon` is `true`, the `max_line_len` option has no effect for files without (or with very few) semicolons (like JSON files). A simple for this problem is to use `maybe_newline()` instead of `noop` as the `newline()` function in non-beautify mode.
2014-12-17 16:31:03 +01:00
Mihai Bazon
5538ec7bd8
v2.4.16
2014-12-09 15:21:44 +02:00
Mihai Bazon
f101d6429b
Merge pull request #546 from jacobk/patch-1
...
Use uglify source map token names if missing
2014-12-04 14:07:08 +02:00
Cheng Liangyu
fe06fc85d3
fix base54
2014-12-01 13:16:44 +08:00
Mihai Bazon
f36a1eaa8b
Add option to allow return outside of functions.
...
Close #288
2014-10-20 18:12:13 +03:00
Mihai Bazon
a64bdda9ae
Document keep_fargs. Close #557
2014-09-28 12:36:36 +03:00
Mihai Bazon
01d19b4b52
Referencing a global is assumed to have side effects.
...
Close #550
2014-09-28 11:18:25 +03:00
Mihai Bazon
f0c1a01bc2
Merge pull request #549 from Arnavion/unreferenced-catch-symbol
...
Don't warn for an unreferenced exception symbol in a catch block.
2014-09-13 09:29:34 +03:00
Arnavion
7be680d3f8
Don't warn for an unreferenced exception symbol in a catch block.
2014-09-12 21:01:19 -07:00
Mihai Bazon
57dab1e1db
Merge pull request #541 from TalAter/conditional-improvements
...
Conditional assignment of equivalent constants compressed ( x=y?1:1 --> x=1 )
2014-09-09 18:45:12 +03:00
Jacob Kristhammar
21b3c890a1
Use uglify source map token names if missing
2014-09-09 13:02:50 +02:00
Tal Ater
fb0ec720a4
Compress conditions that have side effects using sequences
2014-09-04 02:57:49 +03:00
Tal Ater
7971ed33d1
Added a test for else if
2014-09-03 01:35:30 +03:00
Tal Ater
885835a655
Compress conditional assignments where all possible outcomes are equivalant and condition has no side effects
2014-09-02 23:30:25 +03:00
Mihai Bazon
4c64554808
Turn foo.new into foo["new"] when not --screw-ie8. Fix #534
2014-08-26 10:11:01 +03:00
Mihai Bazon
548beeb6b1
Prevent error for Function(""). Close #538
2014-08-20 09:16:34 +03:00
Mihai Bazon
e3066f9577
Merge pull request #529 from RReverser/master
...
Added example for usage with SpiderMonkey AST
2014-08-04 23:05:29 +03:00
Ingvar Stepanyan
e391367488
Added example for usage with SpiderMonkey AST.
2014-08-04 20:48:14 +03:00
Mihai Bazon
18ddf2f7b5
Merge branch 'master' of https://github.com/RReverser/UglifyJS2
2014-08-04 09:01:19 +03:00
Ingvar Stepanyan
f8ee5a0785
Install newest NPM on oldest Node.js.
2014-08-03 21:44:59 +03:00
Ingvar Stepanyan
b467a3c877
Added generative testing for AST conversions.
2014-08-03 20:48:59 +03:00
Mihai Bazon
f2d48e9019
Merge branch 'patch-1' of https://github.com/gdw2/UglifyJS2
2014-08-03 11:08:39 +03:00
Ingvar Stepanyan
5e314bf3e9
SpiderMonkey Identifier nodes should contain mangled names.
2014-08-03 01:28:58 +03:00
Ingvar Stepanyan
05ba26c7c8
Small fixes for AST conversion.
2014-08-02 13:18:27 +03:00
Ingvar Stepanyan
87b72364a4
Fixes and improvements for UglifyJS->SM AST conversion.
...
* Explicitly forbidden multiple catch clauses as SM-specific feature.
* Simplified describing of UglifyJS->Mozilla AST conversion rules.
* Moved alias rules to single place.
* Removed usage of dynamic type bindings in generated code (speed-up).
2014-08-01 23:45:37 +03:00
Ingvar Stepanyan
0e3ff1f970
Improved UglifyJS<->SpiderMonkey AST conversions.
...
* Added directives recognition in SM AST.
* Moved semi-standard SM `Property` type to separate handler.
* Added `const` recognition from SM AST.
* Removed redundant `this`-as-identifier recognition.
* Removed redundant rules for abstract SM types.
* Described `CatchClause` using string syntax.
* Added support for semi-standard `range` tuple as location source.
* Added back-conversion support (to be improved).
2014-08-01 23:42:34 +03:00
gdw2
ec3e74d7f4
Added license
2014-07-28 13:49:44 -07:00
Mihai Bazon
62bda71c85
Fix parens for AST_Undefined
...
Do the same as for AST_Unary, since we output undefined as `void 0`.
Reported at https://github.com/mishoo/UglifyJS2/issues/338#issuecomment-48858341
2014-07-18 11:31:41 +03:00
Mihai Bazon
83e0939088
v2.4.15
2014-07-09 18:01:40 +03:00
Mihai Bazon
9798d96e37
Lock source-map to 0.1.34
2014-07-09 18:01:23 +03:00
Artemy Tregubenko
6006dd933d
added newline at the end of the file
2014-07-08 11:16:35 +02:00
Mihai Bazon
ac2caf1088
Check for the case an AST_For's init is an EmptyStatement
...
(lame fix for #503 )
2014-07-01 23:10:44 +03:00
Dan Wolff
8511e80f48
Evaluate "foo".length ==> 3
2014-07-01 11:06:51 +03:00
Mihai Bazon
91bc3f1f92
Merge pull request #499 from shinnn/master
...
Update .travis.yml to pass the test on Travis CI
2014-06-26 09:30:25 +03:00
Shinnosuke Watanabe
8463b48f90
Do not run a test for Node v0.4
...
Travis CI doesn’t support Node v0.4.
http://docs.travis-ci.com/user/languages/javascript-with-nodejs/#Provide
d-Node.js-Versions
2014-06-26 13:17:59 +09:00
Mihai Bazon
e3342a3cf6
v2.4.14
2014-06-12 17:24:33 +03:00
Artemy Tregubenko
524a8a42a4
added @ngInject support for inline functions
2014-05-11 14:01:08 +02:00
Mihai Bazon
7bf59b5bcd
Actually, even better. #475
...
- also handle x = + ++y, x = - --y;
- don't use parens, a space suffices.
2014-04-27 21:42:14 +03:00
Mihai Bazon
025f3e9596
Better fix for #475
2014-04-27 20:54:54 +03:00
Mihai Bazon
8258edd8a5
Fix parens in +(+x). Close #475
2014-04-27 20:51:01 +03:00
Mihai Bazon
8669ca219b
Merge branch 'master' of github.com:mishoo/UglifyJS2
2014-04-24 10:56:57 +03:00
Mihai Bazon
71652690b6
Merge pull request #445 from ConradIrwin/try-statement
...
Handle TryStatements trees from acorn >=0.2.0
2014-04-24 10:46:53 +03:00
Mihai Bazon
37693d2812
Update tests.
2014-04-18 11:19:52 +03:00
Mihai Bazon
8fbe200012
Always quote property names that contain non-ASCII characters.
...
Fix #328
2014-04-18 10:48:44 +03:00
Mihai Bazon
1a34a13e33
Merge pull request #470 from ebednarz/master
...
Fix sourceMapIncludeSources exception in Node API
2014-04-13 12:54:12 +03:00
OiNutter
ef772b0049
add sourceMappingUrl to output in node module
...
If options.outSourceMap is specified the sourceMappingURL comment
should be appended to the output stream
2014-04-13 11:48:38 +02:00
ebednarz
6fcabbde08
Fix sourceMapIncludeSources exception in Node API
...
https://github.com/mishoo/UglifyJS2/issues/459
2014-04-13 11:16:10 +02:00
Mihai Bazon
14f290f8ab
Merge pull request #454 from Arnavion/allow-colons-in-wrap_enclose
...
Allow colons in the pairs passed to AST_Toplevel.wrap_enclose
2014-03-24 15:10:35 +02:00
Arnavion
e2e09d5754
Allow colons in the pairs passed to AST_Toplevel.wrap_enclose
2014-03-22 18:02:21 -07:00
Mihai Bazon
448a8d3845
v2.4.13
2014-03-11 15:22:37 +02:00
Conrad Irwin
514936beb8
Handle TryStatements trees from acorn >=0.2.0
2014-03-06 17:07:49 -08:00
Mihai Bazon
f5c09d0bbf
Merge pull request #439 from Arnavion/null-source-in-sourcemap
...
Handle the case when SourceMapConsumer.originalPositionFor returns null source.
2014-03-03 09:19:39 +02:00
Arnavion
014f655c5f
Handle the case when SourceMapConsumer.originalPositionFor returns null source.
...
This happens when SourceMapConsumer does not have a valid position to map the input line and column. This is a change in mozilla/source-map starting from version 0.1.33
Fixes #436
2014-03-02 19:20:19 -08:00
Mihai Bazon
bf30dc3038
Mangle name of exception when --screw-ie8. Fix #430 .
...
The effect of not mangling it was visible only with --screw-ie8 (otherwise
the names would be mangled exactly because they leaked into the parent
scope).
2014-02-14 13:58:14 +02:00
Mihai Bazon
ef2ef07cbd
Add option keep_fargs.
...
By default it's `false`. Pass `true` if you need to keep unused function
arguments.
Close #188 .
2014-02-08 12:33:56 +02:00
Mihai Bazon
1a4440080d
Merge pull request #424 from mattbasta/simplify_conditionals
...
Simplify nested conditionals if possible
2014-02-07 11:31:11 +02:00
Matt Basta
ac0086a745
Simplify nested conditionals if possible
2014-02-06 12:39:13 -08:00
Mihai Bazon
2494daaf68
Merge pull request #422 from mourner/patch-1
...
Fix readme typo (when -> with)
2014-02-06 18:13:10 +02:00
Vladimir Agafonkin
9b404f9de6
fix readme typo (when -> with)
2014-02-06 18:11:33 +02:00
Mihai Bazon
5344b7dab8
Fix if_return dropping the alternative. Close #413
2014-01-31 10:44:13 +02:00
Mihai Bazon
0007a53b9c
Update source-map
2014-01-26 10:18:20 +02:00
Mihai Bazon
1dd05f44eb
Merge branch 'sourcesContent' of https://github.com/arty-name/UglifyJS2 into arty-name-sourcesContent
2014-01-26 10:15:24 +02:00
Mihai Bazon
bf7b122ab2
v2.4.12
2014-01-26 10:11:00 +02:00
Mihai Bazon
e29048b54a
Merge branch 'master' of github.com:mishoo/UglifyJS2
2014-01-26 10:07:10 +02:00
Mihai Bazon
2eeb640eca
Merge pull request #408 from danielstutzman/escape-null-in-regex
...
Don't unescape \x00 in regexes (it breaks IE8)
2014-01-26 00:06:19 -08:00
Mihai Bazon
ceb200fe81
Move unescaping regexps under a codegen option (unescape_regexps)
2014-01-26 10:05:55 +02:00
Daniel Stutzman
f5f8239057
Don't unescape \x00 in regexes (it breaks IE8)
2014-01-25 11:55:39 -07:00
Mihai Bazon
6f9d051784
v2.4.11
2014-01-21 11:44:28 +02:00
Mihai Bazon
931862e97f
More chars that cannot be unescaped in regexps.
2014-01-21 11:44:00 +02:00
Mihai Bazon
1d0127de21
Fix end token for conditionals. Close #404
2014-01-21 10:38:59 +02:00
Mihai Bazon
2d8fc61677
Merge pull request #402 from lautis/bom-regexps
...
Don't unescape byte order marks in regexps
2014-01-19 06:14:12 -08:00
Ville Lautanala
1e31011874
Don't unescape byte order marks in regexps
2014-01-19 12:27:03 +02:00
Mihai Bazon
75cdbf19aa
v2.4.10
2014-01-18 12:32:45 +02:00
Mihai Bazon
4339bd5cfa
Don't unescape \x2f (slash) in regexps. #54
2014-01-18 12:31:50 +02:00
Mihai Bazon
1ab2fdaa10
Fix example
2014-01-17 15:48:47 +02:00
Mihai Bazon
eda540f6ec
v2.4.9
2014-01-15 22:31:09 +02:00
Mihai Bazon
90a330da16
simplify
2014-01-10 10:36:15 +02:00
Mihai Bazon
cad1f9cbd1
Unescape Unicode sequences in regexps when ascii_only is false. #54
2014-01-10 10:33:58 +02:00
Artemy Tregubenko
f6203bd5a8
added hasOwnProperty check to avoid warnings
2014-01-09 15:20:05 +01:00
Artemy Tregubenko
03cf94ebe8
Added support for sourcesContent property of source map
2014-01-09 15:12:00 +01:00
Mihai Bazon
c3087dd179
Better process_for_angular before other statement reductions. #395
2014-01-08 11:39:24 +02:00
Mihai Bazon
2c305af478
Support @ngInject with angular compressor option. Close #395 .
2014-01-08 11:28:32 +02:00
Mihai Bazon
72e6f64ca8
Disable node 0.6 since the build fails consistently and it's not our fault.
2014-01-07 18:56:18 +02:00
Mihai Bazon
b9fac687ff
Support SpiderMonkey AST in UglifyJS.minify. Fix #393 .
2014-01-07 18:42:48 +02:00
Mihai Bazon
2c88eb6fbe
doh.
2014-01-07 12:54:14 +02:00
Mihai Bazon
a67e3bfdd3
Fix #392
2014-01-07 12:48:54 +02:00
Mihai Bazon
27142df4f5
minor: exp["10"] => exp[10]
2014-01-07 12:48:21 +02:00
Mihai Bazon
5e4c7f4245
Fix parens for property access -- (foo, bar)["baz"]
2014-01-05 11:48:01 +02:00
Mihai Bazon
b521b4b926
Conditional/call optimization
...
foo ? bar(x) : bar(y) ==> bar(foo ? x : y)
2013-12-29 10:31:30 +02:00
Mihai Bazon
aa9de76370
Mark yield as reserved word. Close #375 .
2013-12-22 20:52:19 +02:00
Mihai Bazon
5a083a938d
Optimize seq,void 0. Close #377 .
...
(x, void 0) => void x
(x, undefined) => void x
2013-12-22 11:36:45 +02:00
Mihai Bazon
7a30d826b8
Better fix for comments in AST_Exit
...
Close #374
2013-12-18 15:54:12 +02:00
Mihai Bazon
be55a09edf
Take out all comments from an AST_Exit's value
...
Fix #372
2013-12-18 13:30:26 +02:00
Mihai Bazon
15a148ff6d
v2.4.8
2013-12-18 12:10:43 +02:00
Mihai Bazon
428e19fed2
Add option to adjust the src/target line in the source map
2013-12-18 12:10:02 +02:00
Mihai Bazon
f65e55dff4
minor
2013-12-16 20:37:09 +02:00
Mihai Bazon
b634018618
Merge pull request #371 from colorhook/master
...
bugfix #242
2013-12-16 00:21:07 -08:00
colorhook
fa3300f314
bugfix #242
2013-12-16 15:53:43 +08:00
Mihai Bazon
bd0886a2c0
semicolons
2013-12-10 20:24:27 +02:00
Mihai Bazon
248f304f02
Merge pull request #245 from ForbesLindesay/patch-1
...
Make `DefaultsError` a real `Error` object
2013-12-10 10:23:29 -08:00
Mihai Bazon
dc5f70eab5
Add drop_console option to the compressor
2013-12-10 19:44:41 +02:00
Mihai Bazon
df8c5623af
minor
2013-12-10 19:39:03 +02:00
Mihai Bazon
a790c09c91
v2.4.7
2013-12-09 12:09:31 +02:00
Mihai Bazon
8f35a363d9
AST_Catch shouldn't really inherit from AST_Scope. Fix #363
...
I hereby acknowledge that figure_out_scope has become a mess.
2013-12-05 13:30:29 +02:00
Mihai Bazon
d2190c2bf3
Properly scope catch identifier when --screw-ie8
...
Fix #344
2013-11-28 16:43:30 +02:00
Mihai Bazon
ea10642572
v2.4.6, because npm is foobar
2013-11-28 15:05:32 +02:00
Mihai Bazon
547561a568
v2.4.5
2013-11-28 13:15:27 +02:00
Mihai Bazon
c16d538ce7
Add --noerr to turn off argument name checking
...
for now only used for keys passed to `-c` or `-b`.
2013-11-28 13:15:01 +02:00
Mihai Bazon
73d082df2e
v2.4.4
2013-11-27 14:24:26 +02:00
Mihai Bazon
50b8d7272c
Fix faulty compression
...
`String(x + 5)` is not always the same as `x + "5"`. Overlooked that. :-(
Close #350
2013-11-20 21:13:16 +02:00
Mihai Bazon
7d11b96f48
Only descend twice after drop_unused if it's the same node type.
...
Fix #345
2013-11-08 11:57:17 +02:00
Mihai Bazon
eab99a1c3d
Better fix for #343
...
We can in fact lift sequences, but only if the operation is assignment and
the left-hand side has no side effects nor property access -- that should
guarantee that whatever we place before it cannot affect the sense of the
assignment.
Dropped contrived test case (too hard to support it now), added a more
meaningful one.
2013-11-06 10:48:48 +02:00
Mihai Bazon
19e2fb134d
v2.4.3
2013-11-06 10:21:29 +02:00
Mihai Bazon
f4919e3a25
Do not lift sequence from right-hand side of binary operation. Fix #343
2013-11-06 10:18:28 +02:00
Mihai Bazon
bb700daa4c
v2.4.2
2013-11-03 23:41:07 +02:00
Mihai Bazon
263577d5eb
[README] Fix #278
2013-10-30 14:13:30 +02:00
Mihai Bazon
63287c0e68
Workaround for Safari bug
...
Close #313
2013-10-30 13:59:59 +02:00
Mihai Bazon
c5ed2292bf
Fix parsing setters/getters (allow keywords for name).
...
The "key" property was always "set" or "get", which didn't make much sense.
Now it'll be the actual name of the setter/getter (AST_Node), and the
AST_Accessor object itself, which represents the function, won't store any
name.
Close #319
2013-10-30 11:50:22 +02:00
Mihai Bazon
b70670b69f
Fix regression after e4c5302406
...
`x * (y * z)` ==> `x * y * z` -- the better place to do this is in the
compressor rather than codegen.
2013-10-30 10:45:58 +02:00
Mihai Bazon
9dd97605bc
indentation
2013-10-30 10:44:50 +02:00
Mihai Bazon
e4c5302406
Fix output for x = 2 * (a % b / b * c)
...
(issue #337 )
2013-10-30 09:11:55 +02:00
Mihai Bazon
bea3d90771
minor
2013-10-30 09:10:56 +02:00
Richard van Velzen
785c6064cc
Disallow reversal where lhs has higher or equal precedence
...
Fixes #267
2013-10-29 21:37:36 +01:00
Mihai Bazon
b214d3786f
Fix typo
2013-10-29 15:53:54 +02:00
Mihai Bazon
7cf79c302b
Fix reading arguments
...
i.e. read `-c unsafe,unsafe-comps` as `-c unsafe=true,unsafe_comps=true`
2013-10-29 14:01:26 +02:00
Mihai Bazon
a14c6b6574
Avoid shadowing name of function expression with function argument
...
Close #179 , #326 , #327
2013-10-29 13:18:09 +02:00
Mihai Bazon
f1b7094a57
Add "preamble" output option
...
Close #335
2013-10-29 11:09:18 +02:00
Mihai Bazon
0358e376f0
Fix codegen for when comments_before is undefined.
...
Fix #333
2013-10-28 09:39:29 +02:00
Mihai Bazon
b47f7b76b9
Merge branch 'master' of github.com:mishoo/UglifyJS2
2013-10-27 10:03:01 +02:00
Mihai Bazon
582cc55cff
Display number of failed tests and corresponding files
2013-10-27 10:02:44 +02:00
Mihai Bazon
8979579e55
Merge pull request #330 from markjaquith/master
...
Unit test to detect issue in 8d14efe for #126 that causes aggressive parenthesis removal, functional differences
2013-10-27 01:01:57 -07:00
Mihai Bazon
0d6e08c541
Merge pull request #331 from rvanvelzen/rhs-strings-fix
...
Fix RHS concat (raised in #330 )
2013-10-27 01:01:11 -07:00
Richard van Velzen
e2daee9a65
Fix RHS concat (raised in #330 )
...
When attempting to concat the left-side of the rhs, make sure the rhs is
a string.
2013-10-26 18:44:52 +02:00
Mark Jaquith
9cd118ca3d
Add a unit test for issue-126
...
Add a unit test to test to test for aggressive parenthesis removal that causes functional changes.
2013-10-25 16:28:15 -04:00
Mihai Bazon
cfd5c6155c
Merge pull request #325 from rvanvelzen/fix-269
...
Fix #269
2013-10-24 02:39:07 -07:00
Richard van Velzen
1a5a4bd631
Fix #269
...
Shorten most primitives where possible. Also optimize some edge cases.
2013-10-24 11:08:33 +02:00
Mihai Bazon
63e1a8e1fd
Merge pull request #323 from rvanvelzen/undefined-drop-vars-fix
...
Fix #280
2013-10-23 13:58:09 -07:00
Richard van Velzen
7055af8221
Fix #280
...
The `init` of the `ForStatement` is not a `BlockStatement` before it was
descended. The descend has to happen first, and *then* the actual
checks.
2013-10-23 22:26:04 +02:00
Mihai Bazon
aafe2e1db3
Merge pull request #322 from rvanvelzen/test-exit-code-1
...
Add an exit code to the test suite
2013-10-23 11:37:36 -07:00
Richard van Velzen
118105db43
Add an exit code to the test suite
...
By adding the exit code 1 (or any other non-zero exit code) `npm test`
will know the tests didn't perform correctly. This way it's easier to
know if pull requests are good or bad.
2013-10-23 20:24:58 +02:00
Mihai Bazon
63d04fff69
Revert #3a81f60 for now
...
(with it some tests break and it can generate invalid output, see issue #44 )
2013-10-22 21:50:55 +03:00
Mihai Bazon
8c9cc920fb
v2.4.1
2013-10-22 21:31:01 +03:00
Mihai Bazon
d09f0adae3
arguments outside of a function is an ordinary variable.
...
Fix #501
2013-10-17 18:20:33 +03:00
Mihai Bazon
3fa9265ce4
wrap up
2013-10-09 22:15:43 +03:00
Mihai Bazon
3a81f60982
Don't drop_unused before compression.
...
Fix #280 , #282
2013-10-09 19:15:09 +03:00
Mihai Bazon
f2348dd98b
Rename clean_getters to pure_getters; add pure_funcs.
2013-10-04 13:17:25 +03:00
Mihai Bazon
253c7c2325
Merge pull request #308 from meteor/fix-unicode-keys
...
Only allow identifier start characters at the beginning of identifiers.
2013-10-04 00:13:52 -07:00
David Glasser
bb0a762d12
Only allow identifier start characters at the beginning of identifiers.
...
Without this fix, the following source:
x = {"\u200c": 42};
would incorrectly be converted into a quoteless key. But while \u200c is allowed
to be in identifiers, it cannot be at the beginning, as per ES5.
(For example, the SockJS client library doesn't work under uglify starting with
d9ad3c7c.)
2013-10-03 17:02:19 -07:00
Mihai Bazon
8cc86fee60
add clean_getters compressor option (default false)
...
allows one to specify if `foo.bar` is considered to have side effects.
2013-10-02 19:38:01 +03:00
Mihai Bazon
88fb83aa81
minor optimization
...
unlikely to help in hand-written code:
(something() ? foo : bar) == foo ==> something()
2013-10-02 15:31:31 +03:00
Mihai Bazon
95b4507c02
Fix error in the output minifying Function("return this")()
2013-09-30 11:49:29 +03:00
Mihai Bazon
afdaeba37d
More attempts to determine when addition is associative
...
Somebody hit me with bug reports on this. :)
Refs #300
2013-09-22 15:26:10 +03:00
Mihai Bazon
037199bfe2
Actually let's move away those monsters from the evaluate function
...
ev() should do a single thing — evaluate constant expressions. if that's
not possible, just return the original node. it's not the best place for
partial evaluation there, instead doing it in the compress functions.
2013-09-22 15:00:42 +03:00
Mihai Bazon
583fac0a0f
More dirty handling of [ ... ].join() in unsafe mode
...
Close #300
2013-09-22 13:14:42 +03:00
Dan Wolff
e8158279ff
Evaluate [...].join() if possible: minor bugfix
...
Follow-up to 78e98d2 .
2013-09-22 11:34:30 +03:00
Mihai Bazon
78e98d2611
When unsafe is set, evaluate [...].join() if possible
...
Close #298
2013-09-19 18:20:45 +03:00
Dan Wolff
8d14efe818
Concatenate strings also on the right-hand side of an expression that cannot be evaluated. Fix #126
...
E.g. converts:
a+'Hello'+'World'
to
a+'HelloWorld'
2013-09-19 13:03:03 +03:00
Mihai Bazon
83ba338bd0
Avoid printing <!-- in the output (HTML5 comment)
2013-09-06 10:10:45 +03:00
Mihai Bazon
7c10b25346
Support HTML5 comment syntax (enabled by default!)
...
See http://javascript.spec.whatwg.org/#comment-syntax
https://github.com/mishoo/UglifyJS/issues/503
https://github.com/marijnh/acorn/issues/62
2013-09-06 09:54:30 +03:00
Mihai Bazon
cb9d16fbe4
minor
2013-09-06 09:52:56 +03:00
Mihai Bazon
5d8da864c5
Fix names.
2013-09-02 19:38:00 +03:00
Mihai Bazon
85b527ba3d
Disallow continue referring to a non-IterationStatement. Fix #287
...
Simplifies handling of labels (their definition/references can be easily
figured out at parse time, no need to do it in `figure_out_scope`).
2013-09-02 19:36:16 +03:00
Mihai Bazon
1c6efdae34
Better fix for #286
2013-09-02 11:36:48 +03:00
Mihai Bazon
b0ca896d98
Fix parsing a.case /= 1
...
Close #286
2013-09-02 11:09:54 +03:00
Mihai Bazon
78a217b94c
Fix parsing regexp after unary-prefix operator
...
++/x/.y
Fix #284
2013-09-02 09:56:27 +03:00
Mihai Bazon
a89d233318
Better reporting of parse errors
2013-09-02 09:55:34 +03:00
Mihai Bazon
c28e1a0237
v2.4.0
2013-08-22 15:06:42 +03:00
Mihai Bazon
1a95007ec1
Remove --ie-proof from the readme.
...
Fix #276
2013-08-22 10:10:25 +03:00
Mihai Bazon
ed80b4a534
Move support for negate_iife in the compressor, rather than code generator
...
(the code generator doesn't maintain enough context to know whether
the return value is important or discarded)
Fixes #272
2013-08-20 17:45:52 +03:00
Mihai Bazon
4f09df238e
Merge pull request #270 from michaelficarra/GH-259
...
fixes #259 : don't unnecessarily quote object properties when --screw-ie8
2013-08-19 00:21:08 -07:00
Michael Ficarra
d9ad3c7cbf
fixes #259 : don't unnecessarily quote object properties when --screw-ie8
2013-08-18 19:45:06 -05:00
Mihai Bazon
6ea3f7fe34
fix usage
2013-08-08 09:15:13 +03:00
Mihai Bazon
4c4dc2137c
Don't drop unused setter argument.
...
Fix #257
2013-08-07 12:04:58 +03:00
Mihai Bazon
4aa4b3e694
Support -p relative. Fix #256
2013-08-07 11:43:47 +03:00
Forbes Lindesay
2604aadb37
Add support for browserify
2013-08-07 11:21:30 +03:00
Mihai Bazon
964d5b9aa4
Don't pretend to evaluate lambdas
...
Fix #255
2013-08-04 21:44:17 +03:00
Mihai Bazon
b7adbcab1f
Fix #251
2013-07-30 12:16:29 +03:00
Mihai Bazon
3435af494f
Don't require arguments to --enclose
2013-07-28 11:11:11 +03:00
Mihai Bazon
41c627379c
Reverting "added option for dropping unused params"
...
Revert "added option for dropping unused params"
(turns out we already had the `unused` option for this.)
This reverts commit e54df2226f .
2013-07-25 18:08:36 +03:00
Dusan Bartos
e54df2226f
added option for dropping unused params
2013-07-25 17:37:47 +03:00
Forbes Lindesay
dfa395f6ff
Make DefaultsError a real Error object
2013-07-22 01:44:03 +01:00
David Glasser
b1febde3e9
Fix output for arrays whose last element is a hole: [1,,]
...
1529ab96 started to do this (by considering holes to be separate from
"undefined") but it still converted
[1,,] (length 2, last element hole, trailing comma)
to
[1,] (length 1, trailing comma)
Unfortunately the test suite doesn't really make this clear: the new test here
passes with or without this patch because run-tests.js beautifys the expected
output (in "make_code"), which does the incorrect transformation! If you make
some manual change to arrays.js to make the test fail and see the INPUT and
OUTPUT, then you can see that without this fix, [1,,] -> [1,], and with this fix
it stays [1,,].
2013-07-18 15:39:22 +03:00
Mihai Bazon
193049af19
Revert previous patch, it was no good.
2013-07-15 11:59:23 +03:00
Mihai Bazon
4a0bab0fa3
Add "position" option to parser, to specify initial pos/line/col
...
(for parsing embedded scripts)
2013-07-15 11:27:11 +03:00
Mihai Bazon
9243b0cb9d
Apply transformer to AST_VarDef's name
...
Fix #237
2013-07-14 13:24:09 +03:00
Mihai Bazon
fc9ba323c4
Fix typo.
...
Close #239
2013-07-12 09:56:58 +03:00
Mihai Bazon
d0689c81bb
Reset the base54 counters every time minify is called.
...
Close #229
2013-06-28 10:08:13 +03:00
Mihai Bazon
02a84385a0
Don't swap binary ops when "use asm" is in effect.
...
Refs #167
2013-06-07 12:52:09 +03:00
Mihai Bazon
a4889a0f2e
Merge pull request #220 from lautis/escape-null
...
Escape null characters as \x00
2013-06-03 11:10:14 -07:00
Ville Lautanala
f29f07aabd
Escape null characters as \x00
...
Since \0 might be mistakenly interpreted as octal if followed by a
number and using literal null is in some cases interpreted as end of
string, escape null as \x00.
2013-06-03 20:46:42 +03:00
Mihai Bazon
188e28efd7
v2.3.6
2013-05-23 23:42:32 +03:00
Mihai Bazon
2df48924cc
Merge pull request #213 from mattrobenolt/patch-1
...
SourceMapping pragma has changed to //#
2013-05-22 11:30:54 -07:00
Mihai Bazon
9fc6796d2a
Add negate_iife option to the code generator.
...
See discussion in a9511dfbe5
2013-05-22 21:22:14 +03:00
Mihai Bazon
9fc8a52142
Set "global" on undeclared SymbolDef-s
2013-05-22 13:08:19 +03:00
Matt Robenolt
3a21861580
The extra /* */ isn't needed now
2013-05-21 08:50:21 -06:00
Matt Robenolt
1dbffd48ea
SourceMapping pragma has changed to //#
...
See: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit
The spec was updated on May 16th since `//@` was causing some issues with IE.
2013-05-21 08:46:27 -06:00
Mihai Bazon
22a038e6a2
Fix output of statement: new function(){...};
...
Close #209
2013-05-20 08:27:37 +03:00
Mihai Bazon
f652372c9a
v2.3.5
2013-05-19 14:25:05 +03:00
Mihai Bazon
ad1fc3b71a
Fix package.json (use repository instead of repositories)
2013-05-19 14:24:33 +03:00
Mihai Bazon
2b40a5ac62
v2.3.4
2013-05-15 13:27:40 +03:00
Mihai Bazon
ca3388cf5a
Add --expr, an option to parse a single expression (suitable for JSON)
2013-05-15 13:27:23 +03:00
Mihai Bazon
caa8896a8a
Only compress code in new Function if all arguments are strings.
2013-05-14 18:36:31 +03:00
Mihai Bazon
d13aa3954d
v2.3.3
2013-05-14 11:33:28 +03:00
Mihai Bazon
f64539fb76
Compress code passed to new Function if it's a constant.
...
Only for `--unsafe`.
Close #203
2013-05-14 10:47:06 +03:00
Mihai Bazon
d56ebd7d7b
Fix a["1_1"]
...
Close #204
2013-05-14 10:42:34 +03:00
Mihai Bazon
3edfe7d0ee
Merge pull request #202 from nschonni/add-travis-ci
...
Add CI build for supported Node versions
2013-05-10 02:56:24 -07:00
Mihai Bazon
7f77edadb3
v2.3.2
2013-05-09 08:58:55 +03:00
Mihai Bazon
a9511dfbe5
Use the negation hack rather than parens for a toplevel function expression call
...
(only in !beautify mode)
2013-05-09 08:58:47 +03:00
Mihai Bazon
064e7aa1bb
Fix is_assignable
...
(not likely to be noticed, it's only used in `strict` parse mode)
2013-05-09 08:44:24 +03:00
Nick Schonning
46814f88d9
Add Travis build badge to README
2013-05-08 23:48:12 -04:00
Nick Schonning
4a19802d0c
Add CI build for supported Node versions
2013-05-08 23:42:06 -04:00
Trey Griffith
1e9f98aa51
add a test for zero-length string in is_identifier_string, which is used in property compression. Also added a test exercising the change.
2013-05-08 22:43:20 +03:00
Mihai Bazon
11e24d53a1
Fix property names
...
Close #199
2013-05-08 22:37:48 +03:00
Mihai Bazon
0f509f8336
v2.3.1
2013-05-08 16:45:36 +03:00
Mihai Bazon
a6ed2c84ac
Better fix for equality of typeof ... against "undefined"
2013-05-08 16:22:48 +03:00
Justin Lau
a1958aad56
Fixed typeof undefined optimization and updated related test case to
...
accomodates the sort behaviour changes made in commit
mishoo/UglifyJS2@aebafad41e .
Signed-off-by: Justin Lau <justin@tclau.com >
2013-05-08 16:22:48 +03:00
Justin Lau
672699613e
Added test cases for #104 .
...
Signed-off-by: Justin Lau <justin@tclau.com >
2013-05-08 16:22:48 +03:00
Mihai Bazon
645d5bdbc5
Merge pull request #195 from kjbekkelund/typo
...
Fix typo in bin and readme
2013-05-08 05:51:52 -07:00
Justin Lau
9af2bbffde
Fixed dot properties not optimizing unicode identifiers. Signed-off-by: Justin Lau <justin@tclau.com>
2013-05-07 14:20:19 +03:00
Justin Lau
fcd544cc10
Added test scenario with unicode in properties name.
...
Signed-off-by: Justin Lau <justin@tclau.com >
2013-05-06 01:26:33 +08:00
Justin Lau
1e3bc0caa0
Fixed dot property issue with invlid identifier names.
...
Signed-off-by: Justin Lau <justin@tclau.com >
2013-05-05 22:27:43 +08:00
Justin Lau
8227e8795b
Added scenario in test case where properties shouldn't be accessed with
...
dotted syntax even with screw_ie8 option.
Signed-off-by: Justin Lau <justin@tclau.com >
2013-05-05 22:08:13 +08:00
Kim Joar Bekkelund
790b3bcdc6
Fix typo in bin and readme
2013-05-02 11:15:33 +02:00
Mihai Bazon
d6e6458f68
Merge pull request #194 from ulikoehler/master
...
Add README syntax highlighting
2013-05-01 07:04:01 -07:00
Uli Köhler
a54b6703c0
Add README syntax highlighting
2013-05-01 15:56:20 +02:00
Mihai Bazon
8e6266136d
Take two. v2.3.0
2013-05-01 13:15:34 +03:00
Mihai Bazon
5c22a1bdf5
v2.3
2013-05-01 13:14:07 +03:00
Mihai Bazon
9794ebf88c
Workaround for missing prefix in UnaryExpression generated by Esprima
...
See #193
2013-04-29 15:03:52 +03:00
Mihai Bazon
68394eed93
Make compress/mangle disabled by default, as before 5af144522a
2013-04-21 11:35:50 +03:00
Mihai Bazon
753b4b6cc8
Merge pull request #191 from michaelficarra/use-es5-member-access-with-screw-ie
...
use dotted member access when --screw-ie8 option given
2013-04-21 01:30:02 -07:00
Mihai Bazon
a9c1b9f138
Merge pull request #190 from michaelficarra/patch-1
...
unbalanced parentheses in readme
2013-04-21 01:28:45 -07:00
Michael Ficarra
5af144522a
fixes #189 : use dotted member access when --screw-ie8 option given
2013-04-20 15:11:05 -05:00
Michael Ficarra
483e0cadfb
unbalanced parentheses in readme
2013-04-20 14:05:52 -05:00
Roman Bataev
4b818056cf
Fix typeof evaluation for regex and function
2013-04-03 22:34:38 -04:00
Roman Bataev
b956e5f1d9
Add tests for typeof evaluation
2013-04-03 22:34:19 -04:00
Vladimir Zhuravlev
37d7cb8565
Quote objects with numeric keys
2013-03-31 19:52:28 +03:00
Mihai Bazon
2b8e206fec
fix package.json
2013-03-31 13:38:02 +03:00
Mihai Bazon
a869b854fa
Don't use \xYY for identifiers
...
Fix #173
2013-03-31 13:36:22 +03:00
Andreas Lind Petersen
81f5efe39a
Output, to_ascii: Escape non-ascii chars with \xnn instead of \unnnn whenever possible.
2013-03-31 13:36:22 +03:00
Andreas Lind Petersen
69dde0462b
uglifyjs binary: Make read_whole_file async and don't attempt to read STDIN synchronously.
2013-03-31 13:36:22 +03:00
Mihai Bazon
7628bcac01
Merge pull request #163 from mzgol/screw-oldie
...
renamed --screw-ie to --screw-oldie, documented it in README.md, indicat...
2013-03-25 09:05:44 -07:00
Michał Gołębiowski
75f0bbe6e8
renamed --screw-ie to --screw-ie8, documented it in README.md, indicated it doesn't break IE9+
2013-03-25 17:03:21 +01:00
Jake Harding
478bf4dbdd
Add support for enclose option. Closes #139 .
2013-03-24 11:11:23 +02:00
Mihai Bazon
e0f67baf2d
Don't print the warning on parse error, just throw a JS_Parse_Error.
...
Fix #159
2013-03-24 00:57:35 +02:00
Mihai Bazon
b14d3df3d2
Keep legit code working even when --screw-ie is not passed.
...
Previously:
Without `--screw-ie`, UglifyJS would always leak names of function
expressions into the containing scope, as if they were function
declarations. That was to emulate IE<9 behavior. Code relying on this
IE bug would continue to work properly after mangling, although it would
only work in IE (since other engines don't share the bug). Sometimes
this broke legitimage code (see #153 and #155 ).
With `--screw-ie` the names would not be leaked into the current scope,
working properly in legit cases; but still it broke legit code when
running in IE<9 (see #24 ).
Currently:
Regardless of the `--screw-ie` setting, the names will not be leaked.
Code relying on the IE bug will not work properly after mangling.
<evil laughter here>
Without `--screw-ie`: a hack has been added to the mangler to avoid
using the same name for a function expression and some other variable in
the same scope. This keeps legit code working, at the (negligible,
indeed) cost of one more identifier.
With `--screw-ie` you allow the mangler to name function expressions
with the same identifier as another variable in scope. After mangling
code might break in IE<9.
Oh man, the commit message is longer than the patch.
Fix #153 , #155
2013-03-22 18:04:46 +02:00
Mihai Bazon
24e58ee70c
Merge pull request #125 from devongovett/master
...
Allow inSourceMap option to be a generated JSON source map
2013-03-13 01:36:55 -07:00
Mihai Bazon
9b1a40dfc3
Support mangling toplevel names
...
Close #127
2013-03-13 09:44:06 +02:00
Mihai Bazon
e4b078cff7
Disable unsafe by default
...
Close #147
2013-03-11 00:04:31 +02:00
Mihai Bazon
3bd7ca9961
Merge pull request #146 from mbostock/read-all-stdin
...
Read the entire STDIN.
2013-03-05 22:17:09 -08:00
Mike Bostock
f83aca65b7
Read the entire STDIN.
...
The problem with reading synchronously from /dev/stdin is that you can get a
spurious EOF when the input buffer is empty, even if more content is coming. Now
STDIN is read from a loop, and only stops polling when all input has been read.
This fixes #70 #85 and other errors related to parsing large files on STDIN.
2013-03-05 20:35:49 -08:00
Mihai Bazon
aebafad41e
Fix reordering comparisons
...
Close #143
2013-03-04 10:06:01 +02:00
Mihai Bazon
26746ce316
Add --screw-ie option
...
For now the implication is that UglifyJS will not leak a function
expression's name in the surrounding scope (IE < 9 does that).
(ref. mishoo/UglifyJS#485 )
2013-03-02 14:28:34 +02:00
Mihai Bazon
dac6efb43d
Drop last default: if it's the last branch and empty
...
Close #141
2013-03-01 13:12:03 +02:00
Mihai Bazon
8880f4824c
Compress boolean constants after evaluation
...
Close #137
2013-03-01 10:26:06 +02:00
Mihai Bazon
cb0c576bdd
Add license
...
Close #131
2013-02-22 13:58:16 +02:00
Mihai Bazon
3a591c43fe
Fix compressing do {...} while (false)
...
It's not safe to transform it to {...} because the body might contain
`break`. The solution could be more elaborate (detect if body contains
`break`) but I don't think it's worth the trouble.
Close #129
2013-02-19 18:12:19 +02:00
Mihai Bazon
db66eca958
v2.2.5
2013-02-14 12:51:13 +02:00
Devon Govett
f2767452e6
Allow inSourceMap to be a generated JSON source map instead of just a file name
2013-02-10 10:06:13 -08:00
Mihai Bazon
916faf0a48
Force space after literal regexp when used in "instanceof" or "in"
...
Close #118
2013-02-06 11:57:59 +02:00
Mihai Bazon
f36e4e9a78
Give up evaluating (unary-prefix '-' 0)
...
Close #117
------
JS, WHY YOU SUCK SO BADLY? ;-(
2013-02-06 11:51:09 +02:00
Mihai Bazon
fdf8b5eb71
Fix parens for NaN
...
Close #116
2013-02-06 11:38:29 +02:00
Mihai Bazon
de7ec7f1b7
Fix parens for negative numbers
...
Close #115
2013-02-06 11:36:04 +02:00
Mihai Bazon
3c8a0bdff4
Fix parens for AST_New
...
Close #114
2013-02-06 11:28:49 +02:00
Mihai Bazon
9e8ba27dcd
Fix handling of constants
...
Close #113
2013-02-06 11:15:31 +02:00
Mihai Bazon
719a8fd102
Ugly hack to print comments before return/throw statements
...
Close #112
2013-02-05 19:11:39 +02:00
Mihai Bazon
3a22e917de
Merge pull request #111 from mattrobenolt/safer-sourcemap
...
Wraps sourceMappingURL in a multiline comment. Fixes #108
2013-02-03 23:44:31 -08:00
Matt Robenolt
a9af2c9e62
Wraps sourceMappingURL in a multiline comment. Fixes #108
2013-02-03 16:01:01 -08:00
Mihai Bazon
31e99cebe7
v2.2.4
2013-02-01 13:32:15 +02:00
Mihai Bazon
a5b209470c
Fix end token for Assign nodes
2013-02-01 13:32:15 +02:00
Mihai Bazon
e9a571b2a1
Merge pull request #94 from paulmillr/patch-1
...
Add better fromstring docs.
2013-01-31 23:50:59 -08:00
Mihai Bazon
8bf83f42ea
Merge pull request #106 from gibson042/105
...
Fix #105 : property comparison to undefined is not always safe
2013-01-24 05:51:33 -08:00
Richard Gibson
522566ea80
Fix #105 : property comparison to undefined is not always safe
2013-01-23 23:52:04 -05:00
Mihai Bazon
297af47c89
Add --source-map-url option
...
Fix #100
Fix #47
2013-01-20 12:32:07 +02:00
Mihai Bazon
faa354f5ca
[AST_Hole] the print function can be a no-op.
2013-01-17 11:36:10 +02:00
David Glasser
1529ab965a
Fix output for arrays containing undefined values.
...
1b6bcca7 was a first attempt at this. That commit made Uglify stop replacing
holes with undefined, but instead it started replacing undefined with
holes. This is slightly problematic, because there is a difference between a
hole and an undefined value. More problematically, it changed [1,undefined] to
[1,] which generally doesn't even parse as a hole (just as a trailing comma), so
it didn't even preserve the length of the array!
Instead, parse holes as their own special AST node which prints invisibly.
2013-01-17 11:36:10 +02:00
Mihai Bazon
605f330e69
Merge pull request #98 from ForbesLindesay/patch-1
...
Update installation instructions
2013-01-17 01:08:59 -08:00
Mihai Bazon
f0909bdc8f
Handle String() with no arguments.
...
Fix #91
2013-01-17 11:01:38 +02:00
Forbes Lindesay
c13e7e621d
Update installation instructions re #4
2013-01-17 00:13:42 +00:00
Paul Miller
ad071f8017
Add better fromstring docs.
2013-01-13 18:45:43 +02:00
Mihai Bazon
c058d8b9cd
Merge pull request #90 from jakearchibald/patch-1
...
Compressor options use underscores rather than hyphens
2013-01-08 14:21:25 -08:00
Jake Archibald
1d8871a092
Compressor options use underscores rather than hyphens
2013-01-08 12:33:58 -08:00
Mihai Bazon
16953c2064
v2.2.3
2013-01-04 22:50:53 +02:00
Mihai Bazon
6b14f7c224
Fix handling of labels in nested scopes
2013-01-04 14:17:33 +02:00
Mihai Bazon
130c623be7
Support output, mangle and compress options to UglifyJS.minify.
...
Close #57
Close #86
Close #33
2013-01-04 11:25:13 +02:00
Mihai Bazon
47c9895d59
Merge pull request #87 from BenoitZugmeyer/master
...
Add a --version option
2013-01-03 02:28:35 -08:00
Benoît Zugmeyer
ba403331c5
Set --version as a boolean #87
2013-01-03 11:22:37 +01:00
Benoît Zugmeyer
e82e89d1b0
--version option
2013-01-03 11:07:53 +01:00
Mihai Bazon
83a4ebfedc
Implement -m sort=true
...
close #83
2013-01-02 12:39:00 +02:00
Mihai Bazon
9916d0e547
Accept string or number as name of an accessor.
...
[not sure I'm happy about this fix]
Reference mishoo/UglifyJS#478
2012-12-22 01:24:04 +02:00
Mihai Bazon
31c4a37e37
Optimize new Array(1, 2, 3) → [1, 2, 3]
...
Close #74
2012-12-21 21:04:35 +02:00
Mihai Bazon
08219f0cee
Fix output when semicolons is off.
...
(need to force a semicolon for the empty body of an `if`)
Close #72
2012-12-21 11:57:08 +02:00
Mihai Bazon
c4993e1e5c
Small cleanup
2012-12-12 11:51:55 +02:00
Mihai Bazon
6064bea3db
v2.2.2
2012-12-06 14:25:18 +02:00
Mihai Bazon
98978fc827
Add proper parens in "NoIn" expressions.
...
fix #60 .
2012-12-06 12:27:57 +02:00
Mihai Bazon
16430acc1f
small improvement on merging assignments into hoisted vars
2012-12-05 13:14:49 +02:00
Mihai Bazon
320c110b33
When hoisting variables, try to merge in assignments that follow.
2012-12-05 12:30:25 +02:00
Mihai Bazon
dbe33bbfc5
Revert "Fixed reading from STDIN."
...
It breaks usage like this:
echo '...code...' | uglifyjs
This reverts commit e48802ad29 .
2012-11-30 11:33:50 +02:00
Mihai Bazon
b5c3253b49
Add test for issue #59
2012-11-30 11:26:37 +02:00
Mihai Bazon
5cc90db7d0
Don't messup compressor stack while optimizing Switch
...
Fix #59
2012-11-30 11:16:09 +02:00
Mihai Bazon
f427e5efc7
Merge pull request #58 from roxeteer/master
...
Fixed reading from STDIN
2012-11-29 01:23:07 -08:00
Visa Kopu
e48802ad29
Fixed reading from STDIN.
2012-11-29 10:51:15 +02:00
Mihai Bazon
13c4dfcabd
fix #55
2012-11-24 10:02:08 +02:00
Mihai Bazon
1abde9c8b0
v2.2.1
2012-11-23 10:25:44 +02:00
Mihai Bazon
4f555e2232
fix for https://github.com/mishoo/UglifyJS/issues/474
2012-11-23 10:20:00 +02:00
Mihai Bazon
642ba2e92c
rename the npm package to "uglify-js" and cli tool to "uglifyjs"
2012-11-21 13:27:03 +02:00
Mihai Bazon
089ac908b7
fix #51
2012-11-18 17:37:45 +02:00
Mihai Bazon
0d3fd2ef30
retain (1,eval) as is when it's the expression of an AST_Call
...
otherwise we change the meaning of eval from global to lexical.
2012-11-17 12:05:31 +02:00
Richard van Velzen
e98119496a
Add support for somewhat preserving line numbers.
...
Usage: uglifyjs2 -b "beautify=0,preserve_line=1" /path/to/js
ref #46
2012-11-14 15:30:18 +02:00
Mihai Bazon
bdfcbf496b
better solution for the last test in constant switch folding
2012-11-14 12:21:43 +02:00
Mihai Bazon
dba8da4800
optimize constant switch blocks
...
ref. mishoo/UglifyJS#441
2012-11-14 12:06:07 +02:00
Mihai Bazon
60c0f40250
Merge branch 'optimize_concat' of https://github.com/rvanvelzen/UglifyJS2 into rvanvelzen-optimize_concat
2012-11-13 14:38:55 +02:00
Mihai Bazon
e02771a5f2
don't change order in binary expressions if both operands have side effects
2012-11-13 14:32:07 +02:00
Richard van Velzen
f96f796f71
Add simple optimization for empty-string concats.
...
ref. #43
2012-11-12 15:41:03 +01:00
Mihai Bazon
a9fa178f86
v2.1.11
2012-11-12 13:24:52 +02:00
Mihai Bazon
53355bdb24
fix invalid AST produced by dropping unused variable
...
close #44
2012-11-12 13:23:57 +02:00
Mihai Bazon
f05c99d89f
Merge pull request #41 from Skalman/toString-patch
...
Convert x.toString() to ""+x instead of x+""
2012-11-12 00:47:56 -08:00
Dan Wolff
b49230ab8d
convert x.toString() to ""+x instead of x+""
...
In some places this can save one byte in whitespace, e.g. after return.
Example:
function f(arg) {
// return""+arg - no space between return and ""
return arg.toString();
}
2012-11-11 15:53:34 +02:00
Mihai Bazon
78856a3dab
declare dependency versions
...
close #40
2012-11-09 16:43:49 +02:00
Mihai Bazon
1e5e13ed81
AST_LabelRef no longer inherits from AST_SymbolRef
2012-11-08 15:39:14 +02:00
Mihai Bazon
64270b9778
v2.1.10
2012-11-08 12:33:27 +02:00
Mihai Bazon
e312c5c2a7
fix API breakage
...
close #36 , #38
2012-11-08 12:31:28 +02:00
Mihai Bazon
1a5fd3e052
optimization for if/break as first statement in a loop body
...
for(...; x; ...) if (y) break; → for(...; x&&!y; ...);
similarly for `while` and some combinations (i.e. the `break` appears in the
`else` clause, etc.)
2012-11-08 11:43:14 +02:00
Mihai Bazon
5a7e54cf72
ignore node_modules/
2012-11-07 15:27:12 +02:00
Mihai Bazon
39f8a62703
v2.1.9
2012-11-07 13:31:58 +02:00
Mihai Bazon
46be3f2bf1
fix another small regression
...
we do need parens here: `new (foo.bar().baz)`, but not here: `new foo.bar.baz`
2012-11-07 13:31:43 +02:00
Mihai Bazon
258b46f4dc
v2.1.8
2012-11-07 13:03:11 +02:00
Mihai Bazon
80da21dab4
fix regression from 5346fb94 (shouldn't parenthesize i++ in x[i++])
2012-11-07 13:02:51 +02:00
Mihai Bazon
bb0e4d7126
v2.1.7
2012-11-07 12:45:23 +02:00
Mihai Bazon
5276a4a873
add AST_Accessor and AST_SymbolAccessor node types
...
AST_Accessor will represent the function for a setter or getter. Since they
are not mangleable, and they should not introduce a name in scope, we have a
new node for their name (AST_SymbolAccessor) which doesn't inherit from
AST_SymbolDeclaration.
fix #37
2012-11-07 12:43:27 +02:00
Mihai Bazon
a1ae0c8609
parenthesize property access when it's the expression in New
...
refs #35
2012-11-07 12:26:33 +02:00
Mihai Bazon
a90c1aeafe
further fix for parens around New (refs #35 )
2012-11-07 11:49:06 +02:00
Mihai Bazon
ff388a8d2d
parenthesize a Call expression when its parent is New
...
fix #35
2012-11-07 11:36:15 +02:00
Mihai Bazon
5346fb94bb
add proper parens around unary expressions
...
fix #34
2012-11-07 11:23:50 +02:00
Mihai Bazon
a4f6d46118
add option to mangle names even if eval/with is in use
...
(for more fair comparison to Closure compiler)
2012-11-06 18:19:51 +02:00
Mihai Bazon
7f5f4d60b7
discard the hack that worked around the deprecation warning
...
(since the source-map module no longer uses require.js)
refs #9
2012-11-05 22:23:51 +02:00
Mihai Bazon
ffccb233e5
convert while into for
2012-11-05 16:01:20 +02:00
Mihai Bazon
fba0c1aafe
minor
2012-11-05 16:01:09 +02:00
Mihai Bazon
774f2ded94
minor optimization
...
for `==` or `!=` against a constant, prefer to display the constant first.
should help a bit after gzip, i.e.:
typeof foo=="undefined"
^^^^^^ ^^^^^^^^^^^^^
vs:
"undefined"==typeof foo
^^^^^^^^^^^^^^^^^^^ (longer sequence that could repeat)
idea stolen from closure.
2012-11-05 13:13:06 +02:00
Mihai Bazon
85af942d64
print final semicolon
...
close #28
2012-11-05 13:09:39 +02:00
Mihai Bazon
8413787efc
use a Dictionary object instead of plain object for hashes
...
to mitigate the `__proto__` issue
related to #30
2012-11-02 10:58:45 +02:00
Mihai Bazon
dde57452aa
v2.1.6
2012-11-01 16:55:10 +02:00
Mihai Bazon
cf409800be
it's safe to negate expression in !EXP only in boolean context
...
#kendo
2012-11-01 15:49:05 +02:00
Mihai Bazon
18270dd9f3
added unsafe_comps for negating <= with >
...
since it has the potential to break code, let's keep it disabled by default
2012-11-01 15:14:56 +02:00
Mihai Bazon
d4c25c571b
fix compressing UnaryPrefix
...
only try negating the expression if the operator is `!`
#kendo
2012-11-01 13:35:08 +02:00
Mihai Bazon
5248b79506
v2.1.5
2012-10-30 14:51:05 +02:00
Mihai Bazon
abe0ebbf02
don't move expressions containing the binary in operator into the for initializer
...
(opera can't parse it)
close #25
2012-10-30 14:50:47 +02:00
Mihai Bazon
0852f5595e
v2.1.4
2012-10-25 18:52:49 +03:00
Mihai Bazon
cb3cafa14d
cripple scope to make IE happy :-(
...
close #24
2012-10-25 18:52:35 +03:00
Mihai Bazon
202fb93799
test for fs.existsSync
2012-10-25 10:58:48 +03:00
Mihai Bazon
7b87d2ef83
v2.1.3
2012-10-24 09:41:40 +03:00
Mihai Bazon
70fd2b1f33
fix for if (...) return; else return ...;
...
(it was assumed that the first `return` always contains a value)
close #22
2012-10-24 09:33:32 +03:00
Mihai Bazon
30faaf13ed
more sequence optimizations (lift some sequences above binary/unary expressions so that we can avoid parens)
2012-10-22 11:58:06 +03:00
Mihai Bazon
41be8632d3
v2.1.2
2012-10-22 07:57:28 +03:00
Mihai Bazon
bee01dc1be
Merge branch 'master' of github.com:mishoo/UglifyJS2
2012-10-20 11:14:25 +03:00
Mihai Bazon
12f71e01d0
alternate hack to disable deprecation warning
...
ref #9 , close #20
2012-10-20 11:12:21 +03:00
Mihai Bazon
3a72deacab
Merge pull request #19 from SevInf/master
...
Allow to specify sourceRoot in minify
2012-10-19 04:29:40 -07:00
Mihai Bazon
fc8314e810
minor fix for dropping unused definitions.
...
function f(x, y) {
var g = function() { return h() };
var h = function() { return g() };
return x + y;
}
now compresses to `function f(x, y) { return x + y }`
2012-10-19 12:57:29 +03:00
Sergej Tatarincev
11dffe950e
Add sourceRoot option to minify
2012-10-19 12:35:19 +03:00
Mihai Bazon
6f45928a73
add fromString argument to UglifyJS.minify (allows to pass the source
...
code, instead of file names, as first argument).
close #17
2012-10-18 15:49:15 +03:00
Mihai Bazon
afb7faa6fa
more optimizations for some break/continue cases
2012-10-18 15:14:57 +03:00
Mihai Bazon
6aa56f92fe
v2.1.1
2012-10-18 10:54:30 +03:00
Mihai Bazon
4fe4257c69
fix --comments ( close #16 )
2012-10-18 10:54:10 +03:00
Mihai Bazon
a5e75c5a21
v2.1.0
2012-10-17 22:00:11 +03:00
Mihai Bazon
4482fdd63f
added note about API docs and online demo
2012-10-17 21:59:36 +03:00
Mihai Bazon
253bd8559b
more small optimizations
...
(unlikely to help for hand-written code)
2012-10-17 21:57:08 +03:00
Mihai Bazon
6a099fba66
define aborts on AST_If: true if both branches abort
2012-10-17 16:17:14 +03:00
Mihai Bazon
a21f3c6cdd
employ a better parser for command-line arguments
...
to support passing commas in strings in for example:
uglifyjs2 -cd TEST="'a,b'" <<EOF
console.log(TEST);
EOF
→ console.log("a,b")
close #14
2012-10-17 15:56:45 +03:00
Mihai Bazon
8f66458598
the sort option is broken anyway, removed it
...
we need to mangle names from outermost to innermost scope; mangling names
from inner scopes before we got to the outer scope won't work correctly,
therefore sorting doesn't make sense.
2012-10-17 15:24:47 +03:00
Mihai Bazon
6472f9410e
add semicolons option in the code generator (default: true)
...
pass `false` to separate statements with newlines instead of semicolons
2012-10-17 14:52:08 +03:00
Mihai Bazon
8957b3a694
fix small glitches in source map generation
2012-10-16 15:54:12 +03:00
Mihai Bazon
1ffd526554
disable warnings in the test suite
2012-10-13 15:18:11 +03:00
Mihai Bazon
fcc0229087
drop unused function arguments
...
also add test for "drop_unused" (the last one fails for now)
2012-10-13 15:04:44 +03:00
Mihai Bazon
b071c9d079
add parens to AST_Seq whose parent is AST_Unary
2012-10-13 14:32:08 +03:00
Mihai Bazon
851b48e4a3
fix compressing benchmark.js (it tried to evaluate a statement)
...
the following code in benchmark.js triggered the issue:
support.decompilation = Function(
'return (' + (function(x) { return { 'x': '' + (1 + x) + '', 'y': 0 }; }) + ')'
)()(0).x === '1';
technically that could be resolved into a constant expression, but seems
it's being used here for browser bugs detection :-\
2012-10-13 12:57:10 +03:00
Mihai Bazon
708abb1ab1
minor
2012-10-13 12:42:01 +03:00
Mihai Bazon
370d3e0917
fix regression from fb5c01c073
...
is_digit takes a char code now, not a string
2012-10-13 12:24:27 +03:00
Mihai Bazon
b51fe0dcc3
fix end tokens in spidermonkey ast import
2012-10-13 11:37:58 +03:00
Mihai Bazon
70d205c447
update for acorn
2012-10-13 00:35:24 +03:00
Mihai Bazon
8149be551e
minor
2012-10-12 14:55:54 +03:00
Mihai Bazon
ba3df646c0
actually enable the option that drops unused names in the test of issue #12
2012-10-12 11:41:48 +03:00
Mihai Bazon
1b6f8d463f
remove the $self hack
...
operations are destructive anyway, so there's no point to clone the nodes in
the transformer. speed++
2012-10-12 11:07:35 +03:00
Mihai Bazon
731fa9c236
add test for issue #12
2012-10-12 10:49:48 +03:00
Mihai Bazon
72cb5328ee
fix in_boolean_context() (two tests were broken)
2012-10-12 10:49:41 +03:00
Mihai Bazon
fc39553714
use AST_Lambda for object setters/getters
...
so that the optimization that drops the name if unused doesn't apply.
close #12
2012-10-12 10:11:01 +03:00
Mihai Bazon
d9d67317b1
fix pos in syntax error exception
2012-10-11 15:25:38 +03:00
Mihai Bazon
fb5c01c073
stealing more hacks from acorn in the name of speed
2012-10-11 15:17:42 +03:00
Mihai Bazon
f4584af42c
using makeComparator from acorn to generate functions that tests whether a
...
string is keyword, reserved etc.
speeds up the parser a bit, though not spectacular.. still far from acorn.
2012-10-11 11:52:05 +03:00
Mihai Bazon
172aa7a93c
cleanup
...
- use prototype-less objects where feasible (minor speed improvement)
- get rid of HOP
2012-10-11 11:07:42 +03:00
Mihai Bazon
5053a29bc0
fix propagation of symbol references
2012-10-11 10:28:48 +03:00
Mihai Bazon
f322b32e0e
disable warnings by default in minify (pass warnings: true to enable)
...
close #11
2012-10-11 09:31:17 +03:00
Mihai Bazon
9cdaed9860
fix node name
2012-10-10 23:16:40 +03:00
Mihai Bazon
dacce1b1fa
seems cleaner if AST_Label doesn't inherit from AST_SymbolDeclaration
2012-10-10 11:37:51 +03:00
Mihai Bazon
f26f3b44bc
small improvements in wrap_commonjs:
...
- use MAP.splice instead of a BlockStatement to inject code (avoids some
warnings in the linter)
- use the original symbol in exports, so that we get the proper source mapping
2012-10-10 11:28:05 +03:00
Mihai Bazon
c5ecbfc756
drop unused variable
2012-10-10 11:27:06 +03:00
Mihai Bazon
3799ac8973
add --lint and display {file} in scope_warnings
2012-10-10 11:26:59 +03:00
Mihai Bazon
86182afa7f
minor
2012-10-09 22:56:59 +03:00
Mihai Bazon
4807c6e756
update on @cc_on
2012-10-09 19:09:11 +03:00
Mihai Bazon
a84d07e312
add AST_Infinity node
2012-10-09 18:35:53 +03:00
Mihai Bazon
88beddfa91
make --comments keep @cc_on too
2012-10-09 18:25:00 +03:00
Mihai Bazon
1b0aab2ce9
added $propdoc to AST nodes and some cleanups
...
hopefully we can make the AST documentation self-generating
2012-10-09 18:20:39 +03:00
Mihai Bazon
9ead49641d
minor AST cleanup (AST_BlockStatement may inherit from AST_Block)
2012-10-09 13:59:17 +03:00
Mihai Bazon
e1862cd36f
add --ast-help
...
displays a rather cruel description of the AST classes, derived
directly from the node definitions.
2012-10-09 13:21:21 +03:00
Mihai Bazon
2c025f23db
fix detecting symbols in use
2012-10-09 13:13:55 +03:00
Mihai Bazon
9dfcd47ec8
Merge pull request #8 from SevInf/master
...
Fix crash in minify function
2012-10-09 03:04:33 -07:00
Sergej Tatarincev
203ecaf85b
Fix nodejs minify without inSourceMap exception
...
When inSourceMap is omitted fs.readFile throws exception. Fixed version
calls fs.readFile only when inSourceMap argument is present
2012-10-09 12:52:28 +03:00
Mihai Bazon
c967f0b0fe
fix inSourceMap in minify (should read the file)
2012-10-08 21:22:20 +03:00
Mihai Bazon
dfc04e6677
add simple API wrapper: UglifyJS.minify
...
(refs #7 )
2012-10-08 21:15:59 +03:00
Mihai Bazon
42ea3c95e0
added some basic API doc
2012-10-08 14:30:34 +03:00
Mihai Bazon
d4970b35ac
should not expose base54.sort() in the API docs, I think
2012-10-08 13:37:27 +03:00
Mihai Bazon
dd8286bce1
added --self to easily get a browser-runnable version of UglifyJS
2012-10-08 12:55:18 +03:00
Mihai Bazon
093a9031dc
eliminate redundant directives in the same scope
2012-10-08 12:53:17 +03:00
Mihai Bazon
80a18fe2fa
for certain nodes that we invent we might not have a original source file to
...
map from, so just use "?". and in any case, don't fail hard when addMapping throws.
2012-10-08 12:52:25 +03:00
Mihai Bazon
fe1411bba1
fix typo
2012-10-05 23:10:52 +03:00
Mihai Bazon
455ac5435d
remove unused code
2012-10-05 22:59:05 +03:00
Mihai Bazon
4a2b91220a
minor
2012-10-05 20:24:56 +03:00
Mihai Bazon
a1e0885930
replace (function(){ ...no side effects ... })() with undefined.
2012-10-05 16:51:16 +03:00
Mihai Bazon
7ae09120ed
prevent mangling only when eval is *called*, not when it's just referenced
2012-10-05 16:17:31 +03:00
Mihai Bazon
42c25d901c
add note about installation
2012-10-05 15:31:55 +03:00