Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(409)

Side by Side Diff: test/cctest/test-parsing.cc

Issue 2185223002: Fix not throwing error when redefine eval or arguments in strict mode. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Clean up tests Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/parsing/parser-base.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 6324 matching lines...) Expand 10 before | Expand all | Expand 10 after
6335 "{'hi' : x = 42}", 6335 "{'hi' : x = 42}",
6336 "{var: x}", 6336 "{var: x}",
6337 "{var: x = 42}", 6337 "{var: x = 42}",
6338 "{[x] : z}", 6338 "{[x] : z}",
6339 "{[1+1] : z}", 6339 "{[1+1] : z}",
6340 "{[foo()] : z}", 6340 "{[foo()] : z}",
6341 "{}", 6341 "{}",
6342 "[...rest]", 6342 "[...rest]",
6343 "[a,b,...rest]", 6343 "[a,b,...rest]",
6344 "[a,,...rest]", 6344 "[a,,...rest]",
6345 "{arguments: x}",
6346 "{eval: x}",
6345 NULL}; 6347 NULL};
6346 // clang-format on 6348 // clang-format on
6347 RunParserSyncTest(context_data, data, kSuccess); 6349 RunParserSyncTest(context_data, data, kSuccess);
6350
6351 // v8:5201
6352 // TODO(lpy): The two test sets below should be merged once
6353 // we fix https://bugs.chromium.org/p/v8/issues/detail?id=4577
6354 {
6355 const char* sloppy_context_data1[][2] = {
6356 {"var ", " = {};"},
6357 {"function f(", ") {}"},
6358 {"function f(argument1, ", ") {}"},
6359 {"var f = (", ") => {};"},
6360 {"var f = (argument1,", ") => {};"},
6361 {"try {} catch(", ") {}"},
6362 {NULL, NULL}
6363 };
6364 const char* data1[] = {
6365 "{eval}",
6366 "{x: eval}",
6367 "{eval = false}",
6368 NULL
6369 };
6370 RunParserSyncTest(sloppy_context_data1, data1, kSuccess);
6371
6372 const char* sloppy_context_data2[][2] = {
6373 {"var ", " = {};"},
6374 {"try {} catch(", ") {}"},
6375 {NULL, NULL}
6376 };
6377 const char* data2[] = {
6378 "{arguments}",
6379 "{x: arguments}",
6380 "{arguments = false}",
6381 NULL,
6382 };
6383 RunParserSyncTest(sloppy_context_data2, data2, kSuccess);
6384 }
6348 } 6385 }
6349 6386
6350 6387
6351 TEST(DestructuringNegativeTests) { 6388 TEST(DestructuringNegativeTests) {
6352 { // All modes. 6389 { // All modes.
6353 const char* context_data[][2] = {{"'use strict'; let ", " = {};"}, 6390 const char* context_data[][2] = {{"'use strict'; let ", " = {};"},
6354 {"var ", " = {};"}, 6391 {"var ", " = {};"},
6355 {"'use strict'; const ", " = {};"}, 6392 {"'use strict'; const ", " = {};"},
6356 {"function f(", ") {}"}, 6393 {"function f(", ") {}"},
6357 {"function f(argument1, ", ") {}"}, 6394 {"function f(argument1, ", ") {}"},
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
6450 const char* data[] = { 6487 const char* data[] = {
6451 "x => x", 6488 "x => x",
6452 "() => x", 6489 "() => x",
6453 NULL}; 6490 NULL};
6454 // clang-format on 6491 // clang-format on
6455 RunParserSyncTest(context_data, data, kError); 6492 RunParserSyncTest(context_data, data, kError);
6456 } 6493 }
6457 6494
6458 { // Strict mode. 6495 { // Strict mode.
6459 const char* context_data[][2] = { 6496 const char* context_data[][2] = {
6497 {"'use strict'; var ", " = {};"},
6460 {"'use strict'; let ", " = {};"}, 6498 {"'use strict'; let ", " = {};"},
6461 {"'use strict'; const ", " = {};"}, 6499 {"'use strict'; const ", " = {};"},
6462 {"'use strict'; function f(", ") {}"}, 6500 {"'use strict'; function f(", ") {}"},
6463 {"'use strict'; function f(argument1, ", ") {}"}, 6501 {"'use strict'; function f(argument1, ", ") {}"},
6464 {NULL, NULL}}; 6502 {NULL, NULL}};
6465 6503
6466 // clang-format off 6504 // clang-format off
6467 const char* data[] = { 6505 const char* data[] = {
6506 "[arguments]",
6468 "[eval]", 6507 "[eval]",
6469 "{ a : arguments }", 6508 "{ a : arguments }",
6509 "{ a : eval }",
6470 "[public]", 6510 "[public]",
6471 "{ x : private }", 6511 "{ x : private }",
6512 "{ x : arguments }",
6513 "{ x : eval }",
6514 "{ arguments }",
6515 "{ eval }",
6516 "{ arguments = false }"
6517 "{ eval = false }",
6472 NULL}; 6518 NULL};
6473 // clang-format on 6519 // clang-format on
6474 RunParserSyncTest(context_data, data, kError); 6520 RunParserSyncTest(context_data, data, kError);
6475 } 6521 }
6476 6522
6477 { // 'yield' in generators. 6523 { // 'yield' in generators.
6478 const char* context_data[][2] = { 6524 const char* context_data[][2] = {
6479 {"function*() { var ", " = {};"}, 6525 {"function*() { var ", " = {};"},
6480 {"function*() { 'use strict'; let ", " = {};"}, 6526 {"function*() { 'use strict'; let ", " = {};"},
6481 {"function*() { 'use strict'; const ", " = {};"}, 6527 {"function*() { 'use strict'; const ", " = {};"},
(...skipping 1659 matching lines...) Expand 10 before | Expand all | Expand 10 after
8141 "(a,);", 8187 "(a,);",
8142 "(a,b,c,);", 8188 "(a,b,c,);",
8143 NULL 8189 NULL
8144 }; 8190 };
8145 // clang-format on 8191 // clang-format on
8146 8192
8147 static const ParserFlag always_flags[] = {kAllowHarmonyTrailingCommas}; 8193 static const ParserFlag always_flags[] = {kAllowHarmonyTrailingCommas};
8148 RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, 8194 RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags,
8149 arraysize(always_flags)); 8195 arraysize(always_flags));
8150 } 8196 }
OLDNEW
« no previous file with comments | « src/parsing/parser-base.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698