We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
// original code // (beautified) var _calls_ = 10, a = 100, b = 10, c = 0; function f0(b_2, b_1, a_1) { try { { var let_2 = function f1() { try { { var brake4 = 5; while ([ ..."" + b_1 ] && --brake4 > 0) { var brake5 = 5; do { L13363: { const arguments_1 = (c = c + 1) + ((c = 1 + c, ((b_1 && (b_1[c = 1 + c, "a" < -3 ^ [ , 0 ][1] <= "b" && ("" << 25) / (2 == ([ , 0 ].length === 2))] += -1 || "undefined")) === "function" - []) / ("object" >> ([ , 0 ].length === 2) >> (-5 < 22))) ? (c = 1 + c, (-4 >= true) >> (Infinity != Infinity) >> (2 && 25) / ("c" % 1)) : (c = 1 + c, b_1 && (b_1.null += (-3 == "") < (b_2 && (b_2.set = [] >> {})) >= /[a2][^e]+$/ + undefined - undefined / 38..toString()))); let arguments = delete b; c = 1 + c, (undefined >= "c" > ("object" < "foo")) >> ("undefined" !== 4 === (a_1 /= "function" * 3)); c = 1 + c, (/[a2][^e]+$/ !== true ^ (c = c + 1, "number")) === (a_1 += 0 >>> {} > (5 == -1)); c = 1 + c, (arguments_1 && (arguments_1.foo = (null & NaN) >> ("function" < "a"))) === -"" > (23..toString() | "c"); c = 1 + c, ((c = c + 1, 5) < (-1 >= "number")) % ("number" >>> -4, "a" >= null); } } while (/[abc4]/.test(((c = c + 1) + (b_1 && typeof b_1.get == "function" && --_calls_ >= 0 && b_1.get([])) || b || 5).toString()) && --brake5 > 0); } } } finally { { var brake11 = 5; L13364: while (a++ + (1 === 1 ? a : b) && --brake11 > 0) { try { { var brake13 = 5; while ((c = 1 + c, (b_1 &= -5 || 4) < (-0 ^ 4) && (-5 ^ NaN) < (/[a2][^e]+$/ != 24..toString())) && --brake13 > 0) { c = 1 + c, (true & []) >> (b_2 && (b_2.async %= "c" / -4)) || -5 >= -0 ^ this === -2; } } } finally {} } } } }("b", 2); } } catch (c_2) { L13365: for (var brake15 = 5; new function() { this[-0] += ((/[a2][^e]+$/ && 24..toString()) - (Infinity, "object") > (null / -1 | ("a", "c"))) % (([ , 0 ].length === 2 === 2) - ([ , 0 ].length === 2 == Infinity) >> (c_2 = ("number" | NaN) * (c = c + 1, "b"))) == ((NaN != 3 != "" >> Infinity) - (b_2 && (b_2[(c = c + 1) + ((bar, c_2) => (c = 1 + c, (bar -= (b_1 && (b_1[c = 1 + c, ((23..toString(), /[a2][^e]+$/) ^ "" << -0) / ("" > undefined, "object" / 0)] += "" == [])) !== "b" >= 22) - (delete 2 == (25 === {}))))((c = 1 + c, (22 === "function" & 1 !== NaN) - (-5 & 22 ^ "number" >>> -4)), 2)] = "b" - {} | "c" >= 23..toString())) === (c = c + 1, NaN) >> (22 != []) >>> (-0 % [ , 0 ][1] || 5 === -1)) === (((([ , 0 ][1] & "a") >>> [] + null) / ("number" - 22 >> (null | 22)), (false ^ 4) <= (true ^ -4) <= (1 % "undefined" <= undefined + 38..toString())) & (1 ^ -4 ^ -2 * 3 ^ ("bar" % [] && 38..toString() << 3)) % ((({} !== 5) - (-0 | [ , 0 ].length === 2)) / ((true | NaN) === ("function" !== 38..toString())))); this.null = (+((("undefined" < "c") >>> void 3) - (([ , 0 ].length === 2 || {}) >> (this !== "c")) >= ((b_2 && (b_2[c = 1 + c, (25 !== -4) < 24..toString() >> NaN & (-4 + [ , 0 ][1] & "undefined" + false)] = 23..toString() || 3)) <= this / "function" !== ("object" == "function" == /[a2][^e]+$/ / false))), ((("function" ^ true ^ 23..toString() !== true) >= (38..toString(), [ , 0 ][1]) >> (c = c + 1, 4)) << (NaN % -5 | -5 == 23..toString()) % ((let_2 && (let_2[c = 1 + c, !(-2 ^ 25 | -1 * undefined)] += Infinity < [ , 0 ][1])) != undefined - "b")) + (((let_2 && (let_2.null &= ("function" & "a") < [] << "bar")) <= -0 + "function" - ("number" >> -1)) + ((-4 == false | -2 >= []) & (24..toString() ^ -4) == (25 == this)))); this.NaN = (({} & -0) + (b_1 && (b_1.static = 3 ^ [ , 0 ][1])) << (b_1 && (b_1.b ^= ([] | "object") / (c = c + 1, "a"))) < ((let_2 && ([ let_2[(c = c + 1) + (() => (c = 1 + c, ("function" >= 4 & ("a" ^ "number")) >> (25 ^ 25 && false == undefined)))()] ] = [ (c_2 = "function" < this) && 25 / [ , 0 ][1] ])) >= (!{} != 25 * {})) <= ((b_2 && (b_2.b = (Infinity >> 1 === ("object" ^ 2), ([ , 0 ][1] == Infinity) <= ("b" ^ "foo")))) != (b_2 = (b_1 && (b_1.value += (let_2 && (let_2.in = "bar" >= -2)) * (([ , 0 ].length === 2) < -3))) & (undefined & null) / ("bar" + "b")))) % (c = c + 1, b_1 && (b_1[delete b] = -(([ , 0 ].length === 2 && this) >= ("object" || 25)) - ((3 + 5, "object" * 24..toString()) >> (("undefined" ^ 4) < ("", "b"))))); if (typeof f2 == "function" && --_calls_ >= 0 && f2()) { try { } finally { c = c + 1; c = 1 + c, (!null, 1 === this) != (let_2 && (let_2[c = 1 + c, ("" | []) != 24..toString() <= 3 ^ ("function" < "a" ^ "object" * "bar")] |= 5 / undefined)) << (-4 < NaN); L13366: for (var brake22 = 5; (c = 1 + c, ("" >= 4 || ("number" || "undefined")) >= ("number" >> this != -[ , 0 ][1])) && brake22 > 0; --brake22) { c = 1 + c, 22 << "number" !== (-1 && {}) & (c = c + 1, NaN != NaN); } } } else { var bar_2 = 0 === 1 ? a : b, a_1_1 = [].done; } }("undefined") && brake15 > 0; --brake15) { var brake25 = 5; L13367: while (++b && --brake25 > 0) { var brake26 = 5; do { try { if (--b + !(("b" ^ "foo") << (25 >> ([ , 0 ].length === 2)) << (([ , 0 ][1] !== Infinity) >= -1 >> -0))) { --b + !function() { }(); } } finally { b *= a; { return a++; } } } while ([ , 0 ][1] + "b" <= ("foo" === -1) >= (5 - "" >= +"function") && --brake26 > 0); } } return; L13368: { L13369: { { var brake35 = 5; L13370: while (a++ + (4 in [ ..."" + c_2 ] ? --b + (typeof f3 == "function" && --_calls_ >= 0 && f3`$\`${c = 1 + c, (a_1 = (a_1 += Infinity < 2) && (let_2 && (let_2.a += [] | "undefined"))) / ((c = c + 1, "foo") > ("object" != "a"))}${c = 1 + c, (Infinity || [ , 0 ].length === 2) >>> (-1 ^ NaN) ^ "undefined" % "number" << (4 && "foo")}tmpl${c = 1 + c, -(let_2 && (let_2[--b + (typeof b_2_1 === "object")] = (-4 | "object") >>> 25 % this))}`) : a++ + (0 === 1 ? a : b)) && --brake35 > 0) { var brake36 = 5; L13371: while (((c = 1 + c, 24..toString() >> 25 != -2 > true, (3 == 0) / (c = c + 1, -1)) || 3).toString()[c = 1 + c, (b_1 && (b_1[--b + ((c = 1 + c, -0 < 38..toString() < (undefined < "object") != (c_2 && (c_2[c = 1 + c, (("" || -2) << !0) / ((c = c + 1, 25) ^ ("number" || 2))] = "number" > -5)) >= 2 >> -5) || 8).toString()[c = 1 + c, {} >>> ([ , 0 ].length === 2) >> (b_1 && (b_1[c = 1 + c, "number" >>> Infinity > (1 === "object") < (25 & -4 & (c = c + 1, -2))] = 5 ^ [ , 0 ].length === 2)) ^ +5 <= [ , 0 ][1] + 5]] += ("foo" + -0) % (false - this))) === (-1 <= 0 === ("b" == "a"))] && --brake36 > 0) { L13372: { } } } } var a_1 = void ((-1 ^ undefined) / ("object" != -2) * ((/[a2][^e]+$/ != "b") / ("c" >= "bar"))), bar_2 = --b + (a++ + [ (c = 1 + c, c = c + 1, -"foo" && (3, 4)) ].length); { L13373: { } } } { var brake41 = 5; while ([ , 0 ][1] && --brake41 > 0) { return; } } } } finally { { var a_2 = function bar_2(bar_1, async_2) {}(); } if ("a" in [ (c = c + 1) + (/[abc4]/.test(((([ , 0 ].length === 2) >> "bar" && (c = c + 1, 24..toString())) == ("b" !== undefined ^ (undefined ^ -4)) || b || 5).toString()) || 9).toString()[a++] ]) {} else {} if (a++ + b_2) { var b_2 = function* b_1_1() { { var brake49 = 5; do { if (typeof f2 == "function" && --_calls_ >= 0 && f2([ , 0 ][1], (c = 1 + c, (0 & [ , 0 ].length === 2) % (c = c + 1, {}) > (("b" == -5) > (undefined === 2))))) { c = 1 + c, (-5, "bar") >= (undefined !== "a") === (5 - NaN ^ (a_2 && (a_2[c = 1 + c, (-5 >>> 5 ^ -5 !== ([ , 0 ].length === 2)) <= (~0, [ , 0 ].length === 2 && -2)] = 2 / ([ , 0 ].length === 2)))); } else { var brake52 = 5; do { c = 1 + c, ((a_2 += "undefined" && "c") <= (/[a2][^e]+$/ != {})) >>> ("number" + "foo" | "undefined" % -5); } while ((c = 1 + c, (3 === [ , 0 ][1] && 38..toString() ^ /[a2][^e]+$/) > (-2 >>> -2 < ("object" != "b"))) && --brake52 > 0); } } while ((0 === 1 ? a : b) && --brake49 > 0); } }(-4).next(); } else { var brake54 = 5; L13374: do { var b_2 = --b + (let_2 /= ([ , 0 ].length === 2) in [ Infinity - /[a2][^e]+$/ >>> "b" / "a" == (false || 2 || [ , 0 ].length === 2 | NaN) ]), bar_2 = --b + (b_2 = a++ + a--); } while ("c" && --brake54 > 0); } } { var expr56 = (c = c + 1) + function b_1_2() { { var brake57 = 5; L13376: while ((c = c + 1) + (typeof f3 == "function" && --_calls_ >= 0 && f3`${typeof foo != "symbol"}`) && --brake57 > 0) { if ("undefined") {} } } { var brake61 = 5; do { {} } while ((c = c + 1) + { undefined: a++ + --b, var: b ^= a } && --brake61 > 0); } }; L13375: for (let key56 in expr56) { c = 1 + c; var yield_2 = expr56[key56]; c = c + 1; } } { var brake65 = 5; L13377: while ((0 === 1 ? a : b) && --brake65 > 0) { { var arguments = function f2(b_2, foo_1, b_1) { function f3(arguments, undefined_1) { } var let_2 = f3((c = 1 + c, (24..toString() === false) + (23..toString() <= -4) << (38..toString() ^ -5) / (4 % "b")), -1, (c = 1 + c, (24..toString() === ([ , 0 ].length === 2)) % (1 * -4) ^ (let_2 && (let_2.get ^= 23..toString() ^ false)) * ("number" | "c"))); function f4() { } var a = f4(typeof (c = 1 + c, (c = c + 1, 38..toString() ^ -2) << void ([ , 0 ].length === 2) + (0 == -1))); }(); } } } } export var undefined_1 = f0(); console.log(null, a, b, c, Infinity, NaN, undefined);
// uglified code // (beautified) var _calls_ = 10, a = 100, b = 10, c = 0; function f0(f, o, t) { try { var n = function() { try { for (var t = 5; 0 < --t; ) { var n = 5; do { c = 1 + (c += 1), (NaN === (o && (o[c = 1 + c, 0] += -1))) / ("object" >> (2 === [ , 0 ].length) >> !0) ? c = 1 + c : (c = 1 + c, o && (o.null += NaN <= (!1 < (f && (f.set = 0))))); let arguments = delete b; } while (c = 1 + (c = 1 + c), c = 1 + (c += 1), y && (y.foo = 0), c = 1 + c, c += 1, /[abc4]/.test(((c += 1) + (o && "function" == typeof o.get && 0 <= --_calls_ && o.get([])) || b || 5).toString()) && 0 < --n); } } finally { for (var e = 5; a++ + a && 0 < --e; ) { for (var l = 5; c = 1 + c, (o &= -5) < 4 && 0 < --l; ) { c = 1 + c, f && (f.async %= NaN); } } } }("b", 2); } catch (t) { for (var e = 5; new function() { if (this[-0] += !1 % ((2 === [ , 0 ].length === 2) - (2 === [ , 0 ].length == 1 / 0) >> 0 * (c += 1, "b")) == (!0 - (f && (f[(c += 1) + (c = 1 + (c = 1 + c), -18 - (!1 !== (o && (o[c = 1 + c, NaN] += !0))) - !1)] = 1)) == (c += 1, 0)) === (!0 & 7 % ((!0 - (-0 | 2 === [ , 0 ].length)) / !1)), this.null = (f && (f[c = 1 + c, 0] = "23"), ((0 >> (c += 1, 4) <= 0) << 0 % (NaN != (n && (n[c = 1 + c, !1] += !1)))) + ((n && (n.null &= !1)) <= NaN) + (0 & -28 == (25 == this))), this.NaN = (0 + (o && (o.static = 3)) << (o && (o.b ^= 0 / (c += 1, "a"))) < (!0 <= (n && ([ n[(c += 1) + (c = 1 + c, 0)] ] = [ "function" < this && 1 / 0 ]))) <= ((f && (f.b = !0)) != (f = NaN & (o && (o.value += (n && (n.in = !1)) * ((2 === [ , 0 ].length) < -3)))))) % (c += 1, o && (o[delete b] = -("object" <= (2 === [ , 0 ].length && this)))), "function" == typeof f2 && 0 <= --_calls_ && f2()) { c = 1 + (c += 1), n && (n[c = 1 + c, 0] |= NaN); for (var t = 5; c = 1 + c, ("number" >> this != -0) <= "number" && 0 < t; --t) { c = 1 + c, c += 1; } } }() && 0 < e; --e) { for (var l = 5; ++b && 0 < --l; ) { var r = 5; do { try { --b + !(0 << (25 >> (2 === [ , 0 ].length)) << !0) && --b; } finally { return b *= a, a++; } } while (0 < --r); } } return; } finally { var i = void 0; if (c += 1, (/[abc4]/.test((-3 == ((2 === [ , 0 ].length) >> "bar" && (c += 1, "24")) || b || 5).toString()) || 9).toString()[a++], a++ + f) { f = function*() { for (var t = 5; "function" == typeof f2 && 0 <= --_calls_ && f2(0, (c = 1 + c, !1 < (0 & 2 === [ , 0 ].length) % (c += 1, {}))) ? (c = 1 + c, i && (i[c = 1 + c, (-5 >>> 5 ^ -5 !== (2 === [ , 0 ].length)) <= (2 === [ , 0 ].length && -2)] = 2 / (2 === [ , 0 ].length))) : (i += "c", c = 1 + (c = 1 + c)), b && 0 < --t; ) {} }().next(); } else { for (var h = 5; f = --b + (n /= (2 === [ , 0 ].length) in [ !1 ]), --b, f = a++ + a--, 0 < --h; ) {} } } for (var u in (c += 1) + function() { for (var t = 5; (c += 1) + ("function" == typeof f3 && 0 <= --_calls_ && f3`${"symbol" != typeof foo}`) && 0 < --t; ) {} for (var n = 5; (c += 1) + { undefined: a++ + --b, var: b ^= a } && 0 < --n; ) {} }) { c = 1 + c, c += 1; } for (var v = 5; b && 0 < --v; ) { c = 1 + (c = 1 + (c = 1 + c)), c += 1; } } var undefined_1 = f0(); console.log(null, a, b, c, 1 / 0, NaN, void 0); export { undefined_1 };
original result: null 107 0 107 Infinity NaN undefined uglified result: null 108 945 59 Infinity NaN undefined
// reduced test case (output will differ) // (beautified) try { (function f1() { do { { const arguments_1 = console.log(); let arguments; console.log(arguments_1); } } while (brake5); })(); } catch (c_2) {} // output: // undefined // // minify: // // options: { // "compress": { // "passes": 1000000, // "sequences": 1000000, // "unsafe": true, // "unsafe_Function": true, // "unsafe_math": true, // "unsafe_proto": true, // "unsafe_regexp": true // }, // "module": false, // "mangle": { // "v8": true // }, // "output": { // "v8": true // }, // "validate": true // }
minify(options): { "compress": { "passes": 1000000, "sequences": 1000000, "unsafe": true, "unsafe_Function": true, "unsafe_math": true, "unsafe_proto": true, "unsafe_regexp": true }, "module": false, "mangle": { "v8": true }, "output": { "v8": true } } Suspicious compress options: join_vars loops passes reduce_vars unused varify
The text was updated successfully, but these errors were encountered:
fix corner case in join_vars & loops
join_vars
loops
239d9ba
fixes mishoo#5756
dfbc06b
fix corner case in join_vars & loops (#5757)
0cbd5ea
fixes #5756
Successfully merging a pull request may close this issue.
The text was updated successfully, but these errors were encountered: