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

ufuzz failure #4849

Closed
alexlamsl opened this issue Apr 7, 2021 · 0 comments · Fixed by #4850
Closed

ufuzz failure #4849

alexlamsl opened this issue Apr 7, 2021 · 0 comments · Fixed by #4850
Labels

Comments

@alexlamsl
Copy link
Collaborator

// original code
//

var _calls_ = 10, a = 100, b = 10, c = 0;






switch ((a++ + (typeof a == "function" && --_calls_ >= 0 && a((-3))))) { 
case ( ((b = a) || a || 3).toString() ):

 break;

case ([((--b) + ((typeof f0 == "function" && --_calls_ >= 0 && f0(((c = c + 1) + (((( /[a2][^e]+$/ ^(-2))<(0x26.toString()>>>undefined))!=((a && (a[(c = 1 + c, (((""^"c")===(0x26.toString()^"c"))^(("undefined"!=1)||("">"function"))))]=((-2)&&"foo")))>(Infinity!=([,0].length === 2)))))), null, "bar")) ? (a && a[(undefined in [((c = c + 1) + (a=((c = c + 1) + (b++)))), (+function c_1(){




;
{var Infinity_2 = function f0(){




;
}
((c = 1 + c, (((23..toString()/22)|(2>>>23..toString()))<((c = c + 1, (-3))||("bar"^false)))), "object");}
c = c + 1;
var NaN = (typeof f1 == "function" && --_calls_ >= 0 && f1((c = 1 + c, (((Infinity_2 && (Infinity_2[(c = 1 + c, (delete (((c_1 && (c_1[(c = 1 + c, ((NaN && (NaN.value+=(( /[a2][^e]+$/ <<2)<<(void (null)))))>=(c_1 && (c_1.async=((Infinity_2 && (Infinity_2[(c = 1 + c, (delete (((25. >="undefined")%(0x26.toString()%2)))))]&=(true==[,0][1])))>>>("function"<1))))))]=(22!=="foo")))%("bar"*(-5))))))]>>=(true<<23..toString())))|(3|(-0))) + ((22/"b")<("object"/"undefined"))))));

}()), ((c = c + 1) + (b = a))])]) : (a++ + (({
}).get)))), (a++ + ((function (){




{var async = function b_1(){




try {for (var brake13 = 5; ((--b) + (0 === 1 ? a : b)) && brake13 > 0; --brake13){


;} } catch (undefined_1) { 


var yield_1 = (c = 1 + c, (yield_1 && (yield_1.NaN>>=(((c = c + 1, 2)==(1<false))|((this>>>"b")>>>(undefined_1 && (undefined_1[(c = 1 + c, (((25.  - 25. )|((-4)|(-2)))&&(b && (b.a=((([,0].length === 2)&&0)&&(undefined_1=(23..toString(),(-3))))))))]=("function"!==(-2))))))))), b = (c = 1 + c, ((("c"<<"foo")&(b && (b.next=((-4) - true))))<<((3||NaN)*(3|"function"))));
{;}
 } finally { 


/*3*/return;
{;}
 }
switch (( ((a++ + (a++)) || 8).toString()[(+(((([,0][1]>=(-3))||(1 + 22))!=(("object" + NaN) + ((-0) - 2)))))] )) { 
default:


case ((c = c + 1) + (a && a.set)):

 break;

case (({}) in [...("" + a), (c = 1 + c, ((((-1)&"bar")>>>(void ("foo")))!==((Infinity&"function")^(25. ==this)))), (c = 1 + c, (((NaN&5) - ((-1)>>(-0)))<(a && (a.b/=((0x26.toString()^null)===(4<(-1))))))), ]):

 break;

case ( (((--b) + (a && typeof a.in == "function" && --_calls_ >= 0 && a.in())) || a || 3).toString() ):
{ return (c = 1 + c, (((25. *"c")>>>(0x26.toString()|"b"))<(a && (a.in=((Infinity!=(-0))|(~(([,0].length === 2))))))))}
{var brake21 = 5; do {(c = 1 + c, (a && (a.a=(((([,0].length === 2)^"c")<=(2>"object"))>=((Infinity<({}))>(5>>>"undefined"))))));} while ((c = 1 + c, (-((((-4) + 22)!=("b"&""))))) && --brake21 > 0);}

 break;
}

}
(( ((a && typeof a.in == "function" && --_calls_ >= 0 && a.in((((("b">"bar")>>>(2^false))>=((a && ({ [(c = 1 + c, (((undefined^"bar")^(24 .toString()||[,0][1]))>=((22<(-2))>(([,0].length === 2)*null))))]: a.then } = { [(c = 1 + c, ((((-0)>(-5)) + (2%([,0].length === 2)))^(c = c + 1, ([,0][1]<<0x26.toString()))))]: (2>>>([,0].length === 2)) }))<<(delete ([,0][1]))))), (a++ + (a && a[(c = 1 + c, ((a/=(("function"<"undefined")|(NaN>NaN)))<(((-0)^"number"),(a && (a.undefined=(3 - "a"))))))])),)) || 3).toString()[([].async)] ), (new function (async, a_1, b){




(({
get: (c = 1 + c, ((("foo"<="object")*("number"||undefined)),((3>>>null)==("number"%this)))),
...async,
async: (c = 1 + c, (((Infinity<="b")^(false&([,0].length === 2)))^(("b"/(-4))>=(async+=([]|"function"))))),
}).value);
(a++ + (--(b)));
{var brake9 = 5; do {{var brake10 = 5; while ((c = 1 + c, (((5,0) + (5%(-4)))!=((5=="undefined")===(NaN===25. )))) && --brake10 > 0)(c = 1 + c, ((((-2)>>2) + (a_1=(""&&"number")))!=((undefined^null)&&(Infinity*"undefined"))));}} while (((--b) + (b++)) && --brake9 > 0);}

}((((NaN_1) => {





})))), ((c = c + 1) + ( /[abc4]/.test((((--b) + (--(b))) || b || 5).toString()) )));}
{var brake23 = 5; while (((typeof (1 === 1 ? a : b))) && --brake23 > 0)var yield_2 = (a++ + ((function foo_2(){





})()));}
{var brake25 = 5; do {var b_2;} while ((({
NaN: (b + 1 - 0.1 - 0.1 - 0.1),
'': ((--b) + (async)),
})) && --brake25 > 0);}

})())), ([][(--a)]), ((c = c + 1) + ([(a++ + ((((0x26.toString()&[])/(void ((-1))))==((0 - 4)<<(5*""))))), (a++ + (a && typeof a.length == "function" && --_calls_ >= 0 && a.length((-2), ((c = c + 1) + ((typeof a === "special"))), ...("" + a)))), (a++ + (+function (){




{var brake27 = 5; L19040: do {{ return ( /[abc4]/g.exec((( ((c = 1 + c, (a && (a.in=(((this*"bar"),("a",3))^(((-0)||(-5))<(null||1)))))) || a || 3).toString() ) || b || 5).toString()) )}} while ((b += a) && --brake27 > 0);}
{var expr29 = ((-0));  for (a in expr29) {{


(c = 1 + c, ((("number">=23..toString())&&(0==="function"))||(([,0][1] - ([,0].length === 2)) + ((-3)!==0))));
if ((c = 1 + c, ((a && (a.foo=(((-3)>>null)<<(1>=({})))))>>(("number" + NaN)&&((-1)==22)))))(c = 1 + c, ((("a"<false)<=(a && ({ [(c = 1 + c, ((((-3)*false)===(25. &false))>>>((false|"a")>>(23..toString()||24 .toString()))))]: a.set } = { foo: ("b"<"a") })))&&(("foo"<[,0][1]) + ("b">>Infinity))));
{ return (c = 1 + c, ((c = c + 1, (a=("object"|"number")))>=(([]>"c")==( /[a2][^e]+$/ &&0))))}
c = c + 1;
}}}
var undefined;

}()))])), (a++ + (((((-3)<<22),(a && (a.async=(true%Infinity)))) + ((({})!=[,0][1])/(a-=(undefined!=22))))))].length):
for (var brake37 = 5; (a && typeof a.c == "function" && --_calls_ >= 0 && a.c((a++ + (a)))) && brake37 > 0; --brake37)switch ((0 === 1 ? a : b)) { 
case (25. ):
for (var brake39 = 5; (~((((([,0].length === 2)<<(-0))!=(a && (a.in<<=("bar"|NaN))))&&((24 .toString()|this)&&((-5)==""))))) && brake39 > 0; --brake39){var brake40 = 5; do {switch (((--b) + (1 in ({
then: (a++ + ( /[abc4]/.test(((c = 1 + c, (((5&3)^("a">>23..toString())),(((-4) + "object")|(c = c + 1, (-1))))) || b || 5).toString()) )),
var: ( /[abc4]/.test(((c = 1 + c, (((!(24 .toString()))^(0!=(-3)))>=(("number">>NaN)&( /[a2][^e]+$/ <[,0][1])))) || b || 5).toString()) ),
next: (""),
a,
})))) { 
case ((--b) + (0 === 1 ? a : b)):

 break;

case ([(!((((24 .toString()==="")&&("undefined"&"undefined"))<(("number"<25. )==(false>>"foo"))))), (a++ + (23..toString())), ( /[abc4]/g.exec(((c = 1 + c, (a+=((((-3)&&undefined)<<(24 .toString()>=22))==((({})>>1)<(a&=(undefined/(-2))))))) || b || 5).toString()) ), (a++ + (typeof f1 == "function" && --_calls_ >= 0 && f1()))].var):
([(c = 1 + c, (((a && (a[(c = 1 + c, (void ((a && (a.a=((({}) - Infinity)!==(([,0].length === 2)||4)))))))]^=("b",0x26.toString())))!=(4=="c"))||(("undefined">"bar")>=((-2)||null)))), ...[(c = 1 + c, ((("function">"bar")>=(false&25. ))==((([,0].length === 2)<(-0))<(null>="")))), (c = 1 + c, (((0x26.toString()<<23..toString())>(c = c + 1, (-2)))&(a && ({ "-2": a.set } = { "-2": ((5&&(-4))^((-1)>>>1)) })))), , (c = 1 + c, ((("undefined" - 25. )<(23..toString()==true))%((5%({})),(22<NaN)))), (c = 1 + c, (((c = c + 1, [,0][1])<<(2!==null))<(c = c + 1, (23..toString()&&false))))]].next);

/* fall-through */

case ((--b) + (1 === 1 ? a : b)):
var arguments = ((--b) + ( ((c = 1 + c, ((("b"<({}))===(true/ /[a2][^e]+$/ )),((arguments && (arguments[(c = 1 + c, ((arguments=((false||"function")!==((-2)<this))) - ((arguments=(0x26.toString()||"c"))!=(arguments && (arguments[(c = 1 + c, ((arguments && (arguments[(a++ + ((((5&"function")>=(24 .toString()^4))>((3!=="function") + (c = c + 1, undefined)))))]+=(("undefined"<=({}))%(24 .toString()==[,0][1]))))>((3*false)>=(undefined===""))))]+=("object" - (-1)))))))]=(5,24 .toString())))>=("function"==undefined)))) || 8).toString()[(c = 1 + c, (((null>="bar")==(2<<({})))*((undefined&"c")&(([,0].length === 2)|| /[a2][^e]+$/ ))))] ));

 break;

case (-((arguments && (arguments[(a++ + (arguments && arguments[(typeof arguments == "function" && --_calls_ >= 0 && arguments())]))]=(((25. <=true)||((-0)===23..toString()))>>>(arguments && (arguments.var-=((4^this)*(5<="foo"))))))))):
L19041: {


(c = 1 + c, ((( /[a2][^e]+$/ *25. ) - (true/(-2)))%((0x26.toString()<<1)<((-4)*(-3)))));
(c = 1 + c, (((true<"undefined")!=(4&"undefined"))>>>((0x26.toString()>>>"function")===((-2)<"undefined"))));
(c = 1 + c, (((1>=(-4))/(2==="undefined"))===(("undefined"^"b")^("c"*"c"))));
(c = 1 + c, (((!("number"))&(arguments && (arguments[(c = 1 + c, ((arguments && (arguments.value=((~(24 .toString()))<<(arguments && (arguments[(c = 1 + c, ((~(("bar" - ({})))) - (arguments && (arguments.null=((Infinity>>>null),(c = c + 1, "b"))))))]-=(Infinity<<NaN))))))===((4*"function")!=(-("bar")))))]=(Infinity/([,0].length === 2)))))|(c = c + 1, ((-4)||NaN))));
}
var arguments_1 = (+function (){




;
}()), undefined_1 = (arguments_1);

 break;
}} while (((--b) + ( /[abc4]/g.exec(((({
[(a++ + ( ((c = 1 + c, (((24 .toString()<({}))<<(4!=NaN)),(("bar"==undefined)!==(undefined_1=((-2)*"b"))))) || a || 3).toString() ))]: ((c = c + 1) + (b++)),
})) || b || 5).toString()) )) && --brake40 > 0);}
for (var brake50 = 5; (a++ + ((((this!=="b")>>(null>>undefined)) - (arguments_1 && (arguments_1[((c = c + 1) + (b += a))]=((undefined_1 && ([ undefined_1.undefined ] = [ ([,0][1]||"") ]))||("foo"|undefined))))))) && brake50 > 0; --brake50)var foo_1 = ((c = c + 1) + (undefined_1|=(b + 1 - 0.1 - 0.1 - 0.1)));

 break;

default:
;
{var expr53 = ((--b) + (typeof f2 == "function" && --_calls_ >= 0 && f2("c", (a++ + (foo_1 && typeof foo_1.null == "function" && --_calls_ >= 0 && (((--b) + (!function NaN(){




(c = 1 + c, ((( /[a2][^e]+$/ ^false)%(23..toString()===25. ))^(("object"&(-5))||((-5)!="foo"))));
(c = 1 + c, ((("function"=="object")^((-5)^22))===(( /[a2][^e]+$/ !=true)||(0x26.toString()>>(-1)))));
(c = 1 + c, ((("a"|true)^(4^25. ))!==((5^25. )===(!(23..toString())))));
(c = 1 + c, ((( /[a2][^e]+$/  - Infinity) + (({})<=1))<((([,0].length === 2)&NaN)!=("object"/5))));

}())), foo_1.null)())))));  for (var key53 in expr53) {try {try {switch ((undefined_1 && typeof undefined_1.next == "function" && --_calls_ >= 0 && undefined_1.next((c = 1 + c, ((c = c + 1, ((-3)%24 .toString())) + ((undefined&0) + (undefined_1*=("number"==3))))), (c = 1 + c, (((0x26.toString()||(-0)) - (""=== /[a2][^e]+$/ ))>>>((Infinity==0x26.toString())&((-5)>(-5))))), this))) { 
default:


case (a++ + (+function (){




(c = 1 + c, (+(((([,0].length === 2)&(-4))>=("" - (-3))))));
(c = 1 + c, (((foo_1 && (foo_1.var+=(4<"undefined")))|((-1)*this))%(foo_1%=((this|22)<<(arguments && (arguments.undefined+=(Infinity<<"")))))));
(c = 1 + c, (arguments && (arguments.in>>=(((c = c + 1, 0)^(arguments=([,0][1]!=[,0][1])))<(c = c + 1, ((-4)||"bar"))))));

}())):

 break;

case ((--b) + (b = a)):
{;}

 break;

case ((c = c + 1) + (undefined_1=( ((c = 1 + c, ((("undefined" + "bar")&&(0>=5)),((5||22)>>>(c = c + 1, (-0))))) || 9).toString()[(c = 1 + c, (c = c + 1, ((-((-2))) + ("object" - "object"))))] ))):
{


;}
{;}

 break;
} } catch (undefined_1_2) { 


{


(c = 1 + c, ((((-1)||this)*(({})^null)),((([,0].length === 2)||"function") + ((-5)^3))));
}
for (var brake69 = 5; (({
[(c = 1 + c, ((((-3)!==true)>=("object"&0x26.toString()))<=(arguments_1 && (arguments_1.done|=(((-2)|undefined)<=(25. /"foo"))))))]: (c = 1 + c, ((("bar"%22)|(""|23..toString()))|((0^(-3))<<(+("c"))))),
var: (c = 1 + c, (((5^2)!=(null||0x26.toString()))||(("object", /[a2][^e]+$/ )||(arguments_1=(this%3))))),
in: (c = 1 + c, (((0^this)<(24 .toString()&Infinity))==((1=="c")<(1*4)))),
0: (c = 1 + c, (((NaN>true)!=(undefined_1+=([,0][1]!==5))) - (arguments_1 && (arguments_1[(typeof arguments_1 == "function" && --_calls_ >= 0 && arguments_1())]=(((-3)<=(-4))!==( /[a2][^e]+$/ |"c")))))),
[(c = 1 + c, (((c = c + 1, false)%(Infinity===undefined))*(( /[a2][^e]+$/ &"object")===("" + ([,0].length === 2)))))]: (c = 1 + c, ((("bar"!=="undefined")<=((-3)/(-5))) + (("bar" + "foo") + (({})>>22)))),
})) && brake69 > 0; --brake69)if ((c = 1 + c, (((arguments_1 && (arguments_1[(c = 1 + c, ((arguments_1 && (arguments_1[(a++ + (!((((([,0].length === 2)<(-3))>>>("number">(-0)))|((undefined_1_2 && ([ undefined_1_2.done ] = [ ("foo","b") ]))!=(({})%"number"))))))]+=((([,0].length === 2)*"b")!==("function"^"function"))))>>(("foo"!=(-2))/(Infinity==24 .toString()))))]=(null!=Infinity)))<("undefined">0x26.toString()))^(("b" + "undefined") + (arguments && (arguments.async|=(([,0].length === 2)|(-4))))))))(c = 1 + c, (foo_1=(((null!==3)%(null - "bar"))*((23..toString()>>>0x26.toString()),("c"<<false))))); else (c = 1 + c, (((this>>"bar"),(undefined_1 && (undefined_1[(c = 1 + c, (-(((""^(-1))<(""<="c")))))]+=(25. ==0x26.toString()))))==((true&this)<<(([,0].length === 2)||({})))));
 } finally { 


{var await = function f1(Infinity_2, b_1, b_2){

class C0 {
static get a(){




;
(c = 1 + c, (((~(""))<=(arguments_1&=(3&& /[a2][^e]+$/ )))^((true<<true)===(Object.isExtensible(b_2) && (b_2.value>>>=(0x26.toString()<<"undefined"))))));
}
}



;
}
();}
{var b_2 = function undefined_1(b, b, b_2){




;
}
(...[], (c = 1 + c, (delete ((("object"|25. )!=(""===(-1)))))), (c = 1 + c, ((((-0)&(-5))==("object">22))&((25. &&24 .toString())>>([]>([,0].length === 2))))));}
 } } catch (a_2) { 


{


c = c + 1;
try {(c = 1 + c, (((a_2 && (a_2.then+=(true<<1)))>(2>>3))&(("" - (-2))<<("bar"/(-5))))); } catch (a_1) { 


; } finally { 


; }
var a_2 = (c = 1 + c, ((((-0)^([,0].length === 2))>>>(void ([])))>=((this==22)|(key53 && (key53[(c = 1 + c, (((NaN + "function")===("undefined"==false))<((3!==(-2))<(""^[]))))]+=("undefined"==="b"))))));
;
}
{var brake82 = 5; do {((--b) + (0 === 1 ? a : b));} while (((--b) + ((typeof (a_2=(c = 1 + c, ((([,0][1]%22)%(25. >>>22))*(c = c + 1, (undefined_1=("number"<=4))))))))) && --brake82 > 0);}
 }}}


case (a++ + (({
...undefined_1,
0: ((--b) + (+((arguments_1^=(((null>="function")>=(this|([,0].length === 2)))>>>((0x26.toString() + "foo")^(3<3))))))),
next: ((c = c + 1) + (((typeof (null in ({
get: (b += a),
})))))),
value: ((c = c + 1) + ( ((a++ + (arguments && typeof arguments.foo == "function" && --_calls_ >= 0 && arguments.foo())) || 0).toString()[(a++ + ((typeof b != "crap")))] )),
})[(-b)])):
switch ((a++)) { 
case ((c = c + 1) + ( /[abc4]/.test(((typeof f2 == "function" && --_calls_ >= 0 && f2`tmpl$${(foo_1 && foo_1.async)}`) || b || 5).toString()) )):
(foo_1 && typeof foo_1.Infinity == "function" && --_calls_ >= 0 && (([(c = 1 + c, (((({}),null)!=(c = c + 1, (-1)))>>>(undefined_1 && (undefined_1.c+=((23..toString(),(-3))===("object"^(-5)))))))][(a++ + ([, (c = 1 + c, (undefined_1 && (undefined_1.next+=((arguments_1*=((2!="foo")<(3==4)))^((Infinity*this) - (0x26.toString()^5)))))), (c = 1 + c, (((+("b"))*(null>>>this))<<((arguments_1+=([,0][1]===25. ))%((-5)>>(-1)))))].c))]), foo_1.Infinity)(((--b) + (4 in [(c = 1 + c, ((("foo"&4)&(0<<2))^((arguments_1 && (arguments_1[(c = 1 + c, ((("object"<=24 .toString())>>>(24 .toString()|4))&((22%(-5))%((-1)!="bar"))))]+=("object"/"foo")))&(foo_1-=(0x26.toString()%null))))), (c = 1 + c, ((("a"===(-2))<<(void (NaN))) - ((false - (-3))&(null&&"undefined")))), (c = 1 + c, (((foo_1+=("number"/""))&&("foo"/(-5)))|((0x26.toString()*4) - ("b"/(-1))))), (c = 1 + c, ((("foo"<<"undefined")<=(24 .toString()%"bar"))>(undefined_1 && (undefined_1.get=(("foo">>>"a")|(5 - "undefined")))))), (c = 1 + c, ((c = c + 1, ("function"*"object"))&(arguments_1 && (arguments_1.b=(((-0),(-4))*(3<=([,0].length === 2)))))))]))));

 break;

case ( /[abc4]/.test(((a++ + (({
"	": (typeof arguments == "function" && --_calls_ >= 0 && arguments()),
then: ((c = c + 1) + (({
null: (c = 1 + c, (~((undefined_1/=((4==="c") + ("c"^4)))))),
}).get)),
foo_1,
}).next)) || b || 5).toString()) ):
{var expr86 = ((function b_1(){




return (c = 1 + c, ((("a"<=(-3))&&(25. >= /[a2][^e]+$/ )) + (("b"*0x26.toString())>>(null + 25. ))));

}));  for (var key86 in expr86) {{var expr88 = (a++ + (({
get var(){




;
(c = 1 + c, (((null==="")===(undefined_1 && (undefined_1[(c = 1 + c, (((arguments && (arguments[(c = 1 + c, (((this!==2)%((-3)==="bar"))>((2>(-0))===(1^0))))]=("b"=="foo")))&(([,0].length === 2)||""))<=(("undefined"===4)^(NaN<<([,0].length === 2)))))]=(24 .toString()^3))))!==((arguments_1=(1/5))==(5 - ({})))));
},
1.5: (c = 1 + c, (((2&&null)/(undefined_1 && (undefined_1.done>>=(null - 25. ))))<=((0x26.toString()>="")!==(arguments && (arguments[(c = 1 + c, (-((~((25. >>null))))))]*=("b">="a")))))),
1.5: (c = 1 + c, ((((-3)>>1)||((-5)>>>1))>((([,0].length === 2) - 0x26.toString())%(void (24 .toString()))))),
b: (c = 1 + c, (((this!==(-1))&(arguments_1 && (arguments_1.then=(22===({})))))&&((c = c + 1, true)==(25. *"bar")))),
})));  for (var [ key88 ] in expr88) {{var brake90 = 5; while ((foo_1 && foo_1.length) && --brake90 > 0){var expr91 = (c = 1 + c, ((("number"!=({}))==(2||""))<((null&&25. )^(this%24 .toString()))));  for (foo_1 in expr91) {c = 1 + c; var undefined_1 = expr91[foo_1]; (c = 1 + c, (c = c + 1, ((({})>([,0].length === 2))!==("undefined"||25. ))));}}}}}}}
if ((a++ + ((typeof NaN))))var c_1 = ([(c = 1 + c, ((("undefined">="bar")&(c = c + 1, 0))%((null>25. )||((-3)&false)))), (c = 1 + c, ((("foo"%Infinity)&((-4)&&(-5)))&(("undefined"||(-3))===(24 .toString()&&false)))), (c = 1 + c, (((2!=3)<(2>="a"))^(("number"*(-2))<=( /[a2][^e]+$/ !==(-3))))), (c = 1 + c, (undefined_1*=(((({})!=4)>>>(0x26.toString()<(-2)))==((""&({}))|("undefined" + NaN)))))]), c_1 = (0 === 1 ? a : b);

 break;

case ((c = c + 1) + (a--)):
{


;
try {try {(c = 1 + c, ((([]<22)&(undefined^4))^((undefined,"foo")<<("a","bar")))); } catch (yield_2) { 


; } } finally { 


(c = 1 + c, (((23..toString()||"undefined")||("c"||null))>(("function"===true)^("c" - 0))));
(c = 1 + c, ((c = c + 1, ([]&&(-5)))!==(((-0)%(-0))!==("b"==(-4)))));
 }
var c_1 = ((c = 1 + c, (((([,0].length === 2) - "a")!=((-2)^""))>((false&[])||( /[a2][^e]+$/ ===(-0))))));
( ((c = 1 + c, (((NaN*NaN)>>(0x26.toString()%Infinity))==(("b"||"c")<<(5<<0x26.toString())))) || a || 3).toString() );
}

 break;

case ((--b) + (b = a)):
((--b) + ( (((--b) + (typeof f0 == "function" && --_calls_ >= 0 && f0((c = 1 + c, ((((-5)*23..toString())<<("undefined"===(-2)))||((true%0x26.toString())>=((-5)>=0))))))) || a || 3).toString() ));
switch (((--b) + ( /[abc4]/.test((((c = c + 1) + (`${(c = 1 + c, ((((-0)||"undefined")&(null%"object"))&(void ((null<(-4))))))}`)) || b || 5).toString()) ))) { 
case (a++ + (b++)):
{var expr106 = (this in ({
value: (c = 1 + c, ((([]==25. )!=(22,(-0))),(([,0][1]<=(-0))!==(undefined>null)))),
}));  for (var [ key106 ] in expr106) {c = 1 + c; var NaN_2 = expr106[key106]; (c = 1 + c, ((c = c + 1, (5!==(-3)))<<(("c"^true),(arguments_1 && (arguments_1.static=(""<<"c"))))));}}
switch ((-a)) { 
case (a++ + ((c = 1 + c, (((({})<Infinity)!==((-2)!="function"))>=(foo_1 && ({ static: foo_1[((function (){




;
})())] } = { static: ((NaN&&"function")&(1*"function")) })))) ? (c = 1 + c, (((24 .toString()*([,0].length === 2))%("c"^[]))>>>((1!="a")^(25.  +  /[a2][^e]+$/ )))) : (c = 1 + c, (arguments_1 && (arguments_1.undefined+=(((4>=(-1))>=(NaN^"c"))%(c_1 && (c_1[(typeof f3 == "function" && --_calls_ >= 0 && f3((c = 1 + c, ((((-2)&NaN)>(25. &(-1)))%((25. >=5)*("undefined"!==NaN)))), 4, Infinity))]+=((true%"function")==( /[a2][^e]+$/ >"undefined")))))))))):
(c = 1 + c, (((null/"object")>>(c = c + 1, ""))&&((4>="undefined")>(4>>"undefined"))));
(c = 1 + c, (((Infinity/this) - (22/3))|(([,0][1] + Infinity)>>(undefined>>this))));

 break;

case ((--b) + (!function (){




;
}())):
(c = 1 + c, ((+(( /[a2][^e]+$/ !=4)))|(arguments_1 && (arguments_1[(c_1 && typeof c_1.done == "function" && --_calls_ >= 0 && c_1.done(5,))]=(("c"== /[a2][^e]+$/ )/([,0][1]!==0))))));

 break;

case (a++ + (undefined_1)):

 break;

case ((--b) + (typeof c_1 == "function" && --_calls_ >= 0 && c_1(...[(c = 1 + c, ((([,0][1]*[])>(25. /"b"))===(("number"===(-4)) - (arguments&=((-1)>="bar"))))), (c = 1 + c, ((("c",(-3)),("number">>>"undefined"))<=((-(5))&&(25. &([,0].length === 2))))), (c = 1 + c, (((false - Infinity)<=(false%false))!=(((-2)=="function")&(1<<"undefined")))), (c = 1 + c, (((({}) + 25. )|(24 .toString()<"undefined"))>(((-2) + 0)!=(({})^1))))], "foo"))):
(c = 1 + c, (undefined_1+=((((-2)<(-4))!=("undefined"%"a")) - ((22==24 .toString()) - (false&"number")))));
(c = 1 + c, ((([],"function")*(25. <=25. ))^(("b"||22)*("bar"<23..toString()))));

 break;
}

 break;

case (0 in [(a++ + (arguments)), (!function async(){




;
}()), ((c = c + 1) + (arguments_1))]):

 break;

default:


case ((--b) + (typeof f0 == "function" && --_calls_ >= 0 && f0(((--b) + ("undefined"))))):

 break;
}

 break;
}

 break;

case (a++ + (1 === 1 ? a : b)):

 break;
}

 break;

case (a++ + (-a)):
c = c + 1;
{var brake115 = 5; L19042: do {for (var brake116 = 5; (typeof f2 == "function" && --_calls_ >= 0 && f2((-1), 3, ((--b) + (c_1 && c_1.in)))) && brake116 > 0; --brake116){var brake117 = 5; while (((--b) + (+((((undefined>undefined)/(c = c + 1, true)) + (((-4)&22)<((-4)>>>(-5))))))) && --brake117 > 0)(!b);}} while ((a++ + (typeof f0 == "function" && --_calls_ >= 0 && f0())) && --brake115 > 0);}

 break;

default:

}
{var brake119 = 5; while (((c = c + 1) + (arguments_1)) && --brake119 > 0)L19043: for (var brake120 = 5; ((--b) + (c_1 && typeof c_1.static == "function" && --_calls_ >= 0 && c_1.static``)) && brake120 > 0; --brake120){


;
}}

