Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: test/mjsunit/es6/block-conflicts.js

Issue 1286923002: Add class to existing lexical scoping tests (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix test bug Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | test/mjsunit/es6/block-let-declaration.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Test for conflicting variable bindings. 5 // Test for conflicting variable bindings.
6 6
7 "use strict"; 7 "use strict";
8 8
9 function CheckException(e) { 9 function CheckException(e) {
10 var string = e.toString(); 10 var string = e.toString();
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 "let x = 0;", 72 "let x = 0;",
73 "let x = undefined;", 73 "let x = undefined;",
74 "let x = function() {};", 74 "let x = function() {};",
75 "let x, y;", 75 "let x, y;",
76 "let y, x;", 76 "let y, x;",
77 "const x = 0;", 77 "const x = 0;",
78 "const x = undefined;", 78 "const x = undefined;",
79 "const x = function() {};", 79 "const x = function() {};",
80 "const x = 2, y = 3;", 80 "const x = 2, y = 3;",
81 "const y = 4, x = 5;", 81 "const y = 4, x = 5;",
82 "class x { }",
82 ]; 83 ];
84 function forCompatible(bind) {
85 return !bind.startsWith('class');
86 }
83 var varbinds = [ "var x;", 87 var varbinds = [ "var x;",
84 "var x = 0;", 88 "var x = 0;",
85 "var x = undefined;", 89 "var x = undefined;",
86 "var x = function() {};", 90 "var x = function() {};",
87 "var x, y;", 91 "var x, y;",
88 "var y, x;", 92 "var y, x;",
89 ]; 93 ];
90 var funbind = "function x() {}"; 94 var funbind = "function x() {}";
91 95
92 for (var l = 0; l < letbinds.length; ++l) { 96 for (var l = 0; l < letbinds.length; ++l) {
93 // Test conflicting let/var bindings. 97 // Test conflicting let/var bindings.
94 for (var v = 0; v < varbinds.length; ++v) { 98 for (var v = 0; v < varbinds.length; ++v) {
95 // Same level. 99 // Same level.
96 TestConflict(letbinds[l] + varbinds[v]); 100 TestConflict(letbinds[l] + varbinds[v]);
97 TestConflict(varbinds[v] + letbinds[l]); 101 TestConflict(varbinds[v] + letbinds[l]);
98 // Different level. 102 // Different level.
99 TestConflict(letbinds[l] + '{' + varbinds[v] + '}'); 103 TestConflict(letbinds[l] + '{' + varbinds[v] + '}');
100 TestConflict('{' + varbinds[v] +'}' + letbinds[l]); 104 TestConflict('{' + varbinds[v] +'}' + letbinds[l]);
101 TestNoConflict(varbinds[v] + '{' + letbinds[l] + '}'); 105 TestNoConflict(varbinds[v] + '{' + letbinds[l] + '}');
102 TestNoConflict('{' + letbinds[l] + '}' + varbinds[v]); 106 TestNoConflict('{' + letbinds[l] + '}' + varbinds[v]);
103 // For loop. 107 // For loop.
104 TestConflict('for (' + letbinds[l] + '0;) {' + varbinds[v] + '}'); 108 if (forCompatible(letbinds[l])) {
109 TestConflict('for (' + letbinds[l] + '0;) {' + varbinds[v] + '}');
110 }
105 TestNoConflict('for (' + varbinds[v] + '0;) {' + letbinds[l] + '}'); 111 TestNoConflict('for (' + varbinds[v] + '0;) {' + letbinds[l] + '}');
106 } 112 }
107 113
108 // Test conflicting let/let bindings. 114 // Test conflicting let/let bindings.
109 for (var k = 0; k < letbinds.length; ++k) { 115 for (var k = 0; k < letbinds.length; ++k) {
110 // Same level. 116 // Same level.
111 TestConflict(letbinds[l] + letbinds[k]); 117 TestConflict(letbinds[l] + letbinds[k]);
112 TestConflict(letbinds[k] + letbinds[l]); 118 TestConflict(letbinds[k] + letbinds[l]);
113 // Different level. 119 // Different level.
114 TestNoConflict(letbinds[l] + '{ ' + letbinds[k] + '}'); 120 TestNoConflict(letbinds[l] + '{ ' + letbinds[k] + '}');
115 TestNoConflict('{' + letbinds[k] +'} ' + letbinds[l]); 121 TestNoConflict('{' + letbinds[k] +'} ' + letbinds[l]);
116 // For loop. 122 // For loop.
117 TestNoConflict('for (' + letbinds[l] + '0;) {' + letbinds[k] + '}'); 123 if (forCompatible(letbinds[l])) {
118 TestNoConflict('for (' + letbinds[k] + '0;) {' + letbinds[l] + '}'); 124 TestNoConflict('for (' + letbinds[l] + '0;) {' + letbinds[k] + '}');
125 }
126 if (forCompatible(letbinds[k])) {
127 TestNoConflict('for (' + letbinds[k] + '0;) {' + letbinds[l] + '}');
128 }
119 } 129 }
120 130
121 // Test conflicting function/let bindings. 131 // Test conflicting function/let bindings.
122 // Same level. 132 // Same level.
123 TestConflict(letbinds[l] + funbind); 133 TestConflict(letbinds[l] + funbind);
124 TestConflict(funbind + letbinds[l]); 134 TestConflict(funbind + letbinds[l]);
125 // Different level. 135 // Different level.
126 TestNoConflict(letbinds[l] + '{' + funbind + '}'); 136 TestNoConflict(letbinds[l] + '{' + funbind + '}');
127 TestNoConflict('{' + funbind + '}' + letbinds[l]); 137 TestNoConflict('{' + funbind + '}' + letbinds[l]);
128 TestNoConflict(funbind + '{' + letbinds[l] + '}'); 138 TestNoConflict(funbind + '{' + letbinds[l] + '}');
129 TestNoConflict('{' + letbinds[l] + '}' + funbind); 139 TestNoConflict('{' + letbinds[l] + '}' + funbind);
130 // For loop. 140 // For loop.
131 TestNoConflict('for (' + letbinds[l] + '0;) {' + funbind + '}'); 141 if (forCompatible(letbinds[l])) {
142 TestNoConflict('for (' + letbinds[l] + '0;) {' + funbind + '}');
143 }
132 144
133 // Test conflicting parameter/let bindings. 145 // Test conflicting parameter/let bindings.
134 TestConflict('(function(x) {' + letbinds[l] + '})();'); 146 TestConflict('(function(x) {' + letbinds[l] + '})();');
135 } 147 }
136 148
137 // Test conflicting function/var bindings. 149 // Test conflicting function/var bindings.
138 for (var v = 0; v < varbinds.length; ++v) { 150 for (var v = 0; v < varbinds.length; ++v) {
139 // Same level. 151 // Same level.
140 TestLocalConflict(varbinds[v] + funbind); 152 TestLocalConflict(varbinds[v] + funbind);
141 TestLocalConflict(funbind + varbinds[v]); 153 TestLocalConflict(funbind + varbinds[v]);
(...skipping 14 matching lines...) Expand all
156 // Test conflicting parameter/var bindings. 168 // Test conflicting parameter/var bindings.
157 for (var v = 0; v < varbinds.length; ++v) { 169 for (var v = 0; v < varbinds.length; ++v) {
158 TestNoConflict('(function (x) {' + varbinds[v] + '})();'); 170 TestNoConflict('(function (x) {' + varbinds[v] + '})();');
159 } 171 }
160 172
161 // Test conflicting catch/function bindings. 173 // Test conflicting catch/function bindings.
162 TestNoConflict('try {} catch(x) {' + funbind + '}'); 174 TestNoConflict('try {} catch(x) {' + funbind + '}');
163 175
164 // Test conflicting parameter/function bindings. 176 // Test conflicting parameter/function bindings.
165 TestNoConflict('(function (x) {' + funbind + '})();'); 177 TestNoConflict('(function (x) {' + funbind + '})();');
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/es6/block-let-declaration.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698