known-class.js (2656B)
1 var IsRegExpObject = getSelfHostedValue("IsRegExpObject"); 2 var IsCallable = getSelfHostedValue("IsCallable"); 3 var NewArrayIterator = getSelfHostedValue("NewArrayIterator"); 4 var GuardToArrayIterator = getSelfHostedValue("GuardToArrayIterator"); 5 6 function array() { 7 var a = [0]; 8 assertEq(Array.isArray(a), true); 9 assertEq(typeof a, "object"); 10 assertEq(IsRegExpObject(a), false); 11 assertEq(IsCallable(a), false); 12 } 13 14 function array2(x) { 15 var a; 16 if (x) { 17 a = [0]; 18 } else { 19 a = [1]; 20 } 21 assertEq(Array.isArray(a), true); 22 assertEq(typeof a, "object"); 23 assertEq(IsRegExpObject(a), false); 24 assertEq(IsCallable(a), false); 25 } 26 27 function object() { 28 var o = {a: 1}; 29 assertEq(Array.isArray(o), false); 30 assertEq(typeof o, "object"); 31 assertEq(IsRegExpObject(o), false); 32 assertEq(IsCallable(o), false); 33 } 34 35 function object2(x) { 36 var o; 37 if (x) { 38 o = {a: 1}; 39 } else { 40 o = {b: 1}; 41 } 42 assertEq(Array.isArray(o), false); 43 assertEq(typeof o, "object"); 44 assertEq(IsRegExpObject(o), false); 45 assertEq(IsCallable(o), false); 46 } 47 48 function mixed(x) { 49 var o; 50 if (x) { 51 o = [1]; 52 } else { 53 o = {a: 1}; 54 } 55 assertEq(Array.isArray(o), x); 56 assertEq(typeof o, "object"); 57 assertEq(IsRegExpObject(o), false); 58 assertEq(IsCallable(o), false); 59 } 60 61 function lambda() { 62 function f() {} 63 assertEq(Array.isArray(f), false); 64 assertEq(typeof f, "function"); 65 assertEq(IsRegExpObject(f), false); 66 assertEq(IsCallable(f), true); 67 } 68 69 function arrow() { 70 var f = () => {}; 71 assertEq(Array.isArray(f), false); 72 assertEq(typeof f, "function"); 73 assertEq(IsRegExpObject(f), false); 74 assertEq(IsCallable(f), true); 75 } 76 77 function regexp() { 78 var r = /a/; 79 assertEq(Array.isArray(r), false); 80 assertEq(typeof r, "object"); 81 assertEq(IsRegExpObject(r), true); 82 assertEq(IsCallable(r), false); 83 } 84 85 function regexp2(x) { 86 var a; 87 if (x) { 88 a = /a/; 89 } else { 90 a = /b/; 91 } 92 assertEq(Array.isArray(a), false); 93 assertEq(typeof a, "object"); 94 assertEq(IsRegExpObject(a), true); 95 assertEq(IsCallable(a), false); 96 } 97 98 function iterator() { 99 var i = NewArrayIterator(); 100 assertEq(Array.isArray(i), false); 101 assertEq(typeof i, "object"); 102 assertEq(IsRegExpObject(i), false); 103 assertEq(IsCallable(i), false); 104 assertEq(GuardToArrayIterator(i), i); 105 } 106 107 var b = true; 108 for (var i = 0; i < 1e4; i++) { 109 array(); 110 array2(b); 111 object(); 112 object2(b); 113 mixed(b); 114 lambda(); 115 arrow(); 116 regexp() 117 regexp2(b); 118 iterator(); 119 120 b = !b; 121 }