console.log(null, a, b, c, Infinity, NaN, undefined);
// !!! uglify failed !!!
Error: cannot reuse AST_Arrow from [0:89,2]
    at TreeWalker.eval [as callback] (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:401:23)
    at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2243:25)
    at AST_Arrow.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:921:17)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1578:21)
    at Array.forEach (<anonymous>)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1577:23)
    at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
    at AST_New.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1575:17)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1578:21)
    at Array.forEach (<anonymous>)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1577:23)
    at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
    at AST_Call.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1575:17)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1687:29)
    at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
    at AST_UnaryPrefix.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1686:17)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:523:23)
    at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
    at AST_SimpleStatement.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:522:17)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:562:14)
    at Array.forEach (<anonymous>)
    at walk_body (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:561:15)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:854:13)
    at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
    at AST_Function.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:848:17)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1576:29)
    at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
    at AST_Call.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1575:17)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1716:24)
    at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
    at AST_Binary.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1714:17)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1811:25)
    at Array.forEach (<anonymous>)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1810:27)
    at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
    at AST_Array.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1809:17)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1640:29)
    at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
    at AST_Dot.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1639:17)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1285:29)
    at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
    at AST_Case.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1284:17)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:562:14)
    at Array.forEach (<anonymous>)
    at walk_body (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:561:15)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1255:13)
    at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
    at AST_Switch.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1253:17)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:562:14)
    at Array.forEach (<anonymous>)
    at walk_body (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:561:15)
    at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:574:13)
    at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
    at AST_Toplevel.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:573:17)
    at AST_Toplevel.validate_ast (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:399:14)
    at Object.minify (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:20823:44)
    at /home/runner/work/UglifyJS/UglifyJS/test/ufuzz/index.js:2422:32
    at Array.forEach (<anonymous>)
    at Object.<anonymous> (/home/runner/work/UglifyJS/UglifyJS/test/ufuzz/index.js:2418:20)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Function.Module.runMain (module.js:694:10)
    at startup (bootstrap_node.js:204:16)
    at bootstrap_node.js:625:3
