| 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 | 
|---|