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 |