OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 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 | 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 // Flags: --harmony-default-parameters | 5 // Flags: --harmony-default-parameters --harmony-rest-parameters |
6 // Flags: --harmony-rest-parameters --harmony-destructuring | |
7 | 6 |
8 | 7 |
9 (function TestDefaults() { | 8 (function TestDefaults() { |
10 function f1(x = 1) { return x } | 9 function f1(x = 1) { return x } |
11 assertEquals(1, f1()); | 10 assertEquals(1, f1()); |
12 assertEquals(1, f1(undefined)); | 11 assertEquals(1, f1(undefined)); |
13 assertEquals(2, f1(2)); | 12 assertEquals(2, f1(2)); |
14 assertEquals(null, f1(null)); | 13 assertEquals(null, f1(null)); |
15 | 14 |
16 function f2(x, y = x) { return x + y; } | 15 function f2(x, y = x) { return x + y; } |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 var x = 1; | 171 var x = 1; |
173 | 172 |
174 function f1(y = eval("var x = 2")) { with ({}) { return x; } } | 173 function f1(y = eval("var x = 2")) { with ({}) { return x; } } |
175 assertEquals(1, f1()); | 174 assertEquals(1, f1()); |
176 function f2(y = eval("var x = 2"), z = x) { return z; } | 175 function f2(y = eval("var x = 2"), z = x) { return z; } |
177 assertEquals(1, f2()); | 176 assertEquals(1, f2()); |
178 assertEquals(1, f2(0)); | 177 assertEquals(1, f2(0)); |
179 function f3(y = eval("var x = 2"), z = eval("x")) { return z; } | 178 function f3(y = eval("var x = 2"), z = eval("x")) { return z; } |
180 assertEquals(1, f3()); | 179 assertEquals(1, f3()); |
181 assertEquals(1, f3(0)); | 180 assertEquals(1, f3(0)); |
182 function f41({[eval("var x = 2; 'a'")]: w}, z = x) { return z; } | |
183 assertEquals(1, f41({})); | |
184 assertEquals(1, f41({a: 0})); | |
185 function f42({[eval("var x = 2; 'a'")]: w}, z = eval("x")) { return z; } | |
186 assertEquals(1, f42({})); | |
187 assertEquals(1, f42({a: 0})); | |
188 function f43({a: w = eval("var x = 2")}, z = x) { return z; } | |
189 assertEquals(1, f43({})); | |
190 assertEquals(1, f43({a: 0})); | |
191 function f44({a: w = eval("var x = 2")}, z = eval("x")) { return z; } | |
192 assertEquals(1, f44({})); | |
193 assertEquals(1, f44({a: 0})); | |
194 | |
195 function f5({a = eval("var x = 2"), b = x}) { return b; } | |
196 assertEquals(2, f5({})); | |
197 assertEquals(1, f5({a: 0})); | |
198 function f6({a = eval("var x = 2"), b = eval("x")}) { return b; } | |
199 assertEquals(2, f6({})); | |
200 assertEquals(1, f6({a: 0})); | |
201 function f71({[eval("var x = 2; 'a'")]: w, b = x}) { return b; } | |
202 assertEquals(2, f71({})); | |
203 assertEquals(2, f71({a: 0})); | |
204 function f72({[eval("var x = 2; 'a'")]: w, b = eval("x")}) { return b; } | |
205 assertEquals(2, f72({})); | |
206 assertEquals(2, f72({a: 0})); | |
207 function f73({a: w = eval("var x = 2"), b = x}) { return b; } | |
208 assertEquals(2, f73({})); | |
209 assertEquals(1, f73({a: 0})); | |
210 function f74({a: w = eval("var x = 2"), b = eval("x")}) { return b; } | |
211 assertEquals(2, f74({})); | |
212 assertEquals(1, f74({a: 0})); | |
213 function f8(y = (eval("var x = 2"), x)) { return y; } | 181 function f8(y = (eval("var x = 2"), x)) { return y; } |
214 assertEquals(2, f8()); | 182 assertEquals(2, f8()); |
215 assertEquals(0, f8(0)); | 183 assertEquals(0, f8(0)); |
216 | 184 |
217 function f11(z = eval("var y = 2")) { return y; } | 185 function f11(z = eval("var y = 2")) { return y; } |
218 assertThrows(f11, ReferenceError); | 186 assertThrows(f11, ReferenceError); |
219 function f12(z = eval("var y = 2"), b = y) {} | 187 function f12(z = eval("var y = 2"), b = y) {} |
220 assertThrows(f12, ReferenceError); | 188 assertThrows(f12, ReferenceError); |
221 function f13(z = eval("var y = 2"), b = eval("y")) {} | 189 function f13(z = eval("var y = 2"), b = eval("y")) {} |
222 assertThrows(f13, ReferenceError); | 190 assertThrows(f13, ReferenceError); |
223 | 191 |
224 function f21(f = () => x) { eval("var x = 2"); return f() } | 192 function f21(f = () => x) { eval("var x = 2"); return f() } |
225 assertEquals(1, f21()); | 193 assertEquals(1, f21()); |
226 assertEquals(3, f21(() => 3)); | 194 assertEquals(3, f21(() => 3)); |
227 function f22(f = () => eval("x")) { eval("var x = 2"); return f() } | 195 function f22(f = () => eval("x")) { eval("var x = 2"); return f() } |
228 assertEquals(1, f22()); | 196 assertEquals(1, f22()); |
229 assertEquals(3, f22(() => 3)); | 197 assertEquals(3, f22(() => 3)); |
230 | 198 |
231 var g1 = (y = eval("var x = 2")) => { with ({}) { return x; } }; | 199 var g1 = (y = eval("var x = 2")) => { with ({}) { return x; } }; |
232 assertEquals(1, g1()); | 200 assertEquals(1, g1()); |
233 var g2 = (y = eval("var x = 2"), z = x) => { return z; }; | 201 var g2 = (y = eval("var x = 2"), z = x) => { return z; }; |
234 assertEquals(1, g2()); | 202 assertEquals(1, g2()); |
235 assertEquals(1, g2(0)); | 203 assertEquals(1, g2(0)); |
236 var g3 = (y = eval("var x = 2"), z = eval("x")) => { return z; }; | 204 var g3 = (y = eval("var x = 2"), z = eval("x")) => { return z; }; |
237 assertEquals(1, g3()); | 205 assertEquals(1, g3()); |
238 assertEquals(1, g3(0)); | 206 assertEquals(1, g3(0)); |
239 var g41 = ({[eval("var x = 2; 'a'")]: w}, z = x) => { return z; }; | |
240 assertEquals(1, g41({})); | |
241 assertEquals(1, g41({a: 0})); | |
242 var g42 = ({[eval("var x = 2; 'a'")]: w}, z = eval("x")) => { return z; }; | |
243 assertEquals(1, g42({})); | |
244 assertEquals(1, g42({a: 0})); | |
245 var g43 = ({a: w = eval("var x = 2")}, z = x) => { return z; }; | |
246 assertEquals(1, g43({})); | |
247 assertEquals(1, g43({a: 0})); | |
248 var g44 = ({a: w = eval("var x = 2")}, z = eval("x")) => { return z; }; | |
249 assertEquals(1, g44({})); | |
250 assertEquals(1, g44({a: 0})); | |
251 | |
252 var g5 = ({a = eval("var x = 2"), b = x}) => { return b; }; | |
253 assertEquals(2, g5({})); | |
254 assertEquals(1, g5({a: 0})); | |
255 var g6 = ({a = eval("var x = 2"), b = eval("x")}) => { return b; }; | |
256 assertEquals(2, g6({})); | |
257 assertEquals(1, g6({a: 0})); | |
258 var g71 = ({[eval("var x = 2; 'a'")]: w, b = x}) => { return b; }; | |
259 assertEquals(2, g71({})); | |
260 assertEquals(2, g71({a: 0})); | |
261 var g72 = ({[eval("var x = 2; 'a'")]: w, b = eval("x")}) => { return b; }; | |
262 assertEquals(2, g72({})); | |
263 assertEquals(2, g72({a: 0})); | |
264 var g73 = ({a: w = eval("var x = 2"), b = x}) => { return b; }; | |
265 assertEquals(2, g73({})); | |
266 assertEquals(1, g73({a: 0})); | |
267 var g74 = ({a: w = eval("var x = 2"), b = eval("x")}) => { return b; }; | |
268 assertEquals(2, g74({})); | |
269 assertEquals(1, g74({a: 0})); | |
270 var g8 = (y = (eval("var x = 2"), x)) => { return y; }; | 207 var g8 = (y = (eval("var x = 2"), x)) => { return y; }; |
271 assertEquals(2, g8()); | 208 assertEquals(2, g8()); |
272 assertEquals(0, g8(0)); | 209 assertEquals(0, g8(0)); |
273 | 210 |
274 var g11 = (z = eval("var y = 2")) => { return y; }; | 211 var g11 = (z = eval("var y = 2")) => { return y; }; |
275 assertThrows(g11, ReferenceError); | 212 assertThrows(g11, ReferenceError); |
276 var g12 = (z = eval("var y = 2"), b = y) => {}; | 213 var g12 = (z = eval("var y = 2"), b = y) => {}; |
277 assertThrows(g12, ReferenceError); | 214 assertThrows(g12, ReferenceError); |
278 var g13 = (z = eval("var y = 2"), b = eval("y")) => {}; | 215 var g13 = (z = eval("var y = 2"), b = eval("y")) => {}; |
279 assertThrows(g13, ReferenceError); | 216 assertThrows(g13, ReferenceError); |
(...skipping 12 matching lines...) Expand all Loading... |
292 var x = 1; | 229 var x = 1; |
293 | 230 |
294 function f1(y = eval("var x = 2")) { return x; } | 231 function f1(y = eval("var x = 2")) { return x; } |
295 assertEquals(1, f1()); | 232 assertEquals(1, f1()); |
296 function f2(y = eval("var x = 2"), z = x) { return z; } | 233 function f2(y = eval("var x = 2"), z = x) { return z; } |
297 assertEquals(1, f2()); | 234 assertEquals(1, f2()); |
298 assertEquals(1, f2(0)); | 235 assertEquals(1, f2(0)); |
299 function f3(y = eval("var x = 2"), z = eval("x")) { return z; } | 236 function f3(y = eval("var x = 2"), z = eval("x")) { return z; } |
300 assertEquals(1, f3()); | 237 assertEquals(1, f3()); |
301 assertEquals(1, f3(0)); | 238 assertEquals(1, f3(0)); |
302 function f41({[eval("var x = 2; 'a'")]: w}, z = x) { return z; } | |
303 assertEquals(1, f41({})); | |
304 assertEquals(1, f41({a: 0})); | |
305 function f42({[eval("var x = 2; 'a'")]: w}, z = eval("x")) { return z; } | |
306 assertEquals(1, f42({})); | |
307 assertEquals(1, f42({a: 0})); | |
308 function f43({a: w = eval("var x = 2")}, z = x) { return z; } | |
309 assertEquals(1, f43({})); | |
310 assertEquals(1, f43({a: 0})); | |
311 function f44({a: w = eval("var x = 2")}, z = eval("x")) { return z; } | |
312 assertEquals(1, f44({})); | |
313 assertEquals(1, f44({a: 0})); | |
314 | |
315 function f5({a = eval("var x = 2"), b = x}) { return b; } | |
316 assertEquals(1, f5({})); | |
317 assertEquals(1, f5({a: 0})); | |
318 function f6({a = eval("var x = 2"), b = eval("x")}) { return b; } | |
319 assertEquals(1, f6({})); | |
320 assertEquals(1, f6({a: 0})); | |
321 function f71({[eval("var x = 2; 'a'")]: w, b = x}) { return b; } | |
322 assertEquals(1, f71({})); | |
323 assertEquals(1, f71({a: 0})); | |
324 function f72({[eval("var x = 2; 'a'")]: w, b = eval("x")}) { return b; } | |
325 assertEquals(1, f72({})); | |
326 assertEquals(1, f72({a: 0})); | |
327 function f73({a: w = eval("var x = 2"), b = x}) { return b; } | |
328 assertEquals(1, f73({})); | |
329 assertEquals(1, f73({a: 0})); | |
330 function f74({a: w = eval("var x = 2"), b = eval("x")}) { return b; } | |
331 assertEquals(1, f74({})); | |
332 assertEquals(1, f74({a: 0})); | |
333 function f8(y = (eval("var x = 2"), x)) { return y; } | 239 function f8(y = (eval("var x = 2"), x)) { return y; } |
334 assertEquals(1, f8()); | 240 assertEquals(1, f8()); |
335 assertEquals(0, f8(0)); | 241 assertEquals(0, f8(0)); |
336 | 242 |
337 function f11(z = eval("var y = 2")) { return y; } | 243 function f11(z = eval("var y = 2")) { return y; } |
338 assertThrows(f11, ReferenceError); | 244 assertThrows(f11, ReferenceError); |
339 function f12(z = eval("var y = 2"), b = y) {} | 245 function f12(z = eval("var y = 2"), b = y) {} |
340 assertThrows(f12, ReferenceError); | 246 assertThrows(f12, ReferenceError); |
341 function f13(z = eval("var y = 2"), b = eval("y")) {} | 247 function f13(z = eval("var y = 2"), b = eval("y")) {} |
342 assertThrows(f13, ReferenceError); | 248 assertThrows(f13, ReferenceError); |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
450 assertThrows(function(){ eval("(x=1) => {'use strict';}") }, SyntaxError); | 356 assertThrows(function(){ eval("(x=1) => {'use strict';}") }, SyntaxError); |
451 assertThrows( | 357 assertThrows( |
452 function(){ eval("(class{foo(x=1) {'use strict';}});") }, SyntaxError); | 358 function(){ eval("(class{foo(x=1) {'use strict';}});") }, SyntaxError); |
453 | 359 |
454 assertThrows( | 360 assertThrows( |
455 function(){ eval("function(a, x=1){'use strict';}") }, SyntaxError); | 361 function(){ eval("function(a, x=1){'use strict';}") }, SyntaxError); |
456 assertThrows(function(){ eval("(a, x=1) => {'use strict';}") }, SyntaxError); | 362 assertThrows(function(){ eval("(a, x=1) => {'use strict';}") }, SyntaxError); |
457 assertThrows( | 363 assertThrows( |
458 function(){ eval("(class{foo(a, x=1) {'use strict';}});") }, SyntaxError); | 364 function(){ eval("(class{foo(a, x=1) {'use strict';}});") }, SyntaxError); |
459 })(); | 365 })(); |
OLD | NEW |