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 // let is usable as a variable with var, but not let or ES6 const
      6 
      7 (function (){
      8   assertEquals(undefined, let);
      9 
     10   var let;
     11 
     12   let = 5;
     13   assertEquals(5, let);
     14 
     15   (function() { var let = 1; assertEquals(1, let); })();
     16   assertEquals(5, let);
     17 })();
     18 
     19 assertThrows(function() { return let; }, ReferenceError);
     20 
     21 (function() {
     22    var let, sum = 0;
     23    for (let in [1, 2, 3, 4]) sum += Number(let);
     24    assertEquals(6, sum);
     25 
     26    (function() { for (var let of [4, 5]) sum += let; })();
     27    assertEquals(15, sum);
     28 
     29    (function() { for (var let in [6]) sum += Number([6][let]); })();
     30    assertEquals(21, sum);
     31 
     32    for (let = 7; let < 8; let++) sum += let;
     33    assertEquals(28, sum);
     34    assertEquals(8, let);
     35 
     36    (function() { for (var let = 8; let < 9; let++) sum += let; })();
     37    assertEquals(36, sum);
     38    assertEquals(8, let);
     39 })();
     40 
     41 assertThrows(function() { return let; }, ReferenceError);
     42 
     43 (function () {
     44   let obj = {};
     45   var {let} = {let() { return obj; }};
     46   let().x = 1;
     47   assertEquals(1, obj.x);
     48 })();
     49 
     50 (function() {
     51   function let() {
     52     return 1;
     53   }
     54   assertEquals(1, let());
     55 })()
     56 
     57 assertThrows('for (let of []) {}', SyntaxError);
     58