// reduced test case (output will differ)

// (beautified)
switch (0) {
  case function() {
        (function b_1() {
            a;
        })(new function(async) {
            ({
                get: this,
                ...async
            }).value;
        }(() => {}));
    }:
  case 0:
    brake115;
}
// minify error: Error: cannot reuse AST_Arrow from [0:10,10]
//     at TreeWalker.eval [as callback] (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:401:23)
//     at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2243:25)
//     at AST_Arrow.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:921:17)
//     at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1578:21)
//     at Array.forEach (<anonymous>)
//     at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1577:23)
//     at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
//     at AST_New.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1575:17)
//     at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1578:21)
//     at Array.forEach (<anonymous>)
//     at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1577:23)
//     at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
//     at AST_Call.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1575:17)
//     at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1687:29)
//     at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
//     at AST_UnaryPrefix.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1686:17)
//     at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:523:23)
//     at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
//     at AST_SimpleStatement.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:522:17)
//     at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:562:14)
//     at Array.forEach (<anonymous>)
//     at walk_body (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:561:15)
//     at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:854:13)
//     at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
//     at AST_Function.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:848:17)
//     at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1285:29)
//     at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
//     at AST_Case.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1284:17)
//     at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:562:14)
//     at Array.forEach (<anonymous>)
//     at walk_body (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:561:15)
//     at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1255:13)
//     at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
//     at AST_Switch.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:1253:17)
//     at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:562:14)
//     at Array.forEach (<anonymous>)
//     at walk_body (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:561:15)
//     at eval (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:574:13)
//     at TreeWalker.visit (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:2244:31)
//     at AST_Toplevel.walk (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:573:17)
//     at AST_Toplevel.validate_ast (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:399:14)
//     at Object.minify (eval at <anonymous> (/home/runner/work/UglifyJS/UglifyJS/tools/node.js:18:1), <anonymous>:20823:44)
//     at test_minify (/home/runner/work/UglifyJS/UglifyJS/test/reduce.js:778:22)
//     at reduce_test (/home/runner/work/UglifyJS/UglifyJS/test/reduce.js:607:20)
//     at log (/home/runner/work/UglifyJS/UglifyJS/test/ufuzz/index.js:2189:23)
//     at /home/runner/work/UglifyJS/UglifyJS/test/ufuzz/index.js:2506:80
//     at Array.forEach (<anonymous>)
//     at Object.<anonymous> (/home/runner/work/UglifyJS/UglifyJS/test/ufuzz/index.js:2418:20)
//     at Module._compile (module.js:653:30)
//     at Object.Module._extensions..js (module.js:664:10)
//     at Module.load (module.js:566:32)
//     at tryModuleLoad (module.js:506:12)
//     at Function.Module._load (module.js:498:3)
//     at Function.Module.runMain (module.js:694:10)
//     at startup (bootstrap_node.js:204:16)
//     at bootstrap_node.js:625:3
// options: {
//   "compress": {
//     "hoist_vars": true,
//     "keep_infinity": true,
//     "passes": 1000000,
//     "unsafe": true
//   },
//   "keep_fnames": true,
//   "toplevel": true,
//   "mangle": {
//     "v8": true
//   },
//   "output": {
//     "v8": true
//   },
//   "validate": true
// }
minify(options):
{
  "compress": {
    "hoist_vars": true,
    "keep_infinity": true,
    "passes": 1000000,
    "unsafe": true
  },
  "keep_fnames": true,
  "toplevel": true,
  "mangle": {
    "v8": true
  },
  "output": {
    "v8": true
  }
}

Suspicious compress options:
  evaluate
  passes
  reduce_vars
  unsafe
  unused
@alexlamsl alexlamsl added the bug label Apr 7, 2021
alexlamsl added a commit to alexlamsl/UglifyJS that referenced this issue Apr 7, 2021
alexlamsl added a commit that referenced this issue Apr 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant