Home | History | Annotate | Download | only in mjsunit
      1 // Copyright 2015 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Flags: --allow-natives-syntax
      6 
      7 function test(expected, f) {
      8   assertEquals(expected, f());
      9   assertEquals(expected, f());
     10   %OptimizeFunctionOnNextCall(f);
     11   assertEquals(expected, f());
     12   assertEquals(expected, f());
     13 }
     14 
     15 function testThrows(f) {
     16   assertThrows(f);
     17   assertThrows(f);
     18   %OptimizeFunctionOnNextCall(f);
     19   assertThrows(f);
     20   assertThrows(f);
     21 }
     22 
     23 function f1() { return undefined; }
     24 test(void 0, f1);
     25 
     26 function f2() { return void 0; }
     27 test(void 0, f2);
     28 
     29 function f3() { return void 0 == void 0; }
     30 test(true, f3);
     31 
     32 function f4() { return void 0 == undefined; }
     33 test(true, f4);
     34 
     35 function f5() { return undefined == void 0; }
     36 test(true, f5);
     37 
     38 function f6() { return "" + undefined; }
     39 test("undefined", f6);
     40 
     41 function f7() { return void 0 === void 0; }
     42 test(true, f7);
     43 
     44 function f8() { return void 0 === undefined; }
     45 test(true, f8);
     46 
     47 function f9() { return undefined === void 0; }
     48 test(true, f9);
     49 
     50 delete undefined;
     51 
     52 function g1() { return undefined; }
     53 test(void 0, g1);
     54 
     55 function g2() { return void 0; }
     56 test(void 0, g2);
     57 
     58 function g3() { return void 0 == void 0; }
     59 test(true, g3);
     60 
     61 function g4() { return void 0 == undefined; }
     62 test(true, g4);
     63 
     64 function g5() { return undefined == void 0; }
     65 test(true, g5);
     66 
     67 function g6() { return "" + undefined; }
     68 test("undefined", g6);
     69 
     70 function g7() { return void 0 === void 0; }
     71 test(true, g7);
     72 
     73 function g8() { return void 0 === undefined; }
     74 test(true, g8);
     75 
     76 function g9() { return undefined === void 0; }
     77 test(true, g9);
     78 
     79 undefined = 111;
     80 
     81 function h1() { return undefined; }
     82 test(void 0, h1);
     83 
     84 function h2() { return void 0; }
     85 test(void 0, h2);
     86 
     87 function h3() { return void 0 == void 0; }
     88 test(true, h3);
     89 
     90 function h4() { return void 0 == undefined; }
     91 test(true, h4);
     92 
     93 function h5() { return undefined == void 0; }
     94 test(true, h5);
     95 
     96 function h6() { return "" + undefined; }
     97 test("undefined", h6);
     98 
     99 function h7() { return void 0 === void 0; }
    100 test(true, h7);
    101 
    102 function h8() { return void 0 === undefined; }
    103 test(true, h8);
    104 
    105 function h9() { return undefined === void 0; }
    106 test(true, h9);
    107 
    108 // -------------
    109 
    110 function k1() { return this.undefined; }
    111 test(void 0, k1);
    112 
    113 function k2() { return void 0; }
    114 test(void 0, k2);
    115 
    116 function k3() { return void 0 == void 0; }
    117 test(true, k3);
    118 
    119 function k4() { return void 0 == this.undefined; }
    120 test(true, k4);
    121 
    122 function k5() { return this.undefined == void 0; }
    123 test(true, k5);
    124 
    125 function k6() { return "" + this.undefined; }
    126 test("undefined", k6);
    127 
    128 function k7() { return void 0 === void 0; }
    129 test(true, k7);
    130 
    131 function k8() { return void 0 === this.undefined; }
    132 test(true, k8);
    133 
    134 function k9() { return this.undefined === void 0; }
    135 test(true, k9);
    136 
    137 // -------------
    138 
    139 function m1() { return undefined.x; }
    140 testThrows(m1);
    141 
    142 function m2() { return undefined.undefined; }
    143 testThrows(m2);
    144 
    145 function m3() { return (void 0).x; }
    146 testThrows(m3);
    147 
    148 function m4() { return (void 0).undefined; }
    149 testThrows(m4);
    150