Home | History | Annotate | Download | only in es6
      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 
      6 (function testInFunctionDeclaration() {
      7   var calls = 0;
      8   function f() {
      9     (() => {
     10       calls++;
     11       assertEquals(2, arguments.length);
     12       assertEquals('a', arguments[0]);
     13       assertEquals('b', arguments[1]);
     14     })();
     15   }
     16   f('a', 'b');
     17   assertEquals(1, calls);
     18 
     19   calls = 0;
     20   new f('a', 'b');
     21   assertEquals(1, calls);
     22 })();
     23 
     24 
     25 (function testInFunctionExpression() {
     26   var calls = 0;
     27   var f = function() {
     28     (() => {
     29       calls++;
     30       assertEquals(2, arguments.length);
     31       assertEquals('a', arguments[0]);
     32       assertEquals('b', arguments[1]);
     33     })();
     34   }
     35   f('a', 'b');
     36   assertEquals(1, calls);
     37 })();
     38 
     39 
     40 (function testInConstructor() {
     41   'use strict';
     42 
     43   var calls = 0;
     44   class C {
     45     constructor() {
     46       (() => {
     47         calls++;
     48         assertEquals(2, arguments.length);
     49         assertEquals('a', arguments[0]);
     50         assertEquals('b', arguments[1]);
     51       })();
     52     }
     53   }
     54   new C('a', 'b');
     55   assertEquals(1, calls);
     56 })();
     57 
     58 
     59 (function testInSetter() {
     60   'use strict';
     61 
     62   var calls = 0;
     63   var o = {
     64     set x(_) {
     65       (() => {
     66         calls++;
     67         assertEquals(1, arguments.length);
     68         assertEquals('a', arguments[0]);
     69       })();
     70     }
     71   }
     72   o.x = 'a';
     73   assertEquals(1, calls);
     74 })();
     75 
     76 
     77 (function testMappedArguments() {
     78   var calls = 0;
     79   function f(x) {
     80     x = 'c';
     81     (() => {
     82       calls++;
     83       assertEquals(2, arguments.length);
     84       assertEquals('c', arguments[0]);
     85       x = 'a';
     86       assertEquals('a', arguments[0]);
     87       assertEquals('b', arguments[1]);
     88     })();
     89   }
     90   f('a', 'b');
     91   assertEquals(1, calls);
     92 })();
     93 
     94 
     95 (function testUnMappedArguments() {
     96   'use strict';
     97 
     98   var calls = 0;
     99   function f(x) {
    100     x = 'c';
    101     (() => {
    102       calls++;
    103       assertEquals(2, arguments.length);
    104       assertEquals('a', arguments[0]);
    105       assertEquals('b', arguments[1]);
    106     })();
    107   }
    108   f('a', 'b');
    109   assertEquals(1, calls);
    110 })();
    111 
    112 
    113 (function testClosure() {
    114   var calls = 0;
    115   function f(x) {
    116     return () => {
    117       calls++;
    118       assertEquals(2, arguments.length);
    119       assertEquals('a', arguments[0]);
    120       assertEquals('b', arguments[1]);
    121     };
    122   }
    123   f('a', 'b')();
    124   assertEquals(1, calls);
    125 })();
    126 
    127 
    128 (function testClosureMappedArguments() {
    129   var calls = 0;
    130   function f(x) {
    131     x = 'c';
    132     return () => {
    133       calls++;
    134       assertEquals(2, arguments.length);
    135       assertEquals('c', arguments[0]);
    136       x = 'a';
    137       assertEquals('a', arguments[0]);
    138       assertEquals('b', arguments[1]);
    139     };
    140   }
    141   f('a', 'b')();
    142   assertEquals(1, calls);
    143 })();
    144 
    145 
    146 (function testParamNamedArguments() {
    147   var calls = 0;
    148   function f(arguments) {
    149     (() => {
    150       calls++;
    151       assertEquals('a', arguments);
    152     })();
    153   }
    154   f('a');
    155   assertEquals(1, calls);
    156 })();
    157