| OLD | NEW |
| 1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ | 1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
| 2 | 2 |
| 3 /* | 3 /* |
| 4 * Any copyright is dedicated to the Public Domain. | 4 * Any copyright is dedicated to the Public Domain. |
| 5 * http://creativecommons.org/licenses/publicdomain/ | 5 * http://creativecommons.org/licenses/publicdomain/ |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 /* | 8 /* |
| 9 * In strict mode, it is a syntax error for an identifier to appear | 9 * In strict mode, it is a syntax error for an identifier to appear |
| 10 * more than once in a function's argument list. | 10 * more than once in a function's argument list. |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 true); | 222 true); |
| 223 // Non-simple arguments and "use strict" directive is an error. | 223 // Non-simple arguments and "use strict" directive is an error. |
| 224 assertEq(testLenientAndStrict('({set x({x:eval}){"use strict";}})', | 224 assertEq(testLenientAndStrict('({set x({x:eval}){"use strict";}})', |
| 225 parseRaisesException(SyntaxError), | 225 parseRaisesException(SyntaxError), |
| 226 parseRaisesException(SyntaxError)), | 226 parseRaisesException(SyntaxError)), |
| 227 true); | 227 true); |
| 228 assertEq(testLenientAndStrict('function f(arguments){}', | 228 assertEq(testLenientAndStrict('function f(arguments){}', |
| 229 parsesSuccessfully, | 229 parsesSuccessfully, |
| 230 parseRaisesException(SyntaxError)), | 230 parseRaisesException(SyntaxError)), |
| 231 true); | 231 true); |
| 232 // BUG(v8:4577): In sloppy mode, we currently throw when destructuring | |
| 233 // parameters include 'arguments', even if a direct argument named | |
| 234 // 'arguments' is accepted, once the --harmony-sloppy flag is shipped. | |
| 235 assertEq(testLenientAndStrict('function f([arguments]){}', | 232 assertEq(testLenientAndStrict('function f([arguments]){}', |
| 236 parseRaisesException(SyntaxError), | 233 parsesSuccessfully, |
| 237 parseRaisesException(SyntaxError)), | 234 parseRaisesException(SyntaxError)), |
| 238 true); | 235 true); |
| 239 assertEq(testLenientAndStrict('function f({x:arguments}){}', | 236 assertEq(testLenientAndStrict('function f({x:arguments}){}', |
| 240 parseRaisesException(SyntaxError), | 237 parsesSuccessfully, |
| 241 parseRaisesException(SyntaxError)), | 238 parseRaisesException(SyntaxError)), |
| 242 true); | 239 true); |
| 243 assertEq(testLenientAndStrict('function arguments(){}', | 240 assertEq(testLenientAndStrict('function arguments(){}', |
| 244 parsesSuccessfully, | 241 parsesSuccessfully, |
| 245 parseRaisesException(SyntaxError)), | 242 parseRaisesException(SyntaxError)), |
| 246 true); | 243 true); |
| 247 assertEq(testLenientAndStrict('function f(arguments){"use strict";}', | 244 assertEq(testLenientAndStrict('function f(arguments){"use strict";}', |
| 248 parseRaisesException(SyntaxError), | 245 parseRaisesException(SyntaxError), |
| 249 parseRaisesException(SyntaxError)), | 246 parseRaisesException(SyntaxError)), |
| 250 true); | 247 true); |
| 251 // Non-simple arguments and "use strict" directive is an error. | 248 // Non-simple arguments and "use strict" directive is an error. |
| 252 assertEq(testLenientAndStrict('function f([arguments]){"use strict";}', | 249 assertEq(testLenientAndStrict('function f([arguments]){"use strict";}', |
| 253 parseRaisesException(SyntaxError), | 250 parseRaisesException(SyntaxError), |
| 254 parseRaisesException(SyntaxError)), | 251 parseRaisesException(SyntaxError)), |
| 255 true); | 252 true); |
| 256 // Non-simple arguments and "use strict" directive is an error. | 253 // Non-simple arguments and "use strict" directive is an error. |
| 257 assertEq(testLenientAndStrict('function f({x:arguments}){"use strict";}', | 254 assertEq(testLenientAndStrict('function f({x:arguments}){"use strict";}', |
| 258 parseRaisesException(SyntaxError), | 255 parseRaisesException(SyntaxError), |
| 259 parseRaisesException(SyntaxError)), | 256 parseRaisesException(SyntaxError)), |
| 260 true); | 257 true); |
| 261 assertEq(testLenientAndStrict('function arguments(){"use strict";}', | 258 assertEq(testLenientAndStrict('function arguments(){"use strict";}', |
| 262 parseRaisesException(SyntaxError), | 259 parseRaisesException(SyntaxError), |
| 263 parseRaisesException(SyntaxError)), | 260 parseRaisesException(SyntaxError)), |
| 264 true); | 261 true); |
| 265 assertEq(testLenientAndStrict('(function f(arguments){})', | 262 assertEq(testLenientAndStrict('(function f(arguments){})', |
| 266 parsesSuccessfully, | 263 parsesSuccessfully, |
| 267 parseRaisesException(SyntaxError)), | 264 parseRaisesException(SyntaxError)), |
| 268 true); | 265 true); |
| 269 assertEq(testLenientAndStrict('(function f([arguments]){})', | 266 assertEq(testLenientAndStrict('(function f([arguments]){})', |
| 270 parseRaisesException(SyntaxError), | 267 parsesSuccessfully, |
| 271 parseRaisesException(SyntaxError)), | 268 parseRaisesException(SyntaxError)), |
| 272 true); | 269 true); |
| 273 assertEq(testLenientAndStrict('(function f({x:arguments}){})', | 270 assertEq(testLenientAndStrict('(function f({x:arguments}){})', |
| 274 parseRaisesException(SyntaxError), | 271 parsesSuccessfully, |
| 275 parseRaisesException(SyntaxError)), | 272 parseRaisesException(SyntaxError)), |
| 276 true); | 273 true); |
| 277 assertEq(testLenientAndStrict('(function arguments(){})', | 274 assertEq(testLenientAndStrict('(function arguments(){})', |
| 278 parsesSuccessfully, | 275 parsesSuccessfully, |
| 279 parseRaisesException(SyntaxError)), | 276 parseRaisesException(SyntaxError)), |
| 280 true); | 277 true); |
| 281 assertEq(testLenientAndStrict('(function f(arguments){"use strict";})', | 278 assertEq(testLenientAndStrict('(function f(arguments){"use strict";})', |
| 282 parseRaisesException(SyntaxError), | 279 parseRaisesException(SyntaxError), |
| 283 parseRaisesException(SyntaxError)), | 280 parseRaisesException(SyntaxError)), |
| 284 true); | 281 true); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 314 // This is not valid ES5 syntax. | 311 // This is not valid ES5 syntax. |
| 315 assertEq(testLenientAndStrict('(function arguments() 2)', | 312 assertEq(testLenientAndStrict('(function arguments() 2)', |
| 316 parseRaisesException(SyntaxError), | 313 parseRaisesException(SyntaxError), |
| 317 parseRaisesException(SyntaxError)), | 314 parseRaisesException(SyntaxError)), |
| 318 true); | 315 true); |
| 319 assertEq(testLenientAndStrict('({set x(arguments){}})', | 316 assertEq(testLenientAndStrict('({set x(arguments){}})', |
| 320 parsesSuccessfully, | 317 parsesSuccessfully, |
| 321 parseRaisesException(SyntaxError)), | 318 parseRaisesException(SyntaxError)), |
| 322 true); | 319 true); |
| 323 assertEq(testLenientAndStrict('({set x([arguments]){}})', | 320 assertEq(testLenientAndStrict('({set x([arguments]){}})', |
| 324 parseRaisesException(SyntaxError), | 321 parsesSuccessfully, |
| 325 parseRaisesException(SyntaxError)), | 322 parseRaisesException(SyntaxError)), |
| 326 true); | 323 true); |
| 327 assertEq(testLenientAndStrict('({set x({x:arguments}){}})', | 324 assertEq(testLenientAndStrict('({set x({x:arguments}){}})', |
| 328 parseRaisesException(SyntaxError), | 325 parsesSuccessfully, |
| 329 parseRaisesException(SyntaxError)), | 326 parseRaisesException(SyntaxError)), |
| 330 true); | 327 true); |
| 331 assertEq(testLenientAndStrict('({set x(arguments){"use strict";}})', | 328 assertEq(testLenientAndStrict('({set x(arguments){"use strict";}})', |
| 332 parseRaisesException(SyntaxError), | 329 parseRaisesException(SyntaxError), |
| 333 parseRaisesException(SyntaxError)), | 330 parseRaisesException(SyntaxError)), |
| 334 true); | 331 true); |
| 335 // Non-simple arguments and "use strict" directive is an error. | 332 // Non-simple arguments and "use strict" directive is an error. |
| 336 assertEq(testLenientAndStrict('({set x([arguments]){"use strict";}})', | 333 assertEq(testLenientAndStrict('({set x([arguments]){"use strict";}})', |
| 337 parseRaisesException(SyntaxError), | 334 parseRaisesException(SyntaxError), |
| 338 parseRaisesException(SyntaxError)), | 335 parseRaisesException(SyntaxError)), |
| (...skipping 24 matching lines...) Expand all Loading... |
| 363 true); | 360 true); |
| 364 assertEq(testLenientAndStrict('Function("arguments","\'use strict\';")', | 361 assertEq(testLenientAndStrict('Function("arguments","\'use strict\';")', |
| 365 raisesException(SyntaxError), | 362 raisesException(SyntaxError), |
| 366 raisesException(SyntaxError)), | 363 raisesException(SyntaxError)), |
| 367 true); | 364 true); |
| 368 | 365 |
| 369 | 366 |
| 370 reportCompare(true, true); | 367 reportCompare(true, true); |
| 371 | 368 |
| 372 var successfullyParsed = true; | 369 var successfullyParsed = true; |
| OLD | NEW |