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

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: update&rebase 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
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 6327 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 NULL}; 6345 NULL};
6346 // clang-format on 6346 // clang-format on
6347 RunParserSyncTest(context_data, data, kSuccess); 6347 RunParserSyncTest(context_data, data, kSuccess);
6348
6349 // v8:5201
6350 {
6351 const char* context_data[][2] = {
6352 {"", ""},
6353 {NULL, NULL}
6354 };
6355
6356 const char* data[] = {
6357 "var {eval} = {}",
6358 "var {arguments} = {}",
6359 "'use strict'; var {eval: x} = {eval: 5};",
6360 "'use strict'; var {arguments: x} = {arguments: 5};",
6361 "(() => { function f({eval = false } = {}) {} })()",
6362 NULL,
6363 };
6364
6365 RunParserSyncTest(context_data, data, kSuccess);
6366 }
6348 } 6367 }
6349 6368
6350 6369
6351 TEST(DestructuringNegativeTests) { 6370 TEST(DestructuringNegativeTests) {
6352 { // All modes. 6371 { // All modes.
6353 const char* context_data[][2] = {{"'use strict'; let ", " = {};"}, 6372 const char* context_data[][2] = {{"'use strict'; let ", " = {};"},
6354 {"var ", " = {};"}, 6373 {"var ", " = {};"},
6355 {"'use strict'; const ", " = {};"}, 6374 {"'use strict'; const ", " = {};"},
6356 {"function f(", ") {}"}, 6375 {"function f(", ") {}"},
6357 {"function f(argument1, ", ") {}"}, 6376 {"function f(argument1, ", ") {}"},
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
6462 {"'use strict'; function f(", ") {}"}, 6481 {"'use strict'; function f(", ") {}"},
6463 {"'use strict'; function f(argument1, ", ") {}"}, 6482 {"'use strict'; function f(argument1, ", ") {}"},
6464 {NULL, NULL}}; 6483 {NULL, NULL}};
6465 6484
6466 // clang-format off 6485 // clang-format off
6467 const char* data[] = { 6486 const char* data[] = {
6468 "[eval]", 6487 "[eval]",
6469 "{ a : arguments }", 6488 "{ a : arguments }",
6470 "[public]", 6489 "[public]",
6471 "{ x : private }", 6490 "{ x : private }",
6491 "{eval}",
6492 "{arguments}",
adamk 2016/08/17 19:32:51 Can you flesh out this test coverage while you're
lpy 2016/08/19 17:00:40 Done.
6472 NULL}; 6493 NULL};
6473 // clang-format on 6494 // clang-format on
6474 RunParserSyncTest(context_data, data, kError); 6495 RunParserSyncTest(context_data, data, kError);
6475 } 6496 }
6476 6497
6477 { // 'yield' in generators. 6498 { // 'yield' in generators.
6478 const char* context_data[][2] = { 6499 const char* context_data[][2] = {
6479 {"function*() { var ", " = {};"}, 6500 {"function*() { var ", " = {};"},
6480 {"function*() { 'use strict'; let ", " = {};"}, 6501 {"function*() { 'use strict'; let ", " = {};"},
6481 {"function*() { 'use strict'; const ", " = {};"}, 6502 {"function*() { 'use strict'; const ", " = {};"},
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
6865 "[ (arguments) = 0 ]", 6886 "[ (arguments) = 0 ]",
6866 "[ ...(eval) ]", 6887 "[ ...(eval) ]",
6867 "[ ...(arguments) ]", 6888 "[ ...(arguments) ]",
6868 "[ ...(eval = 0) ]", 6889 "[ ...(eval = 0) ]",
6869 "[ ...(arguments = 0) ]", 6890 "[ ...(arguments = 0) ]",
6870 "[ ...(eval) = 0 ]", 6891 "[ ...(eval) = 0 ]",
6871 "[ ...(arguments) = 0 ]", 6892 "[ ...(arguments) = 0 ]",
6872 6893
6873 NULL}; 6894 NULL};
6874 RunParserSyncTest(strict_context_data, strict_data, kError); 6895 RunParserSyncTest(strict_context_data, strict_data, kError);
6896
6897 // v8:5201
adamk 2016/08/17 19:32:51 Isn't this block now redundant with the tests you
lpy 2016/08/19 17:00:40 Done.
6898 {
6899 // clang-format off
6900 const char* context_data[][2] = {
6901 {"'use strict'; var {", "} = {};"},
6902 {"(() => { 'use strict'; function a({", " = false } = {}) {} })()"},
6903 {NULL, NULL}
6904 };
6905
6906 const char* data[] = {
6907 "eval",
6908 "arguments",
6909 NULL
6910 };
6911
6912 // clang-format on
6913 RunParserSyncTest(context_data, data, kError);
6914 }
6875 } 6915 }
6876 6916
6877 6917
6878 TEST(DestructuringDisallowPatternsInForVarIn) { 6918 TEST(DestructuringDisallowPatternsInForVarIn) {
6879 const char* context_data[][2] = { 6919 const char* context_data[][2] = {
6880 {"", ""}, {"function f() {", "}"}, {NULL, NULL}}; 6920 {"", ""}, {"function f() {", "}"}, {NULL, NULL}};
6881 // clang-format off 6921 // clang-format off
6882 const char* error_data[] = { 6922 const char* error_data[] = {
6883 "for (let x = {} in null);", 6923 "for (let x = {} in null);",
6884 "for (let x = {} of null);", 6924 "for (let x = {} of null);",
(...skipping 1256 matching lines...) Expand 10 before | Expand all | Expand 10 after
8141 "(a,);", 8181 "(a,);",
8142 "(a,b,c,);", 8182 "(a,b,c,);",
8143 NULL 8183 NULL
8144 }; 8184 };
8145 // clang-format on 8185 // clang-format on
8146 8186
8147 static const ParserFlag always_flags[] = {kAllowHarmonyTrailingCommas}; 8187 static const ParserFlag always_flags[] = {kAllowHarmonyTrailingCommas};
8148 RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, 8188 RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags,
8149 arraysize(always_flags)); 8189 arraysize(always_flags));
8150 } 8190 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698