Home | History | Annotate | Download | only in regress
      1 // Copyright 2014 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 'use strict';
      6 
      7 // Top-level code
      8 let s = 0;
      9 let f = [undefined, undefined, undefined]
     10 for (const x of [1,2,3]) {
     11   s += x;
     12   f[x-1] = function() { return x; }
     13 }
     14 assertEquals(6, s);
     15 assertEquals(1, f[0]());
     16 assertEquals(2, f[1]());
     17 assertEquals(3, f[2]());
     18 
     19 let x = 1;
     20 s = 0;
     21 for (const z of [x, x+1, x+2]) {
     22   s += z;
     23 }
     24 assertEquals(6, s);
     25 
     26 s = 0;
     27 var q = 1;
     28 for (const x of [q, q+1, q+2]) {
     29   s += x;
     30 }
     31 assertEquals(6, s);
     32 
     33 let z = 1;
     34 s = 0;
     35 for (const x = 1; z < 2; z++) {
     36   s += x + z;
     37 }
     38 assertEquals(2, s);
     39 
     40 
     41 s = "";
     42 for (const x in [1,2,3]) {
     43   s += x;
     44 }
     45 assertEquals("012", s);
     46 
     47 assertThrows("'use strict'; for (const x in [1,2,3]) { x++ }", TypeError);
     48 
     49 // Function scope
     50 (function() {
     51   let s = 0;
     52   for (const x of [1,2,3]) {
     53     s += x;
     54   }
     55   assertEquals(6, s);
     56 
     57   let x = 1;
     58   s = 0;
     59   for (const q of [x, x+1, x+2]) {
     60     s += q;
     61   }
     62   assertEquals(6, s);
     63 
     64   s = 0;
     65   var q = 1;
     66   for (const x of [q, q+1, q+2]) {
     67     s += x;
     68   }
     69   assertEquals(6, s);
     70 
     71   s = "";
     72   for (const x in [1,2,3]) {
     73     s += x;
     74   }
     75   assertEquals("012", s);
     76 }());
     77