1use nanvm_lib::vm::unstable::{
4 f64_any, property_item, spread_entries, spread_object, strict_eq, strict_ne, string_any,
5 string_key,
6};
7use nanvm_lib::vm::{
8 Any, Array, Constructor, IStaticFunction, Nullish, Object, String, ToAny, ToArray, ToObject,
9};
10
11#[rustfmt::skip]
17#[allow(clippy::if_same_then_else)]
18pub fn runtime<A: IStaticFunction>() -> Result<Any<A>, Any<A>> {
19 let _b7: Any<A> = (Any::dot([(string_key("isNegativeZero"), A::static_function(|_self, _args| {
20 let _b1: Any<A> = (strict_eq(_args.argument(0), f64_any(0x0000000000000000)))?;
21 if Any::<A>::to_boolean(_b1.clone()) { Any::lt((f64_any(0x3ff0000000000000) / _args.argument(0))?, f64_any(0x0000000000000000)) } else { Ok(_b1.clone()) }
22 }, 1, Array::default(), Some("($0)=>{const $1=$0===0;return $1?1/$0<0:$1;}")).to_any())].to_object().to_any(), string_any("isNegativeZero")).end())?;
23 let _b10: Any<A> = [(string_key("entry"), A::static_function(|_self, _args| Any::entry(_args.argument(0), _args.argument(1)), 2, Array::default(), Some("($0,$1)=>{const $2=Object.getOwnPropertyDescriptor($0,$1);return $2?.enumerable?$2.value:undefined;}")).to_any()), (string_key("hasEntry"), A::static_function(|_self, _args| Any::has_entry(_args.argument(0), _args.argument(1)).map(|v| v.to_any()), 2, Array::default(), Some("($0,$1)=>{const $2=Object.getOwnPropertyDescriptor($0,$1);return $2?.enumerable===true;}")).to_any())].to_object().to_any();
24 let _b11: Any<A> = (Any::dot(_b10.clone(), string_any("entry")).end())?;
25 let _b12: Any<A> = (Any::dot(_b10.clone(), string_any("hasEntry")).end())?;
26 let _b15: Any<A> = [(string_key("charCodeAt"), A::static_function(|_self, _args| Any::dot(_args.argument(0), string_any("charCodeAt")).end_call_native(|| Ok([_args.argument(1)].to_array().to_any())), 2, Array::default(), Some("($0,$1)=>$0.charCodeAt($1)")).to_any()), (string_key("slice"), A::static_function(|_self, _args| Any::dot(_args.argument(0), string_any("slice")).end_call_native(|| Ok([_args.argument(1), _args.argument(2)].to_array().to_any())), 3, Array::default(), Some("($0,$1,$2)=>$0.slice($1,$2)")).to_any())].to_object().to_any();
27 let _b16: Any<A> = (Any::dot(_b15.clone(), string_any("charCodeAt")).end())?;
28 let _b19: Any<A> = A::static_function(|_self, _args| { strict_ne(_args.argument(0), _args.argument(0)) }, 1, Array::default(), Some("function isNaN() { [native code] }")).to_any();
29 let _b81: Any<A> = A::static_function(|_self, _args| {
30 let _b77: Any<A> = (strict_eq((Any::typeof_(_args.argument(0)))?, string_any("number")))?;
31 if Any::<A>::to_boolean(_b77.clone()) { strict_eq((_args.argument(0) % f64_any(0x3ff0000000000000))?, f64_any(0x0000000000000000)) } else { Ok(_b77.clone()) }
32 }, 1, Array::default(), Some("function isInteger() { [native code] }")).to_any();
33 let _b99: Any<A> = A::static_function(|_self, _args| {
34 let _b95: Any<A> = (strict_eq((Any::typeof_(_args.argument(0)))?, string_any("number")))?;
35 if Any::<A>::to_boolean(_b95.clone()) { strict_eq((_args.argument(0) * f64_any(0x0000000000000000))?, f64_any(0x0000000000000000)) } else { Ok(_b95.clone()) }
36 }, 1, Array::default(), Some("function isFinite() { [native code] }")).to_any();
37 let _b100: Any<A> = [(string_key("Object.is"), A::static_function(|_self, _args| { if Any::<A>::to_boolean((strict_eq(_args.argument(0), _args.argument(1)))?) { strict_eq((Any::call(A::frame(_self)[0].clone(), [_args.argument(0)].to_array().to_any()))?, (Any::call(A::frame(_self)[0].clone(), [_args.argument(1)].to_array().to_any()))?) } else {
38 let _b28: Any<A> = (Any::call(A::frame(_self)[1].clone(), [_args.argument(0)].to_array().to_any()))?;
39 if Any::<A>::to_boolean(_b28.clone()) { Any::call(A::frame(_self)[1].clone(), [_args.argument(1)].to_array().to_any()) } else { Ok(_b28.clone()) }
40 } }, 2, [_b7.clone(), _b19.clone()].to_array(), Some("function is() { [native code] }")).to_any()), (string_key("Object.entries"), A::static_function(|_self, _args| Any::entries(_args.argument(0)), 1, Array::default(), Some("function entries() { [native code] }")).to_any()), (string_key("String.fromCharCode"), A::static_function(|_self, _args| String::from_char_code(_args).map(|v| v.to_any()), 1, Array::default(), Some("function fromCharCode() { [native code] }")).to_any()), (string_key("Object.fromEntries"), A::static_function(|_self, _args| { if Any::<A>::to_boolean((<Any<A> as core::ops::Not>::not((Any::instanceof_(_args.argument(0), Constructor::Array))?))?) { Err(string_any("Object.fromEntries: not an array")) } else {
41 let _b68: Any<A> = A::static_function(|_self, _args| {
42 let mut _b65521: Any<A> = _args.argument(0);
43 '_loop68: while Any::<A>::to_boolean({
44 let _b65522: Any<A> = _b65521.clone();
45 let _b40: Any<A> = (Any::dot(_b65522.clone(), f64_any(0x0000000000000000)).end())?;
46 let _b41: Any<A> = (Any::dot(_b65522.clone(), f64_any(0x3ff0000000000000)).end())?;
47 (Any::lt(_b41.clone(), (Any::dot(A::frame(_self)[0].clone(), string_any("length")).end())?))?
48 }) {
49 let _b18736_31: Any<A> = _b65521.clone();
50 let _b41: Any<A> = (Any::dot(_b18736_31.clone(), f64_any(0x3ff0000000000000)).end())?;
51 let _b46: Any<A> = (Any::dot(A::frame(_self)[0].clone(), (Any::number(_b41.clone()))?).end())?;
52 let _b47: Any<A> = (strict_eq(_b46.clone(), Nullish::Null.to_any()))?;
53 let _b65520: Any<A> = if Any::<A>::to_boolean(if Any::<A>::to_boolean(_b47.clone()) { _b47.clone() } else {
54 let _b49: Any<A> = (strict_ne((Any::typeof_(_b46.clone()))?, string_any("object")))?;
55 if Any::<A>::to_boolean(_b49.clone()) { (strict_ne((Any::typeof_(_b46.clone()))?, string_any("function")))? } else { _b49.clone() }
56 }) { (Err::<Any<A>, Any<A>>(string_any("Object.fromEntries: an entry is not an object")))? } else { Array::default().to_any() };
57 let _b40: Any<A> = (Any::dot(_b18736_31.clone(), f64_any(0x0000000000000000)).end())?;
58 let _b65525: Any<A> = [spread_object([spread_entries(_b40.clone()), property_item(((Any::dot(_b46.clone(), f64_any(0x0000000000000000)).end())?).to_string()?, (Any::dot(_b46.clone(), f64_any(0x3ff0000000000000)).end())?)]), (_b41.clone() + f64_any(0x3ff0000000000000))?].to_array().to_any();
59 _b65521 = _b65525.clone();
60 }
61 let _b65523: Any<A> = _b65521;
62 let _b18755: Any<A> = {
63 let _b65524: Any<A> = _b65523.clone();
64 let _b40: Any<A> = (Any::dot(_b65524.clone(), f64_any(0x0000000000000000)).end())?;
65 let _b41: Any<A> = (Any::dot(_b65524.clone(), f64_any(0x3ff0000000000000)).end())?;
66 [_b40.clone(), _b41.clone()].to_array().to_any()
67 };
68 Ok(_b18755.clone())
69 }, 1, [_args.argument(0)].to_array(), Some("($1)=>{let $2=$1;while((()=>{const $3=$2;const $4=$3[0];const $5=$3[1];return $5<$0.length;})()){const $6=$2;const $5=$6[1];const $7=$0[Number($5)];const $8=$7===null;const $9=($8?$8:(()=>{const $10=typeof $7!==\"object\";return $10?typeof $7!==\"function\":$10;})())?(()=>{throw \"Object.fromEntries: an entry is not an object\";})():[];const $4=$6[0];const $11=[{...$4,[$7[0]]:$7[1]},$5+1];$2=$11;}const $12=(()=>{const $13=$2;const $4=$13[0];const $5=$13[1];return [$4,$5];})();return $12;}")).to_any();
70 Any::dot((Any::call(_b68.clone(), [[Object::default().to_any(), f64_any(0x0000000000000000)].to_array().to_any()].to_array().to_any()))?, f64_any(0x0000000000000000)).end()
71 } }, 1, Array::default(), Some("function fromEntries() { [native code] }")).to_any()), (string_key("Number.isInteger"), _b81.clone()), (string_key("Number.isSafeInteger"), A::static_function(|_self, _args| {
72 let _b84: Any<A> = (strict_eq((Any::typeof_(_args.argument(0)))?, string_any("number")))?;
73 let _b87: Any<A> = if Any::<A>::to_boolean(_b84.clone()) { (Any::call(A::frame(_self)[0].clone(), [_args.argument(0)].to_array().to_any()))? } else { _b84.clone() };
74 let _b89: Any<A> = if Any::<A>::to_boolean(_b87.clone()) { (Any::le(f64_any(0xc33fffffffffffff), _args.argument(0)))? } else { _b87.clone() };
75 if Any::<A>::to_boolean(_b89.clone()) { Any::le(_args.argument(0), f64_any(0x433fffffffffffff)) } else { Ok(_b89.clone()) }
76 }, 1, [_b81.clone()].to_array(), Some("function isSafeInteger() { [native code] }")).to_any()), (string_key("Number.isNaN"), _b19.clone()), (string_key("Number.isFinite"), _b99.clone())].to_object().to_any();
77 let _b121: Any<A> = A::static_function(|_self, _args| { _args.argument(0) - f64_any(0x0000000000000000) }, 1, Array::default(), Some("($0)=>$0-0")).to_any();
78 let _b133: Any<A> = A::static_function(|_self, _args| {
79 let _b125: Any<A> = (Any::call(A::frame(_self)[0].clone(), [_args.argument(0)].to_array().to_any()))?;
80 if Any::<A>::to_boolean((Any::call(A::frame(_self)[1].clone(), [_b125.clone()].to_array().to_any()))?) { Ok(f64_any(0x0000000000000000)) } else { if Any::<A>::to_boolean((Any::call(A::frame(_self)[2].clone(), [_b125.clone()].to_array().to_any()))?) { _b125.clone() - (_b125.clone() % f64_any(0x3ff0000000000000))? } else { Ok(_b125.clone()) } }
81 }, 1, [_b121.clone(), _b19.clone(), _b99.clone()].to_array(), Some("($3)=>{const $4=$0($3);return $1($4)?0:$2($4)?$4-$4%1:$4;}")).to_any();
82 let _b142: Any<A> = A::static_function(|_self, _args| {
83 let _b136: Any<A> = (Any::call(A::frame(_self)[0].clone(), [_args.argument(0)].to_array().to_any()))?;
84 if Any::<A>::to_boolean((Any::lt(_b136.clone(), f64_any(0x0000000000000000)))?) { Ok(f64_any(0x0000000000000000)) } else { if Any::<A>::to_boolean((Any::gt(_b136.clone(), _args.argument(1)))?) { Ok(_args.argument(1)) } else { Ok(_b136.clone()) } }
85 }, 2, [_b133.clone()].to_array(), Some("($1,$2)=>{const $3=$0($1);return $3<0?0:$3>$2?$2:$3;}")).to_any();
86 let _b238: Any<A> = [(string_key("static"), A::static_function(|_self, _args| { Any::call(A::frame(_self)[0].clone(), [A::frame(_self)[1].clone(), _args.argument(0)].to_array().to_any()) }, 1, [_b11.clone(), _b100.clone()].to_array(), Some("($2)=>$0($1,$2)")).to_any()), (string_key("dot"), {
87 let _b201: Any<A> = [(string_key("startsWith"), {
88 let _b118: Any<A> = {
89 let _b106: Any<A> = (Any::dot(_b15.clone(), string_any("slice")).end())?;
90 A::static_function(|_self, _args| {
91 let _b110: Any<A> = (_args.argument(2) + (Any::dot(_args.argument(1), string_any("length")).end())?)?;
92 if Any::<A>::to_boolean((Any::gt(_b110.clone(), (Any::dot(_args.argument(0), string_any("length")).end())?))?) { Ok(false.to_any()) } else { strict_eq((Any::call(A::frame(_self)[0].clone(), [_args.argument(0), _args.argument(2), _b110.clone()].to_array().to_any()))?, _args.argument(1)) }
93 }, 3, [_b106.clone()].to_array(), Some("($1,$2,$3)=>{const $4=$3+$2.length;return $4>$1.length?false:$0($1,$3,$4)===$2;}")).to_any()
94 };
95 A::static_function(|_self, _args| { if Any::<A>::to_boolean((strict_ne((Any::typeof_(_args.argument(0)))?, string_any("string")))?) { Ok(Nullish::Undefined.to_any()) } else { Ok(A::static_function(|_self, _args| { Any::call(A::frame(_self)[0].clone(), [A::frame(_self)[1].clone(), (_args.argument(0).to_string().map(|v| v.to_any()))?, (Any::call(A::frame(_self)[2].clone(), [_args.argument(1), (Any::dot(A::frame(_self)[1].clone(), string_any("length")).end())?].to_array().to_any()))?].to_array().to_any()) }, 2, [A::frame(_self)[0].clone(), _args.argument(0), A::frame(_self)[1].clone()].to_array(), Some("($3,$4)=>$0($1,String($3),$2($4,$1.length))")).to_any()) } }, 1, [_b118.clone(), _b142.clone()].to_array(), Some("($2)=>typeof $2!==\"string\"?undefined:($3,$4)=>$0($2,String($3),$1($4,$2.length))")).to_any()
96 }), (string_key("codePointAt"), A::static_function(|_self, _args| { if Any::<A>::to_boolean((strict_ne((Any::typeof_(_args.argument(0)))?, string_any("string")))?) { Ok(Nullish::Undefined.to_any()) } else { Ok(A::static_function(|_self, _args| {
97 let _b169: Any<A> = (Any::call(A::frame(_self)[0].clone(), [_args.argument(0)].to_array().to_any()))?;
98 if Any::<A>::to_boolean({
99 let _b170: Any<A> = (Any::lt(_b169.clone(), f64_any(0x0000000000000000)))?;
100 if Any::<A>::to_boolean(_b170.clone()) { _b170.clone() } else { (Any::ge(_b169.clone(), (Any::dot(A::frame(_self)[1].clone(), string_any("length")).end())?))? }
101 }) { Ok(Nullish::Undefined.to_any()) } else {
102 let _b177: Any<A> = (Any::call(A::frame(_self)[2].clone(), [A::frame(_self)[1].clone(), _b169.clone()].to_array().to_any()))?;
103 if Any::<A>::to_boolean({
104 let _b178: Any<A> = (Any::lt(_b177.clone(), f64_any(0x40eb000000000000)))?;
105 let _b180: Any<A> = if Any::<A>::to_boolean(_b178.clone()) { _b178.clone() } else { (Any::gt(_b177.clone(), f64_any(0x40eb7fe000000000)))? };
106 if Any::<A>::to_boolean(_b180.clone()) { _b180.clone() } else { (strict_eq((_b169.clone() + f64_any(0x3ff0000000000000))?, (Any::dot(A::frame(_self)[1].clone(), string_any("length")).end())?))? }
107 }) { Ok(_b177.clone()) } else {
108 let _b186: Any<A> = (Any::call(A::frame(_self)[2].clone(), [A::frame(_self)[1].clone(), (_b169.clone() + f64_any(0x3ff0000000000000))?].to_array().to_any()))?;
109 if Any::<A>::to_boolean({
110 let _b187: Any<A> = (Any::lt(_b186.clone(), f64_any(0x40eb800000000000)))?;
111 if Any::<A>::to_boolean(_b187.clone()) { _b187.clone() } else { (Any::gt(_b186.clone(), f64_any(0x40ebffe000000000)))? }
112 }) { Ok(_b177.clone()) } else { (((_b177.clone() - f64_any(0x40eb000000000000))? * f64_any(0x4090000000000000))? + (_b186.clone() - f64_any(0x40eb800000000000))?)? + f64_any(0x40f0000000000000) }
113 }
114 }
115 }, 1, [A::frame(_self)[0].clone(), _args.argument(0), A::frame(_self)[1].clone()].to_array(), Some("($3)=>{const $4=$0($3);return (()=>{const $5=$4<0;return $5?$5:$4>=$1.length;})()?undefined:(()=>{const $6=$2($1,$4);return (()=>{const $7=$6<55296;const $8=$7?$7:$6>56319;return $8?$8:$4+1===$1.length;})()?$6:(()=>{const $9=$2($1,$4+1);return (()=>{const $10=$9<56320;return $10?$10:$9>57343;})()?$6:($6-55296)*1024+($9-56320)+65536;})();})();}")).to_any()) } }, 1, [_b133.clone(), _b16.clone()].to_array(), Some("($2)=>typeof $2!==\"string\"?undefined:($3)=>{const $4=$0($3);return (()=>{const $5=$4<0;return $5?$5:$4>=$2.length;})()?undefined:(()=>{const $6=$1($2,$4);return (()=>{const $7=$6<55296;const $8=$7?$7:$6>56319;return $8?$8:$4+1===$2.length;})()?$6:(()=>{const $9=$1($2,$4+1);return (()=>{const $10=$9<56320;return $10?$10:$9>57343;})()?$6:($6-55296)*1024+($9-56320)+65536;})();})();}")).to_any())].to_object().to_any();
116 A::static_function(|_self, _args| { if Any::<A>::to_boolean((Any::call(A::frame(_self)[0].clone(), [_args.argument(0), _args.argument(1)].to_array().to_any()))?) { Any::call(A::frame(_self)[1].clone(), [_args.argument(0), _args.argument(1)].to_array().to_any()) } else {
117 let _b209: Any<A> = (Any::call(A::frame(_self)[1].clone(), [A::frame(_self)[2].clone(), _args.argument(1)].to_array().to_any()))?;
118 if Any::<A>::to_boolean((strict_eq(_b209.clone(), Nullish::Undefined.to_any()))?) { Ok(Nullish::Undefined.to_any()) } else { Any::call(_b209.clone(), [_args.argument(0)].to_array().to_any()) }
119 } }, 2, [_b12.clone(), _b11.clone(), _b201.clone()].to_array(), Some("($3,$4)=>$0($3,$4)?$1($3,$4):(()=>{const $5=$1($2,$4);return $5===undefined?undefined:$5($3);})()")).to_any()
120 }), (string_key("in"), A::static_function(|_self, _args| { if Any::<A>::to_boolean({
121 let _b218: Any<A> = (strict_eq(_args.argument(1), Nullish::Null.to_any()))?;
122 if Any::<A>::to_boolean(_b218.clone()) { _b218.clone() } else {
123 let _b220: Any<A> = (strict_ne((Any::typeof_(_args.argument(1)))?, string_any("object")))?;
124 if Any::<A>::to_boolean(_b220.clone()) { (strict_ne((Any::typeof_(_args.argument(1)))?, string_any("function")))? } else { _b220.clone() }
125 }
126 }) { Err(string_any("in: not an object")) } else {
127 let _b228: Any<A> = (Any::call(A::frame(_self)[0].clone(), [_args.argument(1), _args.argument(0)].to_array().to_any()))?;
128 if Any::<A>::to_boolean(_b228.clone()) { Ok(_b228.clone()) } else {
129 let _b229: Any<A> = (strict_eq(_args.argument(0), string_any("length")))?;
130 if Any::<A>::to_boolean(_b229.clone()) {
131 let _b230: Any<A> = (Any::instanceof_(_args.argument(1), Constructor::Array))?;
132 if Any::<A>::to_boolean(_b230.clone()) { Ok(_b230.clone()) } else { strict_eq((Any::typeof_(_args.argument(1)))?, string_any("function")) }
133 } else { Ok(_b229.clone()) }
134 }
135 } }, 2, [_b12.clone()].to_array(), Some("($1,$2)=>(()=>{const $3=$2===null;return $3?$3:(()=>{const $4=typeof $2!==\"object\";return $4?typeof $2!==\"function\":$4;})();})()?(()=>{throw \"in: not an object\";})():(()=>{const $5=$0($2,$1);return $5?$5:(()=>{const $6=$1===\"length\";return $6?(()=>{const $7=$2 instanceof Array;return $7?$7:typeof $2===\"function\";})():$6;})();})()")).to_any())].to_object().to_any();
136 Ok(_b238.clone())
137}