blob: 8282d779a19635df91ceb3c555f9dbf5049a4c95 [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00001// 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
Ben Murdochda12d292016-06-02 14:46:10 +01005// let is usable as a variable with var, but not let or ES6 const
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00006
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
19assertThrows(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
41assertThrows(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
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000050(function() {
51 function let() {
52 return 1;
53 }
54 assertEquals(1, let());
55})()
56
57assertThrows('for (let of []) {}', SyntaxError);