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