tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

bug813784.js (4937B)


      1 /* Test an inlined argument returns the arguments from the right function */
      2 function get_arg_2() { return arguments[2]; }
      3 function test() { return get_arg_2(1,2,3); }
      4 
      5 assertEq(test("a","b","c"), 3);
      6 assertEq(test("a","b","c"), 3);
      7 
      8 /* Test the right length of the argument vector gets returned */
      9 function arg_len() { return arguments.length; }
     10 function test2() { return arg_len(1,2,3); }
     11 
     12 assertEq(test2("a","b","c","d"), 3);
     13 assertEq(test2("a","b","c","d"), 3);
     14 
     15 /* Test returning the argument vector */
     16 function get_arg() { return arguments; }
     17 function test3() { return get_arg(1,2,3) }
     18 
     19 var arg = test3("a","b","c","d","e");
     20 assertEq(arg.length, 3);
     21 assertEq(arg[0], 1);
     22 assertEq(arg[1], 2);
     23 assertEq(arg[2], 3);
     24 var arg = test3("a","b","c","d","e");
     25 assertEq(arg.length, 3);
     26 assertEq(arg[0], 1);
     27 assertEq(arg[1], 2);
     28 assertEq(arg[2], 3);
     29 
     30 /* Test funapply with arguments */
     31 function return0(a, b, c) { return 0; }
     32 function funapply() { return return0.apply(undefined, arguments); }
     33 function test4() { return funapply(1,2,3) }
     34 
     35 assertEq(test4("a","b","c","d","e"), 0);
     36 assertEq(test4("a","b","c","d","e"), 0);
     37 
     38 /* Test if funapply gets the right arguments */
     39 function apply3(a, b, c) {
     40  assertEq(a,1)
     41  assertEq(b,2)
     42  assertEq(c,3)
     43 }
     44 function funapply2() { return apply3.apply(undefined, arguments); }
     45 function test5() { return funapply2(1,2,3) }
     46 
     47 test5("a","b","c","d","e");
     48 test5("a","b","c","d","e");
     49 
     50 /* Test funapply when argument vector has less args than callee and callee known */
     51 function apply_fun1(a, b, c) { assertEq(c, undefined) }
     52 function funapply3() { return apply_fun1.apply(undefined, arguments); }
     53 function test7() { return funapply3(1,2) }
     54 
     55 test7("a","b","c","d","e");
     56 test7("a","b","c","d","e");
     57 
     58 /* Test funapply when argument vector has less args than callee and callee unknown */
     59 var fun;
     60 function apply_fun2(a, b, c) { assertEq(c, undefined) }
     61 function funapply4() { return fun.apply(undefined, arguments); }
     62 function test8() { return funapply4(1,2) }
     63 
     64 fun = apply_fun1;
     65 test8("a","b","c","d","e");
     66 fun = apply_fun2;
     67 test8("a","b","c","d","e");
     68 fun = apply_fun1;
     69 test8("a","b","c","d","e");
     70 fun = apply_fun2;
     71 test8("a","b","c","d","e");
     72 
     73 ////////////
     74 
     75 function dumpArgs(i) { if (i == 90) return funapply5.arguments.length; return [i]; }
     76 function funapply5() { return dumpArgs.apply(undefined, arguments); }
     77 function test9(i) { return funapply5(i); }
     78 
     79 assertEq(test9(89)[0], 89);
     80 assertEq(test9(90), 1);
     81 
     82 /////////////
     83 
     84 function notinlined() {
     85    assertEq(arguments[0], 4);
     86    assertEq(arguments[1], 5);
     87    assertEq(arguments[2], 6);
     88 }
     89 
     90 function inline2(a) { return notinlined(4,5,6); }
     91 function inline() { return inline2(1,2,3); }
     92 function base1() { return inline(-1,-2,-3); }
     93 
     94 base1(10,11,12);
     95 base1(10,11,12);
     96 
     97 ////////////////
     98 
     99 function inlined(a) {
    100    if (a == 11) {
    101        a = undefined;
    102        return arguments;
    103    }
    104 }
    105 
    106 function inline4(a) { return inlined(a,5,6); }
    107 function inline3(a) { return inline4(a,2,3); }
    108 function base2(a) { return inline3(a,-2,-3); }
    109 
    110 var args = base2(10,11,12);
    111 assertEq(args, undefined);
    112 var args = base2(11,11,12);
    113 assertEq(args[0], undefined);
    114 assertEq(args[1], 5);
    115 assertEq(args[2], 6);
    116 var args = base2(10,11,12);
    117 assertEq(args, undefined);
    118 var args = base2(11,11,12);
    119 assertEq(args[0], undefined);
    120 assertEq(args[1], 5);
    121 assertEq(args[2], 6);
    122 
    123 //////////////////
    124 
    125 function arg_len2() { assertEq(arguments.length, 4); }
    126 function bailing_arg_len(a) {
    127    if (a == 90) {
    128        bailout();
    129        arg_len.apply(undefined, arguments);
    130    }
    131    assertEq(arguments.length, 4);
    132    return arguments;
    133 }
    134 function test10(i) { return bailing_arg_len(i,2,3,4); }
    135 
    136 var args = test10(1, "b");
    137 assertEq(args.length, 4)
    138 assertEq(args[0], 1)
    139 assertEq(args[1], 2)
    140 assertEq(args[2], 3)
    141 assertEq(args[3], 4)
    142 
    143 var args = test10(90, 'b');
    144 assertEq(args.length, 4)
    145 assertEq(args[0], 90)
    146 assertEq(args[1], 2)
    147 assertEq(args[2], 3)
    148 assertEq(args[3], 4)
    149 
    150 ////////////
    151 
    152 function dumpArgs11(i) { return funapply11.arguments; eval(""); }
    153 function funapply11(i) { return dumpArgs11(i); }
    154 function test11(i) { return funapply11(i); }
    155 
    156 assertEq(test11(89)[0], 89);
    157 assertEq(test11(90)[0], 90);
    158 
    159 ////////////
    160 
    161 function dumpArgs12(i) { if (i == 90) return funapply12.arguments; return [i]; }
    162 function noion12(i) { return dumpArgs12(i); eval(""); }
    163 function funapply12(i) { return noion12(i); }
    164 function test12(i) { return funapply12(i); }
    165 
    166 assertEq(test12("89")[0], "89");
    167 assertEq(test12("90")[0], "90");
    168 
    169 ////////////
    170 
    171 function f13(i) { if (i == "90") return f13.arguments; return [i]; }
    172 function test13(i,b) { return f13(i,b); }
    173 
    174 assertEq(test13("89", 1)[0], "89");
    175 assertEq(test13("90", 2)[1], 2);
    176 
    177 ///////////
    178 
    179 function noion14(i) { if (i == 2) { return funapply14.arguments; } return [i]; eval(""); }
    180 function funapply14(i) {  if (i == 90) { i = "2"; } return noion14(i); }
    181 function test14(i) { return funapply14(i); }
    182 
    183 assertEq(test14("89")[0], "89");
    184 assertEq(test14("90")[0], "2");