Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uglify 3 merge #6

Open
wants to merge 2,712 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
2712 commits
Select commit Hold shift + click to select a range
fbc5ecf
fix corner case in `unused` (#5361)
alexlamsl Feb 19, 2022
212ce46
fix corner case in `evaluate` (#5363)
alexlamsl Feb 20, 2022
d5afe16
enhance `booleans` & `evaluate` (#5364)
alexlamsl Feb 20, 2022
dd3b81d
enhance `booleans` (#5365)
alexlamsl Feb 21, 2022
313e497
fix corner case in `inline` (#5367)
alexlamsl Feb 21, 2022
a9d0dde
fix corner case in `directives` & `expression` (#5369)
alexlamsl Feb 23, 2022
f8edf05
v3.15.2
alexlamsl Feb 26, 2022
fdbbef2
enhance `conditionals` (#5371)
alexlamsl Mar 2, 2022
104d385
fix corner case in `ie` (#5372)
alexlamsl Mar 2, 2022
e2b0081
fix corner cases in `inline` (#5375)
alexlamsl Mar 3, 2022
042c228
fix corner case in `inline` (#5377)
alexlamsl Mar 5, 2022
12a6728
fix corner case in `hoist_vars` (#5379)
alexlamsl Mar 6, 2022
7aba2dc
v3.15.3
alexlamsl Mar 10, 2022
01b8407
fix corner case in `evaluate` (#5381)
alexlamsl Mar 12, 2022
46570a4
fix corner case in `side_effects` (#5383)
alexlamsl Mar 12, 2022
5e30f3a
fix corner case in `inline` (#5386)
alexlamsl Mar 20, 2022
a8e040b
fix corner case in `properties` (#5388)
alexlamsl Mar 20, 2022
c624b43
fix corner case in `collapse_vars` (#5390)
alexlamsl Mar 22, 2022
15a4074
fix corner case in `unused` (#5392)
alexlamsl Mar 27, 2022
8922f08
fix corner cases in `keep_fnames` (#5393)
alexlamsl Mar 28, 2022
e3d328f
fix corner case in `collapse_vars` (#5395)
alexlamsl Mar 29, 2022
fb5e08e
fix corner case in `collapse_vars` (#5397)
alexlamsl Mar 31, 2022
584e253
enahnce `collapse_vars` (#5398)
alexlamsl Apr 1, 2022
8065e27
patch `export default` within sandbox correctly (#5400)
alexlamsl Apr 2, 2022
224c91b
fix corner case in `inline` (#5402)
alexlamsl Apr 2, 2022
696a20f
patch `export default` within sandbox correctly (#5404)
alexlamsl Apr 3, 2022
d75a946
fix corner case in `reduce_vars` (#5406)
alexlamsl Apr 3, 2022
ccd77d7
fix corner case in `reduce_vars` (#5408)
alexlamsl Apr 5, 2022
998c979
fix corner case in `inline` (#5410)
alexlamsl Apr 6, 2022
21bd4c4
fix corner cases in `collapse_vars` & `hoist_vars` (#5412)
alexlamsl Apr 6, 2022
3671894
rename reserved keyword `await` (#5413)
David-Development Apr 7, 2022
4a44d95
v3.15.4
alexlamsl Apr 9, 2022
950609f
fix corner case in `inline` (#5415)
alexlamsl Apr 12, 2022
5ebfa78
fix corner case with `arguments` (#5417)
alexlamsl Apr 14, 2022
e396912
suppress false positives with `export` & `import` (#5418)
alexlamsl Apr 15, 2022
20252c6
fix corner case in `merge_vars` (#5421)
alexlamsl Apr 17, 2022
1bc0fcc
improve `ufuzz` resilience (#5422)
alexlamsl Apr 18, 2022
fbdb7ee
fix corner case in `merge_vars` (#5424)
alexlamsl Apr 19, 2022
a0c0c29
fix corner case in `assignments` (#5426)
alexlamsl Apr 19, 2022
cb870f6
document v8 quirks (#5430)
alexlamsl Apr 20, 2022
1a4e99d
avoid v8 quirks in `ufuzz` (#5431)
alexlamsl Apr 25, 2022
89a35f9
fix corner case in `reduce_vars` (#5435)
alexlamsl May 6, 2022
35c2149
fix corner case in `merge_vars` (#5437)
alexlamsl May 7, 2022
a9ef659
v3.15.5
alexlamsl May 10, 2022
8946c87
suppress invalid test case generation (#5439)
alexlamsl May 11, 2022
e31bbe3
improve compatibility with `use strict` (#5440)
alexlamsl May 14, 2022
7db2ada
fix corner case in `hoist_props` (#5442)
alexlamsl May 15, 2022
31167da
avoid `extends` error in test cases (#5443)
alexlamsl May 15, 2022
fc6a668
fix corner case in `unused` (#5446)
alexlamsl May 16, 2022
3aa92c7
avoid `extends` error in `ufuzz` (#5447)
alexlamsl May 16, 2022
f70462a
fix corner case in `merge_vars` (#5445)
alexlamsl May 16, 2022
a968ddc
avoid webpack bug in web-tooling-benchmark (#5450)
alexlamsl May 17, 2022
27727e6
fix corner cases in `unused` (#5449)
alexlamsl May 17, 2022
cb6dd34
avoid broken versions of Node.js (#5453)
alexlamsl May 17, 2022
63f16e4
fix corner case in `merge_vars` (#5452)
alexlamsl May 17, 2022
33c9c48
fix corner case in `hoist_props` & `unused` (#5455)
alexlamsl May 18, 2022
27aa85f
fix corner cases in `merge_vars` (#5457)
alexlamsl May 18, 2022
01f1e3f
avoid v8 quirks in `ufuzz` (#5458)
alexlamsl May 19, 2022
1668bc3
improve `ufuzz` coverage (#5459)
alexlamsl May 20, 2022
59edda6
suppress false positives in `ufuzz` (#5460)
alexlamsl May 21, 2022
c2ca7b7
drop unused `extends` properly (#5461)
alexlamsl May 22, 2022
d4caa97
fix corner case in `reduce_vars` (#5464)
alexlamsl May 23, 2022
740f93f
fix corner case in `merge_vars` (#5466)
alexlamsl May 23, 2022
c82fc1e
implement `--module` (#5462)
alexlamsl May 23, 2022
a1cff23
suppress false positives in `ufuzz` (#5467)
alexlamsl May 24, 2022
5979b19
suppress false positives in `ufuzz` (#5468)
alexlamsl May 25, 2022
59b23b8
fix corner case in `booleans` (#5470)
alexlamsl May 25, 2022
0dbf2b1
suppress false positives in `ufuzz` (#5473)
alexlamsl May 26, 2022
94aae05
fix corner case in `merge_vars` (#5472)
alexlamsl May 26, 2022
2152f00
enhance `inline` & `module` (#5475)
alexlamsl May 27, 2022
8bc03dc
fix corner case in `keep_fargs` (#5477)
alexlamsl May 29, 2022
3c9e169
fix corner case in `side_effects` (#5479)
alexlamsl May 30, 2022
ad3a331
fix corner case in `collapse_vars` (#5482)
alexlamsl Jun 1, 2022
40e669e
docs: toplevel `webkit` option sets `compress.webkit` as well (#5480)
cyjake Jun 1, 2022
ad5f5ef
fix corner case in `webkit` (#5483)
alexlamsl Jun 1, 2022
a025392
fix corner case in `comparisons` (#5486)
alexlamsl Jun 4, 2022
25441d4
v3.16.0
alexlamsl Jun 6, 2022
d2bd0d1
support top-level `await` (#5487)
alexlamsl Jun 6, 2022
88b4283
support `class static` initialization block (#5488)
alexlamsl Jun 6, 2022
0066576
fix corner case in `side_effects` (#5490)
alexlamsl Jun 6, 2022
0c7b016
fix corner case in `inline` & `module` (#5492)
alexlamsl Jun 6, 2022
be53c48
fix corner case in `collapse_vars` (#5494)
alexlamsl Jun 6, 2022
44e5e99
parse directives within arrow functions correctly (#5496)
alexlamsl Jun 7, 2022
a758b40
suppress false positives in `ufuzz` (#5497)
alexlamsl Jun 7, 2022
123f9cf
fix corner case in `hoist_props` (#5499)
alexlamsl Jun 7, 2022
f749863
document ECMAScript quirks (#5501)
alexlamsl Jun 8, 2022
2501797
fix corner case in `collapse_vars` (#5503)
alexlamsl Jun 9, 2022
053cb27
fix corner case in `collapse_vars` (#5505)
alexlamsl Jun 10, 2022
99946a3
fix corner case in `dead_code` (#5507)
alexlamsl Jun 11, 2022
139fad0
fix corner cases with `instanceof` (#5509)
alexlamsl Jun 12, 2022
5d69545
enhance `unsafe_comps` (#5510)
alexlamsl Jun 12, 2022
b6f250f
enhance `unused` (#5511)
alexlamsl Jun 12, 2022
4382bfe
fix corner case in `collapse_vars` (#5513)
alexlamsl Jun 12, 2022
74e36e4
v3.16.1
alexlamsl Jun 16, 2022
933ca9d
fix corner case in `reduce_vars` (#5517)
alexlamsl Jun 18, 2022
9f57920
enhance `if_return` (#5518)
alexlamsl Jun 23, 2022
8b46433
enhance `dead_code` & `if_return` (#5520)
alexlamsl Jun 26, 2022
fcc87ed
fix corner cases in `dead_code` & `if_return` (#5525)
alexlamsl Jun 26, 2022
f1b3e9d
fix corner case in `inline` (#5527)
alexlamsl Jun 26, 2022
e1b03d0
fix corner case in `inline` (#5529)
alexlamsl Jun 28, 2022
2426657
fix corner case in `inline` (#5532)
alexlamsl Jun 29, 2022
4c227cc
fix corner cases in `inline` & `unused` (#5534)
alexlamsl Jun 30, 2022
51deeff
enhance `inline` (#5535)
alexlamsl Jul 1, 2022
3596b4f
fix corner case in `inline` (#5537)
alexlamsl Jul 1, 2022
aa2a9fb
v3.16.2
alexlamsl Jul 4, 2022
0207b46
enhance `if_return` & `inline` (#5538)
alexlamsl Jul 6, 2022
c8d98f4
enhance `if_return` (#5541)
alexlamsl Jul 6, 2022
d89f096
enhance `conditionals` (#5542)
alexlamsl Jul 7, 2022
3dcf098
fix corner cases in `conditionals` & `switches` (#5545)
alexlamsl Jul 7, 2022
902292f
fix corner case in `conditionals` (#5547)
alexlamsl Jul 7, 2022
b92a89f
fix corner case in `conditionals` (#5548)
alexlamsl Jul 7, 2022
80787ff
minor cleanups (#5549)
alexlamsl Jul 7, 2022
b2bc2e1
parse `export` & `import` statements correctly (#5550)
alexlamsl Jul 7, 2022
0b808f6
parse `import` expressions correctly (#5551)
alexlamsl Jul 8, 2022
38bd4f6
fix corner cases in `collapse_vars` (#5553)
alexlamsl Jul 9, 2022
4778cf8
upgrade AST<->ESTree translation (#5554)
alexlamsl Jul 10, 2022
154edf0
enhance `collapse_vars` (#5555)
alexlamsl Jul 11, 2022
24443b6
enhance `collapse_vars` (#5556)
alexlamsl Jul 12, 2022
5792f30
fix corner case in `evaluate` (#5559)
alexlamsl Jul 15, 2022
685ab35
document v8 quirks (#5565)
alexlamsl Jul 16, 2022
ec4558b
fix corner cases with parameter scope (#5567)
alexlamsl Jul 17, 2022
f0120e9
fix corner case `collapse_vars` (#5569)
alexlamsl Jul 18, 2022
d67daa8
support string namespace in `import` & `export` (#5570)
alexlamsl Jul 19, 2022
56e9454
fix corner case with spread syntax (#5572)
alexlamsl Jul 22, 2022
b371dc2
fix corner case in `collapse_vars` (#5574)
alexlamsl Jul 22, 2022
fc7678c
v3.16.3
alexlamsl Jul 24, 2022
996836b
enhance `conditionals` (#5575)
alexlamsl Jul 25, 2022
da930af
fix corner case in `inline` (#5577)
alexlamsl Jul 26, 2022
db6fd6d
enhance `side_effects` (#5578)
alexlamsl Jul 27, 2022
513995f
fix corner case in `inline` & `reduce_vars` (#5579)
alexlamsl Jul 28, 2022
937a672
fix corner case in `mangle` (#5581)
alexlamsl Jul 28, 2022
08c386f
enhance `if_return` (#5582)
alexlamsl Jul 29, 2022
ab5c7e6
fix corner cases in `if_return` (#5585)
alexlamsl Jul 30, 2022
6667440
enhance `if_return` (#5588)
alexlamsl Jul 30, 2022
e39f33e
fix corner cases in `if_return` (#5590)
alexlamsl Jul 30, 2022
672cdfa
enhance `conditionals` (#5593)
alexlamsl Aug 2, 2022
64e3cee
enhance `if_return` (#5594)
alexlamsl Aug 2, 2022
8076d66
fix corner case in `if_return` (#5596)
alexlamsl Aug 3, 2022
884842c
fix corner case in `if_return` (#5598)
alexlamsl Aug 3, 2022
41b65af
fix corner cases with `static` modifier (#5599)
alexlamsl Aug 4, 2022
8a07f12
expand `builtins` exclusions (#5601)
alexlamsl Aug 5, 2022
a9d9af5
fix corner case in `if_return` (#5603)
alexlamsl Aug 5, 2022
387c69b
minor clean-ups (#5604)
alexlamsl Aug 6, 2022
07953b3
update dependencies (#5605)
alexlamsl Aug 6, 2022
f451a7a
implement `--expression` (#5607)
alexlamsl Aug 7, 2022
2c3c4ec
improve source mapping accuracy (#5608)
alexlamsl Aug 8, 2022
c32fe26
fix corner case in `merge_vars` (#5609)
alexlamsl Aug 9, 2022
5a4cd09
enhance `inline` (#5610)
alexlamsl Aug 9, 2022
9d37276
tweak `ufuzz` test case generation (#5611)
alexlamsl Aug 9, 2022
6c0e522
workaround sporadic I/O lags in GitHub Actions (#5612)
alexlamsl Aug 9, 2022
503532c
workaround sporadic I/O lags in GitHub Actions (#5613)
alexlamsl Aug 9, 2022
612701a
tweak `ufuzz` test case generation (#5615)
alexlamsl Aug 11, 2022
dd90135
fix corner case in `pure_getters` (#5617)
alexlamsl Aug 13, 2022
8602d1b
v3.17.0
alexlamsl Aug 16, 2022
887e086
fix corner case in `if_return` (#5620)
alexlamsl Aug 17, 2022
d6d2f5c
enhance `reduce_vars` (#5616)
alexlamsl Aug 17, 2022
9eea3a6
provide diagnostic details on `--mangle-props` (#5621)
alexlamsl Aug 17, 2022
ac002b6
fix corner case in `reduce_vars` (#5624)
alexlamsl Aug 18, 2022
4653e8a
improve diagnostics on `top_retain` & `mangle.properties` (#5622)
alexlamsl Aug 18, 2022
4db8106
fix corner case in `hoist_vars` (#5627)
alexlamsl Aug 23, 2022
9cdc1ef
fix corner case in `unused` (#5629)
alexlamsl Aug 24, 2022
41a7000
workaround quirks from GitHub Actions (#5630)
alexlamsl Aug 25, 2022
965e976
workaround quirks from Node.js (#5631)
alexlamsl Aug 25, 2022
cd97237
workaround quirks from GitHub Actions (#5632)
alexlamsl Aug 26, 2022
7c52af0
workaround quirks from npm (#5633)
alexlamsl Aug 26, 2022
15b608f
fix corner case in `inline` (#5635)
alexlamsl Aug 29, 2022
10bc86b
enhance `reduce_vars` (#5636)
alexlamsl Aug 30, 2022
d530f93
enhance `awaits` (#5637)
alexlamsl Aug 30, 2022
f63b7b0
fix corner case in `collapse_vars` (#5639)
alexlamsl Aug 31, 2022
e012f04
tweak test cases (#5640)
alexlamsl Aug 31, 2022
78f354b
fix corner case in `dead_code` (#5642)
alexlamsl Sep 3, 2022
1d42e9a
fix corner case in `collapse_vars` (#5644)
alexlamsl Sep 4, 2022
535212c
allow glob-style input for `--in-situ` (#5646)
alexlamsl Sep 5, 2022
318206d
suppress false positives in `ufuzz` (#5647)
alexlamsl Sep 5, 2022
32bd65a
support ExtendScript parser quirks (#5648)
alexlamsl Sep 6, 2022
4e4a2f8
fix corner case in `if_return` (#5650)
alexlamsl Sep 8, 2022
5b5f6e3
fix corner case in `ie` (#5652)
alexlamsl Sep 8, 2022
02d966d
fix corner case in `hoist_props` (#5654)
alexlamsl Sep 8, 2022
9dec612
enhance `inline` (#5655)
alexlamsl Sep 8, 2022
88dfc49
fix corner case in `merge_vars` (#5657)
alexlamsl Sep 9, 2022
edf1bf1
enhance `varify` (#5658)
alexlamsl Sep 10, 2022
fa2511f
tweak `ufuzz` job scheduling (#5659)
alexlamsl Sep 10, 2022
e0b302d
fix corner case in `merge_vars` (#5661)
alexlamsl Sep 14, 2022
001f6f9
fix corner case in `inline` (#5664)
alexlamsl Sep 17, 2022
e4bff31
fix corner case in `conditionals` (#5667)
alexlamsl Sep 17, 2022
eb22f01
fix corner case in `unused` (#5668)
alexlamsl Sep 17, 2022
5ac6ec5
improve usability of `--mangle-props` (#5669)
alexlamsl Sep 18, 2022
3a6e581
v3.17.1
alexlamsl Sep 19, 2022
9efa02a
fix corner case in `assignments` (#5671)
alexlamsl Sep 20, 2022
63b04a6
minor tweaks (#5672)
alexlamsl Sep 21, 2022
43ec350
fix corner case in `conditionals` (#5674)
alexlamsl Sep 22, 2022
37d3e4f
fix corner case in `if_return` (#5675)
alexlamsl Sep 22, 2022
9ac3879
fix corner case in `conditionals` (#5676)
alexlamsl Sep 23, 2022
f9b811c
v3.17.2
alexlamsl Sep 25, 2022
8ca4007
workaround GitHub Actions quirks (#5678)
alexlamsl Sep 26, 2022
8e65413
fix corner cases in `conditionals` & `if_return` (#5680)
alexlamsl Sep 26, 2022
3fa2086
improve usability of `mangle.properties` (#5683)
alexlamsl Sep 27, 2022
a570c00
fix corner case in `conditionals` & `if_return` (#5685)
alexlamsl Sep 27, 2022
bd5fc4c
implement `mangle.properties.domprops` (#5686)
alexlamsl Sep 29, 2022
e1e3516
fix corner case in `reduce_vars` (#5687)
alexlamsl Sep 29, 2022
6cdc035
fix corner case in `if_return` (#5689)
alexlamsl Sep 29, 2022
80fc862
enhance `assignments`, `booleans` & `conditionals` (#5691)
alexlamsl Oct 3, 2022
140e4e0
fix corner case in `inline` (#5693)
alexlamsl Oct 3, 2022
dabcc39
fix corner cases in `booleans` & `conditionals` (#5695)
alexlamsl Oct 3, 2022
58d997a
fix corner case in `booleans` & `conditionals` (#5696)
alexlamsl Oct 4, 2022
be8ccc3
fix corner case in `varify` (#5698)
alexlamsl Oct 4, 2022
94a954c
minor clean-ups (#5701)
alexlamsl Oct 5, 2022
4a1da49
v3.17.3
alexlamsl Oct 5, 2022
a391897
enhance `conditionals` (#5703)
alexlamsl Oct 8, 2022
ed7051b
enhance `side_effects` & `strings` (#5704)
alexlamsl Oct 10, 2022
bccb1c3
fix corner case in `unused` (#5706)
alexlamsl Oct 10, 2022
7edd10e
fix corner case in `unused` (#5708)
alexlamsl Oct 10, 2022
5411360
fix corner case in `if_return` (#5711)
alexlamsl Oct 13, 2022
5a5200d
fix corner case in `conditionals` (#5713)
alexlamsl Oct 14, 2022
8319bad
fix corner case in `merge_vars` (#5715)
alexlamsl Oct 17, 2022
19c471c
fix corner cases in `reduce_vars` (#5717)
alexlamsl Oct 19, 2022
fb1bff2
v3.17.4
alexlamsl Oct 23, 2022
30bf068
fix corner case in `collapse_vars` (#5720)
alexlamsl Oct 24, 2022
7270671
fix corner case in `conditionals` (#5723)
alexlamsl Oct 28, 2022
f40dbd6
fix corner case in `inline` & `unused` (#5725)
alexlamsl Oct 29, 2022
8d28052
fix corner cases in `evaluate` & `side_effects` (#5726)
alexlamsl Nov 1, 2022
2b1c321
fix corner case in `evaluate` (#5729)
alexlamsl Nov 3, 2022
e37a148
fix corner case in `reduce_vars` (#5731)
alexlamsl Nov 3, 2022
7f424a5
suppress false positives in `ufuzz` (#5734)
alexlamsl Nov 14, 2022
1d400f1
fix corner case in `inline` (#5736)
alexlamsl Nov 14, 2022
21aff99
enhance `varify` (#5737)
alexlamsl Nov 21, 2022
68d62a8
enable `--module` by default (#5738)
alexlamsl Nov 21, 2022
e5cbd3e
enhance `join_vars` (#5739)
alexlamsl Nov 22, 2022
24c3db1
minor lints (#5740)
alexlamsl Nov 22, 2022
aef7065
fix corner case in `inline` (#5742)
alexlamsl Nov 22, 2022
4e7744a
minor lints (#5744)
alexlamsl Nov 22, 2022
2352909
fix corner case in `join_vars` (#5746)
alexlamsl Nov 23, 2022
548f093
fix corner case in `collapse_vars` (#5748)
alexlamsl Nov 30, 2022
574ca47
fix corner case in `yields` (#5750)
alexlamsl Nov 30, 2022
59e3855
improve interoperability of custom `Error`s (#5752)
alexlamsl Dec 1, 2022
650e63c
improve usability (#5753)
alexlamsl Dec 2, 2022
404794f
fix corner case in `if_return` (#5755)
alexlamsl Dec 2, 2022
0cbd5ea
fix corner case in `join_vars` & `loops` (#5757)
alexlamsl Dec 3, 2022
17c3ae6
improve usability (#5758)
alexlamsl Dec 4, 2022
dd88f38
fix corner case in `inline` (#5760)
alexlamsl Dec 7, 2022
78242ff
minor lints (#5761)
alexlamsl Dec 8, 2022
797184f
improve CLI interoperability (#5762)
alexlamsl Dec 11, 2022
f2b6f1d
improve `--reduce-test` (#5763)
alexlamsl Dec 13, 2022
c911704
fix corner case in `functions` & `inline` (#5767)
alexlamsl Dec 27, 2022
358faaa
fix corner case in `merge_vars` (#5771)
alexlamsl Jan 4, 2023
f07dc5c
fix corner case in `merge_vars` (#5773)
alexlamsl Jan 7, 2023
57dd3f6
fix corner case in `evaluate` (#5775)
alexlamsl Jan 7, 2023
a437a61
fix corner case in `reduce_vars` (#5778)
alexlamsl Jan 16, 2023
f0ca9cf
fix corner case in `collapse_vars` (#5780)
alexlamsl Jan 16, 2023
e2d8a36
Merge in Uglify master and modernize
mjpieters Nov 3, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix corner case in hoist_vars (mishoo#5379)
alexlamsl authored Mar 6, 2022
commit 12a6728c4ea72d9caebafc73ff552552ba6f1b54
47 changes: 24 additions & 23 deletions lib/compress.js
Original file line number Diff line number Diff line change
@@ -7844,15 +7844,15 @@ Compressor.prototype.compress = function(node) {
&& !consts.has(sym.name)
&& self.find_variable(sym.name) === sym.definition();
})) return node;
node.definitions.forEach(function(def) {
vars.set(def.name.name, def);
node.definitions.forEach(function(defn) {
vars.set(defn.name.name, defn);
++vars_found;
});
var seq = node.to_assignments();
if (p instanceof AST_ForEnumeration && p.init === node) {
if (seq) return seq;
var def = node.definitions[0].name;
return make_node(AST_SymbolRef, def, def);
var sym = node.definitions[0].name;
return make_node(AST_SymbolRef, sym, sym);
}
if (p instanceof AST_For && p.init === node) return seq;
if (!seq) return in_list ? List.skip : make_node(AST_EmptyStatement, node);
@@ -7867,21 +7867,22 @@ Compressor.prototype.compress = function(node) {
self.transform(tt);
if (vars_found > 0) {
// collect only vars which don't show up in self's arguments list
var defs = [];
var defns = [];
if (self instanceof AST_Lambda) self.each_argname(function(argname) {
vars.del(argname.name);
});
vars.each(function(def, name) {
def = def.clone();
def.value = null;
defs.push(def);
vars.set(name, def);
vars.each(function(defn, name) {
defn = defn.clone();
defn.name = defn.name.clone();
defn.value = null;
defns.push(defn);
vars.set(name, defn);
defn.name.definition().orig.unshift(defn.name);
});
if (defs.length > 0) {
if (defns.length > 0) {
// try to merge in assignments
insert_vars(self.body);
defs = make_node(AST_Var, self, { definitions: defs });
hoisted.push(defs);
hoisted.push(make_node(AST_Var, self, { definitions: defns }));
}
}
self.body = dirs.concat(hoisted, self.body);
@@ -7895,13 +7896,13 @@ Compressor.prototype.compress = function(node) {
&& expr.operator == "="
&& (sym = expr.left) instanceof AST_Symbol
&& vars.has(sym.name)) {
var def = vars.get(sym.name);
if (def.value) break;
var defn = vars.get(sym.name);
if (defn.value) break;
var value = expr.right;
if (value instanceof AST_Sequence) value = value.clone();
def.value = value;
remove(defs, def);
defs.push(def);
defn.value = value;
remove(defns, defn);
defns.push(defn);
body.shift();
continue;
}
@@ -7910,11 +7911,11 @@ Compressor.prototype.compress = function(node) {
&& assign.operator == "="
&& (sym = assign.left) instanceof AST_Symbol
&& vars.has(sym.name)) {
var def = vars.get(sym.name);
if (def.value) break;
def.value = assign.right;
remove(defs, def);
defs.push(def);
var defn = vars.get(sym.name);
if (defn.value) break;
defn.value = assign.right;
remove(defns, defn);
defns.push(defn);
stat.body = make_sequence(expr, expr.expressions.slice(1));
continue;
}
31 changes: 31 additions & 0 deletions test/compress/hoist_vars.js
Original file line number Diff line number Diff line change
@@ -499,3 +499,34 @@ issue_5195: {
}
expect_stdout: "[object Object]"
}

issue_5378: {
options = {
hoist_vars: true,
inline: true,
toplevel: true,
}
input: {
var a = 2;
while (a--)
(function() {
var b;
var c;
while (console.log(b));
--b;
})();
}
expect: {
var a = 2;
while (a--) {
b = void 0;
var b, c;
while (console.log(b));
--b;
}
}
expect_stdout: [
"undefined",
"undefined",
]
}