| Index: test/cctest/test-parsing.cc
|
| diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc
|
| index fb18acedaad6e9432aa3a176e9c45bbebe987ca6..7a203d423817345bb5d15b6f7bc4101780861ec3 100644
|
| --- a/test/cctest/test-parsing.cc
|
| +++ b/test/cctest/test-parsing.cc
|
| @@ -1509,7 +1509,6 @@ enum ParserFlag {
|
| kAllowHarmonyDestructuring,
|
| kAllowHarmonyDestructuringAssignment,
|
| kAllowHarmonyNewTarget,
|
| - kAllowStrongMode,
|
| kNoLegacyConst,
|
| kAllowHarmonyFunctionSent,
|
| kAllowHarmonyRestrictiveDeclarations,
|
| @@ -1534,7 +1533,6 @@ void SetParserFlags(i::ParserBase<Traits>* parser,
|
| flags.Contains(kAllowHarmonyDestructuring));
|
| parser->set_allow_harmony_destructuring_assignment(
|
| flags.Contains(kAllowHarmonyDestructuringAssignment));
|
| - parser->set_allow_strong_mode(flags.Contains(kAllowStrongMode));
|
| parser->set_allow_legacy_const(!flags.Contains(kNoLegacyConst));
|
| parser->set_allow_harmony_function_sent(
|
| flags.Contains(kAllowHarmonyFunctionSent));
|
| @@ -1929,9 +1927,7 @@ TEST(ErrorsEvalAndArguments) {
|
| // isn't.
|
| const char* context_data[][2] = {
|
| {"\"use strict\";", ""},
|
| - {"\"use strong\";", ""},
|
| {"var eval; function test_func() {\"use strict\"; ", "}"},
|
| - {"var eval; function test_func() {\"use strong\"; ", "}"},
|
| {NULL, NULL}};
|
|
|
| const char* statement_data[] = {
|
| @@ -1962,9 +1958,7 @@ TEST(ErrorsEvalAndArguments) {
|
| NULL
|
| };
|
|
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(context_data, statement_data, kError, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| + RunParserSyncTest(context_data, statement_data, kError);
|
| }
|
|
|
|
|
| @@ -2071,8 +2065,6 @@ TEST(ErrorsFutureStrictReservedWords) {
|
| const char* context_data[][2] = {
|
| {"function test_func() {\"use strict\"; ", "}"},
|
| {"() => { \"use strict\"; ", "}"},
|
| - {"function test_func() {\"use strong\"; ", "}"},
|
| - {"() => { \"use strong\"; ", "}"},
|
| {NULL, NULL}};
|
|
|
| const char* statement_data[] {
|
| @@ -2080,11 +2072,7 @@ TEST(ErrorsFutureStrictReservedWords) {
|
| NULL
|
| };
|
|
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(context_data, statement_data, kError, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| - RunParserSyncTest(context_data, statement_data, kError, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| + RunParserSyncTest(context_data, statement_data, kError);
|
| }
|
|
|
|
|
| @@ -2261,13 +2249,6 @@ TEST(ErrorsYieldStrict) {
|
| {"\"use strict\"; (function not_gen() {", "})"},
|
| {"\"use strict\"; (function * gen() { (function not_gen() {", "}) })"},
|
| {"() => {\"use strict\"; ", "}"},
|
| - {"\"use strong\";", ""},
|
| - {"\"use strong\"; function not_gen() {", "}"},
|
| - {"function test_func() {\"use strong\"; ", "}"},
|
| - {"\"use strong\"; function * gen() { function not_gen() {", "} }"},
|
| - {"\"use strong\"; (function not_gen() {", "})"},
|
| - {"\"use strong\"; (function * gen() { (function not_gen() {", "}) })"},
|
| - {"() => {\"use strong\"; ", "}"},
|
| {NULL, NULL}};
|
|
|
| const char* statement_data[] = {
|
| @@ -2288,9 +2269,7 @@ TEST(ErrorsYieldStrict) {
|
| NULL
|
| };
|
|
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(context_data, statement_data, kError, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| + RunParserSyncTest(context_data, statement_data, kError);
|
| }
|
|
|
|
|
| @@ -2444,10 +2423,8 @@ TEST(ErrorsNameOfStrictFunction) {
|
| const char* context_data[][2] = {
|
| { "function ", ""},
|
| { "\"use strict\"; function", ""},
|
| - { "\"use strong\"; function", ""},
|
| { "function * ", ""},
|
| { "\"use strict\"; function * ", ""},
|
| - { "\"use strong\"; function * ", ""},
|
| { NULL, NULL }
|
| };
|
|
|
| @@ -2462,9 +2439,7 @@ TEST(ErrorsNameOfStrictFunction) {
|
| NULL
|
| };
|
|
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(context_data, statement_data, kError, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| + RunParserSyncTest(context_data, statement_data, kError);
|
| }
|
|
|
|
|
| @@ -2528,9 +2503,6 @@ TEST(ErrorsIllegalWordsAsLabelsStrict) {
|
| {"\"use strict\";", ""},
|
| {"function test_func() {\"use strict\"; ", "}"},
|
| {"() => {\"use strict\"; ", "}"},
|
| - {"\"use strong\";", ""},
|
| - {"function test_func() {\"use strong\"; ", "}"},
|
| - {"() => {\"use strong\"; ", "}"},
|
| {NULL, NULL}};
|
|
|
| #define LABELLED_WHILE(NAME) #NAME ": while (true) { break " #NAME "; }",
|
| @@ -2541,9 +2513,7 @@ TEST(ErrorsIllegalWordsAsLabelsStrict) {
|
| };
|
| #undef LABELLED_WHILE
|
|
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(context_data, statement_data, kError, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| + RunParserSyncTest(context_data, statement_data, kError);
|
| }
|
|
|
|
|
| @@ -2616,13 +2586,10 @@ TEST(NoErrorsParenthesizedDirectivePrologue) {
|
|
|
| const char* statement_data[] = {
|
| "(\"use strict\"); var eval;",
|
| - "(\"use strong\"); var eval;",
|
| NULL
|
| };
|
|
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(context_data, statement_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| + RunParserSyncTest(context_data, statement_data, kSuccess);
|
| }
|
|
|
|
|
| @@ -2750,7 +2717,6 @@ TEST(FunctionDeclaresItselfStrict) {
|
|
|
| const char* strict_statement_data[] = {
|
| "\"use strict\";",
|
| - "\"use strong\";",
|
| NULL
|
| };
|
|
|
| @@ -2759,11 +2725,8 @@ TEST(FunctionDeclaresItselfStrict) {
|
| NULL
|
| };
|
|
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(context_data, strict_statement_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(context_data, non_strict_statement_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| + RunParserSyncTest(context_data, strict_statement_data, kError);
|
| + RunParserSyncTest(context_data, non_strict_statement_data, kSuccess);
|
| }
|
|
|
|
|
| @@ -3031,11 +2994,6 @@ TEST(TooManyArguments) {
|
|
|
| TEST(StrictDelete) {
|
| // "delete <Identifier>" is not allowed in strict mode.
|
| - const char* strong_context_data[][2] = {
|
| - {"\"use strong\"; ", ""},
|
| - { NULL, NULL }
|
| - };
|
| -
|
| const char* strict_context_data[][2] = {
|
| {"\"use strict\"; ", ""},
|
| { NULL, NULL }
|
| @@ -3077,27 +3035,14 @@ TEST(StrictDelete) {
|
| NULL
|
| };
|
|
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(strong_context_data, sloppy_statement_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, sloppy_statement_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(sloppy_context_data, sloppy_statement_data, kSuccess, NULL,
|
| - 0, always_flags, arraysize(always_flags));
|
| + RunParserSyncTest(strict_context_data, sloppy_statement_data, kError);
|
| + RunParserSyncTest(sloppy_context_data, sloppy_statement_data, kSuccess);
|
|
|
| - RunParserSyncTest(strong_context_data, good_statement_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, good_statement_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(sloppy_context_data, good_statement_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| + RunParserSyncTest(strict_context_data, good_statement_data, kSuccess);
|
| + RunParserSyncTest(sloppy_context_data, good_statement_data, kSuccess);
|
|
|
| - RunParserSyncTest(strong_context_data, bad_statement_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, bad_statement_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(sloppy_context_data, bad_statement_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| + RunParserSyncTest(strict_context_data, bad_statement_data, kError);
|
| + RunParserSyncTest(sloppy_context_data, bad_statement_data, kError);
|
| }
|
|
|
|
|
| @@ -3925,15 +3870,6 @@ TEST(NoErrorsArrowFunctions) {
|
|
|
|
|
| TEST(ArrowFunctionsSloppyParameterNames) {
|
| - const char* strong_context_data[][2] = {
|
| - {"'use strong'; ", ";"},
|
| - {"'use strong'; bar ? (", ") : baz;"},
|
| - {"'use strong'; bar ? baz : (", ");"},
|
| - {"'use strong'; bar, ", ";"},
|
| - {"'use strong'; ", ", bar;"},
|
| - {NULL, NULL}
|
| - };
|
| -
|
| const char* strict_context_data[][2] = {
|
| {"'use strict'; ", ";"},
|
| {"'use strict'; bar ? (", ") : baz;"},
|
| @@ -3973,13 +3909,8 @@ TEST(ArrowFunctionsSloppyParameterNames) {
|
| NULL
|
| };
|
|
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(strong_context_data, statement_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, statement_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(sloppy_context_data, statement_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| + RunParserSyncTest(strict_context_data, statement_data, kError);
|
| + RunParserSyncTest(sloppy_context_data, statement_data, kSuccess);
|
| }
|
|
|
|
|
| @@ -3990,13 +3921,11 @@ TEST(ArrowFunctionsYieldParameterNameInGenerator) {
|
| };
|
|
|
| const char* strict_function_context_data[][2] = {
|
| - {"(function f() {'use strong'; (", "); });"},
|
| {"(function f() {'use strict'; (", "); });"},
|
| {NULL, NULL}
|
| };
|
|
|
| const char* generator_context_data[][2] = {
|
| - {"(function *g() {'use strong'; (", "); });"},
|
| {"(function *g() {'use strict'; (", "); });"},
|
| {"(function *g() { (", "); });"},
|
| {NULL, NULL}
|
| @@ -4014,8 +3943,7 @@ TEST(ArrowFunctionsYieldParameterNameInGenerator) {
|
| NULL
|
| };
|
|
|
| - static const ParserFlag always_flags[] = { kAllowHarmonyDestructuring,
|
| - kAllowStrongMode};
|
| + static const ParserFlag always_flags[] = { kAllowHarmonyDestructuring };
|
| RunParserSyncTest(sloppy_function_context_data, arrow_data, kSuccess, NULL, 0,
|
| always_flags, arraysize(always_flags));
|
| RunParserSyncTest(strict_function_context_data, arrow_data, kError, NULL, 0,
|
| @@ -5971,12 +5899,6 @@ TEST(DeclarationsError) {
|
| {"'use strict'; for (;;)", ""},
|
| {"'use strict'; for (x in y)", ""},
|
| {"'use strict'; do ", " while (false)"},
|
| - {"'use strong'; if (true)", ""},
|
| - {"'use strong'; if (false) {} else", ""},
|
| - {"'use strong'; while (false)", ""},
|
| - {"'use strong'; for (;;)", ""},
|
| - {"'use strong'; for (x in y)", ""},
|
| - {"'use strong'; do ", " while (false)"},
|
| {NULL, NULL}};
|
|
|
| const char* statement_data[] = {
|
| @@ -5985,9 +5907,7 @@ TEST(DeclarationsError) {
|
| "class C {}",
|
| NULL};
|
|
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(context_data, statement_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| + RunParserSyncTest(context_data, statement_data, kError);
|
| }
|
|
|
|
|
| @@ -6006,7 +5926,6 @@ void TestLanguageMode(const char* source,
|
| i::Zone zone;
|
| i::ParseInfo info(&zone, script);
|
| i::Parser parser(&info);
|
| - parser.set_allow_strong_mode(true);
|
| info.set_global();
|
| parser.Parse(&info);
|
| CHECK(info.literal() != NULL);
|
| @@ -6017,49 +5936,15 @@ void TestLanguageMode(const char* source,
|
| TEST(LanguageModeDirectives) {
|
| TestLanguageMode("\"use nothing\"", i::SLOPPY);
|
| TestLanguageMode("\"use strict\"", i::STRICT);
|
| - TestLanguageMode("\"use strong\"", i::STRONG);
|
|
|
| TestLanguageMode("var x = 1; \"use strict\"", i::SLOPPY);
|
| - TestLanguageMode("var x = 1; \"use strong\"", i::SLOPPY);
|
| -
|
| - // Test that multiple directives ("use strict" / "use strong") put the parser
|
| - // into the correct mode.
|
| - TestLanguageMode("\"use strict\"; \"use strong\";", i::STRONG);
|
| - TestLanguageMode("\"use strong\"; \"use strict\";", i::STRONG);
|
|
|
| TestLanguageMode("\"use some future directive\"; \"use strict\";", i::STRICT);
|
| - TestLanguageMode("\"use some future directive\"; \"use strong\";", i::STRONG);
|
| -}
|
| -
|
| -
|
| -TEST(MultipleLanguageModeDirectives) {
|
| - const char* context_data[][2] = {
|
| - { "'use strict'; 'use strong';", "" },
|
| - { "'use strong'; 'use strict';", "" },
|
| - { "function f() { 'use strict'; 'use strong';", "}" },
|
| - { "function f() { 'use strong'; 'use strict';", "}" },
|
| - { NULL, NULL }
|
| - };
|
| -
|
| - const char* strict_error_data[] = {
|
| - "var x = 42; delete x",
|
| - NULL};
|
| -
|
| - const char* strong_error_data[] = {
|
| - "var x = 42",
|
| - NULL};
|
| -
|
| - static const ParserFlag strong_mode_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(context_data, strict_error_data, kError,
|
| - strong_mode_flags, arraysize(strong_mode_flags));
|
| - RunParserSyncTest(context_data, strong_error_data, kError, NULL, 0,
|
| - strong_mode_flags, arraysize(strong_mode_flags));
|
| }
|
|
|
|
|
| TEST(PropertyNameEvalArguments) {
|
| const char* context_data[][2] = {{"'use strict';", ""},
|
| - {"'use strong';", ""},
|
| {NULL, NULL}};
|
|
|
| const char* statement_data[] = {
|
| @@ -6094,9 +5979,7 @@ TEST(PropertyNameEvalArguments) {
|
|
|
| NULL};
|
|
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(context_data, statement_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| + RunParserSyncTest(context_data, statement_data, kSuccess);
|
| }
|
|
|
|
|
| @@ -6106,10 +5989,6 @@ TEST(FunctionLiteralDuplicateParameters) {
|
| {"(function(", ") { 'use strict'; })();"},
|
| {"'use strict'; function fn(", ") {}; fn();"},
|
| {"function fn(", ") { 'use strict'; }; fn();"},
|
| - {"'use strong';(function(", "){})();"},
|
| - {"(function(", ") { 'use strong'; })();"},
|
| - {"'use strong'; function fn(", ") {}; fn();"},
|
| - {"function fn(", ") { 'use strong'; }; fn();"},
|
| {NULL, NULL}};
|
|
|
| const char* sloppy_context_data[][2] =
|
| @@ -6127,451 +6006,8 @@ TEST(FunctionLiteralDuplicateParameters) {
|
| "a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, w",
|
| NULL};
|
|
|
| - static const ParserFlag always_flags[] = { kAllowStrongMode };
|
| - RunParserSyncTest(strict_context_data, data, kError, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| - RunParserSyncTest(sloppy_context_data, data, kSuccess, NULL, 0, NULL, 0);
|
| -}
|
| -
|
| -
|
| -TEST(VarForbiddenInStrongMode) {
|
| - const char* strong_context_data[][2] =
|
| - {{"'use strong'; ", ""},
|
| - {"function f() {'use strong'; ", "}"},
|
| - {"function f() {'use strong'; while (true) { ", "} }"},
|
| - {NULL, NULL}};
|
| -
|
| - const char* strict_context_data[][2] =
|
| - {{"'use strict'; ", ""},
|
| - {"function f() {'use strict'; ", "}"},
|
| - {"function f() {'use strict'; while (true) { ", "} }"},
|
| - {NULL, NULL}};
|
| -
|
| - const char* sloppy_context_data[][2] =
|
| - {{"", ""},
|
| - {"function f() { ", "}"},
|
| - {NULL, NULL}};
|
| -
|
| - const char* var_declarations[] = {
|
| - "var x = 0;",
|
| - "for (var i = 0; i < 10; i++) { }",
|
| - NULL};
|
| -
|
| - const char* let_declarations[] = {
|
| - "let x = 0;",
|
| - "for (let i = 0; i < 10; i++) { }",
|
| - NULL};
|
| -
|
| - const char* const_declarations[] = {
|
| - "const x = 0;",
|
| - NULL};
|
| -
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(strong_context_data, var_declarations, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, let_declarations, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, const_declarations, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| -
|
| - RunParserSyncTest(strict_context_data, var_declarations, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, let_declarations, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| -
|
| - RunParserSyncTest(sloppy_context_data, var_declarations, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - // At the moment, let declarations are only available in strict mode.
|
| - RunParserSyncTest(sloppy_context_data, let_declarations, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| -}
|
| -
|
| -
|
| -TEST(StrongEmptySubStatements) {
|
| - const char* sloppy_context_data[][2] = {{"", ""}, {NULL}};
|
| - const char* strict_context_data[][2] = {{"'use strict';", ""}, {NULL}};
|
| - const char* strong_context_data[][2] = {{"'use strong';", ""}, {NULL}};
|
| -
|
| - const char* data_error[] = {
|
| - "if (1);",
|
| - "if (1) {} else;",
|
| - "while (1);",
|
| - "do; while (1);",
|
| - "for (;;);",
|
| - "for (x in []);",
|
| - "for (x of []);",
|
| - "for (const x = 0;;);",
|
| - "for (const x in []);",
|
| - "for (const x of []);",
|
| - NULL};
|
| -
|
| - const char* data_success[] = {
|
| - "if (1) {} else {}",
|
| - "switch(1) {}",
|
| - "1+1;;",
|
| - "1+1; ;",
|
| - NULL};
|
| -
|
| - static const ParserFlag always_flags[] = {
|
| - kAllowStrongMode,
|
| - };
|
| - RunParserSyncTest(sloppy_context_data, data_error, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, data_error, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, data_error, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, data_success, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| -}
|
| -
|
| -
|
| -TEST(StrongForIn) {
|
| - const char* sloppy_context_data[][2] = {{"", ""}, {NULL}};
|
| - const char* strict_context_data[][2] = {{"'use strict';", ""}, {NULL}};
|
| - const char* strong_context_data[][2] = {{"'use strong';", ""}, {NULL}};
|
| -
|
| - const char* data[] = {
|
| - "for (x in []) {}",
|
| - "for (const x in []) {}",
|
| - NULL};
|
| -
|
| - static const ParserFlag always_flags[] = {
|
| - kAllowStrongMode,
|
| - };
|
| - RunParserSyncTest(sloppy_context_data, data, kSuccess, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, data, kSuccess, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, data, kError, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| -}
|
| -
|
| -
|
| -TEST(StrongConstructorThis) {
|
| - const char* sloppy_context_data[][2] = {{"", ""}, {NULL}};
|
| - const char* strict_context_data[][2] = {{"'use strict';", ""}, {NULL}};
|
| - const char* strong_context_data[][2] = {{"'use strong';", ""}, {NULL}};
|
| -
|
| - const char* error_data[] = {
|
| - "class C { constructor() { this; } }",
|
| - "class C { constructor() { this.a; } }",
|
| - "class C { constructor() { this['a']; } }",
|
| - "class C { constructor() { (this); } }",
|
| - "class C { constructor() { this(); } }",
|
| - // TODO(rossberg): arrow functions not handled yet.
|
| - // "class C { constructor() { () => this; } }",
|
| - "class C { constructor() { this.a = 0, 0; } }",
|
| - "class C { constructor() { (this.a = 0); } }",
|
| - // "class C { constructor() { (() => this.a = 0)(); } }",
|
| - "class C { constructor() { { this.a = 0; } } }",
|
| - "class C { constructor() { if (1) this.a = 0; } }",
|
| - "class C { constructor() { label: this.a = 0; } }",
|
| - "class C { constructor() { this.a = this.b; } }",
|
| - "class C { constructor() { this.a = {b: 1}; this.a.b } }",
|
| - "class C { constructor() { this.a = {b: 1}; this.a.b = 0 } }",
|
| - "class C { constructor() { this.a = function(){}; this.a() } }",
|
| - NULL};
|
| -
|
| - const char* success_data[] = {
|
| - "class C { constructor() { this.a = 0; } }",
|
| - "class C { constructor() { label: 0; this.a = 0; this.b = 6; } }",
|
| - NULL};
|
| -
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(sloppy_context_data, error_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, error_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, error_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| -
|
| - RunParserSyncTest(sloppy_context_data, success_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, success_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, success_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| -}
|
| -
|
| -
|
| -TEST(StrongConstructorSuper) {
|
| - const char* sloppy_context_data[][2] = {{"", ""}, {NULL}};
|
| - const char* strict_context_data[][2] = {{"'use strict';", ""}, {NULL}};
|
| - const char* strong_context_data[][2] = {{"'use strong';", ""}, {NULL}};
|
| -
|
| - const char* error_data[] = {
|
| - "class C extends Object { constructor() {} }",
|
| - "class C extends Object { constructor() { super.a; } }",
|
| - "class C extends Object { constructor() { super['a']; } }",
|
| - "class C extends Object { constructor() { super.a = 0; } }",
|
| - "class C extends Object { constructor() { (super.a); } }",
|
| - // TODO(rossberg): arrow functions do not handle super yet.
|
| - // "class C extends Object { constructor() { () => super.a; } }",
|
| - "class C extends Object { constructor() { super(), 0; } }",
|
| - "class C extends Object { constructor() { (super()); } }",
|
| - // "class C extends Object { constructor() { (() => super())(); } }",
|
| - "class C extends Object { constructor() { { super(); } } }",
|
| - "class C extends Object { constructor() { if (1) super(); } }",
|
| - "class C extends Object { constructor() { label: super(); } }",
|
| - "class C extends Object { constructor() { super(), super(); } }",
|
| - "class C extends Object { constructor() { super(); super(); } }",
|
| - "class C extends Object { constructor() { super(); (super()); } }",
|
| - "class C extends Object { constructor() { super(); { super() } } }",
|
| - "class C extends Object { constructor() { this.a = 0, super(); } }",
|
| - "class C extends Object { constructor() { this.a = 0; super(); } }",
|
| - "class C extends Object { constructor() { super(this.a = 0); } }",
|
| - "class C extends Object { constructor() { super().a; } }",
|
| - NULL};
|
| -
|
| - const char* success_data[] = {
|
| - "class C extends Object { constructor() { super(); } }",
|
| - "class C extends Object { constructor() { label: 66; super(); } }",
|
| - "class C extends Object { constructor() { super(3); this.x = 0; } }",
|
| - "class C extends Object { constructor() { 3; super(3); this.x = 0; } }",
|
| - NULL};
|
| -
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(sloppy_context_data, error_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, error_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, error_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| -
|
| - RunParserSyncTest(sloppy_context_data, success_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, success_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, success_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| -}
|
| -
|
| -
|
| -TEST(StrongConstructorReturns) {
|
| - const char* sloppy_context_data[][2] = {{"", ""}, {NULL}};
|
| - const char* strict_context_data[][2] = {{"'use strict';", ""}, {NULL}};
|
| - const char* strong_context_data[][2] = {{"'use strong';", ""}, {NULL}};
|
| -
|
| - const char* error_data[] = {
|
| - "class C extends Object { constructor() { super(); return {}; } }",
|
| - "class C extends Object { constructor() { super(); { return {}; } } }",
|
| - "class C extends Object { constructor() { super(); if (1) return {}; } }",
|
| - "class C extends Object { constructor() { return; super(); } }",
|
| - "class C extends Object { constructor() { { return; } super(); } }",
|
| - "class C extends Object { constructor() { if (0) return; super(); } }",
|
| - "class C { constructor() { return; this.a = 0; } }",
|
| - "class C { constructor() { { return; } this.a = 0; } }",
|
| - "class C { constructor() { if (0) return; this.a = 0; } }",
|
| - "class C { constructor() { this.a = 0; if (0) return; this.b = 0; } }",
|
| - NULL};
|
| -
|
| - const char* success_data[] = {
|
| - "class C extends Object { constructor() { super(); return; } }",
|
| - "class C extends Object { constructor() { super(); { return } } }",
|
| - "class C extends Object { constructor() { super(); if (1) return; } }",
|
| - "class C { constructor() { this.a = 0; return; } }",
|
| - "class C { constructor() { this.a = 0; { return; } } }",
|
| - "class C { constructor() { this.a = 0; if (0) return; 65; } }",
|
| - "class C extends Array { constructor() { super(); this.a = 9; return } }",
|
| - NULL};
|
| -
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(sloppy_context_data, error_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, error_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, error_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| -
|
| - RunParserSyncTest(sloppy_context_data, success_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, success_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, success_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| -}
|
| -
|
| -
|
| -TEST(StrongConstructorDirective) {
|
| - const char* context_data[][2] = {{"class c { ", " }"},
|
| - {"(class c { ", " });"},
|
| - {"let a = (class c { ", " });"},
|
| - {NULL}};
|
| -
|
| - const char* error_data[] = {
|
| - "constructor() { \"use strong\" }",
|
| - "constructor(...rest) { \"use strong\" }",
|
| - "foo() {} constructor() { \"use strong\" }",
|
| - "foo(...rest) { \"use strict\" } constructor() { \"use strong\" }", NULL};
|
| -
|
| - const char* success_data[] = {
|
| - "constructor() { \"use strict\" }", "foo() { \"use strong\" }",
|
| - "foo() { \"use strong\" } constructor() {}", NULL};
|
| -
|
| - static const ParserFlag always_flags[] = {
|
| - kAllowHarmonySloppy, kAllowHarmonySloppyLet, kAllowStrongMode};
|
| -
|
| - RunParserSyncTest(context_data, error_data, kError, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| - RunParserSyncTest(context_data, success_data, kSuccess, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| -}
|
| -
|
| -
|
| -TEST(StrongUndefinedLocal) {
|
| - const char* context_data[][2] = {{"", ""}, {NULL}};
|
| -
|
| - const char* data[] = {
|
| - "function undefined() {'use strong';}",
|
| - "function* undefined() {'use strong';}",
|
| - "(function undefined() {'use strong';});",
|
| - "{foo: (function undefined(){'use strong';})};",
|
| - "(function* undefined() {'use strong';})",
|
| - "{foo: (function* undefined(){'use strong';})};",
|
| - "function foo(a, b, undefined, c, d) {'use strong';}",
|
| - "function* foo(a, b, undefined, c, d) {'use strong';}",
|
| - "(function foo(a, b, undefined, c, d) {'use strong';})",
|
| - "{foo: (function foo(a, b, undefined, c, d) {'use strong';})};",
|
| - "(function* foo(a, b, undefined, c, d) {'use strong';})",
|
| - "{foo: (function* foo(a, b, undefined, c, d) {'use strong';})};",
|
| - "class C { foo(a, b, undefined, c, d) {'use strong';} }",
|
| - "class C { *foo(a, b, undefined, c, d) {'use strong';} }",
|
| - "({ foo(a, b, undefined, c, d) {'use strong';} });",
|
| - "{ *foo(a, b, undefined, c, d) {'use strong';} });",
|
| - "class undefined {'use strong'}",
|
| - "(class undefined {'use strong'});",
|
| - NULL};
|
| -
|
| - static const ParserFlag always_flags[] = {
|
| - kAllowStrongMode, kAllowHarmonySloppy
|
| - };
|
| -
|
| - RunParserSyncTest(context_data, data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| -}
|
| -
|
| -
|
| -TEST(StrongUndefinedArrow) {
|
| - const char* sloppy_context_data[][2] = {{"", ""}, {NULL}};
|
| - const char* strict_context_data[][2] = {{"'use strict';", ""}, {NULL}};
|
| - const char* strong_context_data[][2] = {{"'use strong';", ""}, {NULL}};
|
| -
|
| - const char* data[] = {
|
| - "(undefined => {return});",
|
| - "((undefined, b, c) => {return});",
|
| - "((a, undefined, c) => {return});",
|
| - "((a, b, undefined) => {return});",
|
| - NULL};
|
| -
|
| - const char* local_strong[] = {
|
| - "(undefined => {'use strong';});",
|
| - "((undefined, b, c) => {'use strong';});",
|
| - "((a, undefined, c) => {'use strong';});",
|
| - "((a, b, undefined) => {'use strong';});",
|
| - NULL};
|
| -
|
| - static const ParserFlag always_flags[] = {kAllowStrongMode};
|
| - RunParserSyncTest(sloppy_context_data, data, kSuccess, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| - RunParserSyncTest(strict_context_data, data, kSuccess, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, data, kError, NULL, 0, always_flags,
|
| - arraysize(always_flags));
|
| - RunParserSyncTest(sloppy_context_data, local_strong, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| -}
|
| -
|
| -
|
| -TEST(StrongDirectEval) {
|
| - const char* sloppy_context_data[][2] = {{"", ""}, {NULL}};
|
| - const char* strong_context_data[][2] = {{"'use strong';", ""}, {NULL}};
|
| -
|
| - const char* error_data[] = {
|
| - "eval();",
|
| - "eval([]);",
|
| - "(eval)();",
|
| - "(((eval)))();",
|
| - "eval('function f() {}');",
|
| - "function f() {eval()}",
|
| - NULL};
|
| -
|
| - const char* success_data[] = {
|
| - "eval;",
|
| - "eval`foo`;",
|
| - "let foo = eval; foo();",
|
| - "(1, eval)();",
|
| - NULL};
|
| -
|
| - static const ParserFlag always_flags[] = {
|
| - kAllowStrongMode
|
| - };
|
| -
|
| - RunParserSyncTest(sloppy_context_data, error_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, error_data, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, success_data, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| -}
|
| -
|
| -
|
| -TEST(StrongSwitchFallthrough) {
|
| - const char* sloppy_context_data[][2] = {
|
| - {"function f() { foo:for(;;) { switch(1) {", "};}}"},
|
| - {NULL, NULL}
|
| - };
|
| - const char* strong_context_data[][2] = {
|
| - {"function f() { 'use strong'; foo:for(;;) { switch(1) {", "};}}"},
|
| - {NULL, NULL}
|
| - };
|
| -
|
| - const char* data_success[] = {
|
| - "",
|
| - "case 1:",
|
| - "case 1: case 2:",
|
| - "case 1: break;",
|
| - "default: throw new TypeError();",
|
| - "case 1: case 2: null",
|
| - "case 1: case 2: default: 1+1",
|
| - "case 1: break; case 2: return; default:",
|
| - "case 1: break foo; case 2: return; default:",
|
| - "case 1: case 2: break; case 3: continue; case 4: default:",
|
| - "case 1: case 2: break; case 3: continue foo; case 4: default:",
|
| - "case 1: case 2: {{return;}} case 3: default:",
|
| - "case 1: case 2: case 3: default: {1+1;{continue;}}",
|
| - "case 1: case 2: {1+1;{1+1;{continue;}}} case 3: default:",
|
| - "case 1: if (1) break; else continue; case 2: case 3: default:",
|
| - "case 1: case 2: if (1) {{break;}} else break; case 3: default:",
|
| - "case 1: if (1) break; else {if (1) break; else break;} case 2: default:",
|
| - "case 1: if (1) {if (1) break; else break;} else break; case 2: default:",
|
| - NULL};
|
| -
|
| - const char* data_error[] = {
|
| - "case 1: case 2: (function(){return}); default:",
|
| - "case 1: 1+1; case 2:",
|
| - "case 1: bar: break bar; case 2: break;",
|
| - "case 1: bar:return; case 2:",
|
| - "case 1: bar:{ continue;} case 2:",
|
| - "case 1: break; case 2: bar:{ throw new TypeError() } default:",
|
| - "case 1: case 2: { bar:{ { break;} } } default: break;",
|
| - "case 1: if (1) break; else {}; case 2: default:",
|
| - "case 1: case 2: if (1) break; default:",
|
| - "case 1: case 2: if (1) break; else 0; default:",
|
| - "case 1: case 2: if (1) 0; else break; default:",
|
| - "case 1: case 2: case 3: if (1) {} default:",
|
| - "case 1: bar:if (1) break; else continue; case 2: case 3: default:",
|
| - NULL};
|
| -
|
| - static const ParserFlag always_flags[] = {
|
| - kAllowStrongMode
|
| - };
|
| - RunParserSyncTest(strong_context_data, data_success, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(sloppy_context_data, data_error, kSuccess, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| - RunParserSyncTest(strong_context_data, data_error, kError, NULL, 0,
|
| - always_flags, arraysize(always_flags));
|
| + RunParserSyncTest(strict_context_data, data, kError);
|
| + RunParserSyncTest(sloppy_context_data, data, kSuccess);
|
| }
|
|
|
|
|
| @@ -6591,101 +6027,6 @@ TEST(ArrowFunctionASIErrors) {
|
| }
|
|
|
|
|
| -TEST(StrongModeFreeVariablesDeclaredByPreviousScript) {
|
| - i::FLAG_strong_mode = true;
|
| - i::FLAG_legacy_const = true;
|
| - v8::V8::Initialize();
|
| - v8::HandleScope scope(CcTest::isolate());
|
| - v8::Context::Scope context_scope(v8::Context::New(CcTest::isolate()));
|
| - v8::TryCatch try_catch(CcTest::isolate());
|
| -
|
| - // Introduce a bunch of variables, in all language modes.
|
| - const char* script1 =
|
| - "var my_var1 = 0; \n"
|
| - "function my_func1() { } \n"
|
| - "const my_const1 = 0; \n";
|
| - CompileRun(v8_str(script1));
|
| - CHECK(!try_catch.HasCaught());
|
| -
|
| - const char* script2 =
|
| - "\"use strict\"; \n"
|
| - "let my_var2 = 0; \n"
|
| - "function my_func2() { } \n"
|
| - "const my_const2 = 0 \n";
|
| - CompileRun(v8_str(script2));
|
| - CHECK(!try_catch.HasCaught());
|
| -
|
| - const char* script3 =
|
| - "\"use strong\"; \n"
|
| - "let my_var3 = 0; \n"
|
| - "function my_func3() { } \n"
|
| - "const my_const3 = 0; \n";
|
| - CompileRun(v8_str(script3));
|
| - CHECK(!try_catch.HasCaught());
|
| -
|
| - // Sloppy eval introduces variables in the surrounding scope.
|
| - const char* script4 =
|
| - "eval('var my_var4 = 0;') \n"
|
| - "eval('function my_func4() { }') \n"
|
| - "eval('const my_const4 = 0;') \n";
|
| - CompileRun(v8_str(script4));
|
| - CHECK(!try_catch.HasCaught());
|
| -
|
| - // Test that referencing these variables work.
|
| - const char* script5 =
|
| - "\"use strong\"; \n"
|
| - "my_var1; \n"
|
| - "my_func1; \n"
|
| - "my_const1; \n"
|
| - "my_var2; \n"
|
| - "my_func2; \n"
|
| - "my_const2; \n"
|
| - "my_var3; \n"
|
| - "my_func3; \n"
|
| - "my_const3; \n"
|
| - "my_var4; \n"
|
| - "my_func4; \n"
|
| - "my_const4; \n";
|
| - CompileRun(v8_str(script5));
|
| - CHECK(!try_catch.HasCaught());
|
| -}
|
| -
|
| -
|
| -TEST(StrongModeFreeVariablesDeclaredByLanguage) {
|
| - i::FLAG_strong_mode = true;
|
| - v8::V8::Initialize();
|
| - v8::HandleScope scope(CcTest::isolate());
|
| - v8::Context::Scope context_scope(v8::Context::New(CcTest::isolate()));
|
| - v8::TryCatch try_catch(CcTest::isolate());
|
| -
|
| - const char* script1 =
|
| - "\"use strong\"; \n"
|
| - "Math; \n"
|
| - "RegExp; \n";
|
| - CompileRun(v8_str(script1));
|
| - CHECK(!try_catch.HasCaught());
|
| -}
|
| -
|
| -
|
| -TEST(StrongModeFreeVariablesDeclaredInGlobalPrototype) {
|
| - i::FLAG_strong_mode = true;
|
| - v8::V8::Initialize();
|
| - v8::HandleScope scope(CcTest::isolate());
|
| - v8::Context::Scope context_scope(v8::Context::New(CcTest::isolate()));
|
| - v8::TryCatch try_catch(CcTest::isolate());
|
| -
|
| - const char* script1 = "this.__proto__.my_var = 0;\n";
|
| - CompileRun(v8_str(script1));
|
| - CHECK(!try_catch.HasCaught());
|
| -
|
| - const char* script2 =
|
| - "\"use strong\"; \n"
|
| - "my_var; \n";
|
| - CompileRun(v8_str(script2));
|
| - CHECK(!try_catch.HasCaught());
|
| -}
|
| -
|
| -
|
| static const ParserFlag kAllDestructuringFlags[] = {
|
| kAllowHarmonyDestructuring, kAllowHarmonyDestructuringAssignment,
|
| kAllowHarmonyDefaultParameters};
|
| @@ -7411,7 +6752,6 @@ TEST(DefaultParametersYieldInInitializers) {
|
| };
|
|
|
| const char* strict_function_context_data[][2] = {
|
| - {"'use strong'; (function f(", ") { });"},
|
| {"'use strict'; (function f(", ") { });"},
|
| {NULL, NULL}
|
| };
|
| @@ -7422,13 +6762,11 @@ TEST(DefaultParametersYieldInInitializers) {
|
| };
|
|
|
| const char* strict_arrow_context_data[][2] = {
|
| - {"'use strong'; ((", ")=>{});"},
|
| {"'use strict'; ((", ")=>{});"},
|
| {NULL, NULL}
|
| };
|
|
|
| const char* generator_context_data[][2] = {
|
| - {"'use strong'; (function *g(", ") { });"},
|
| {"'use strict'; (function *g(", ") { });"},
|
| {"(function *g(", ") { });"},
|
| {NULL, NULL}
|
| @@ -7463,8 +6801,7 @@ TEST(DefaultParametersYieldInInitializers) {
|
|
|
| // clang-format on
|
| static const ParserFlag always_flags[] = {kAllowHarmonyDestructuring,
|
| - kAllowHarmonyDefaultParameters,
|
| - kAllowStrongMode};
|
| + kAllowHarmonyDefaultParameters};
|
|
|
| RunParserSyncTest(sloppy_function_context_data, parameter_data, kSuccess,
|
| NULL, 0, always_flags, arraysize(always_flags));
|
| @@ -7651,59 +6988,24 @@ TEST(LanguageModeDirectivesNonSimpleParameterListErrors) {
|
| // TC39 deemed "use strict" directives to be an error when occurring in the
|
| // body of a function with non-simple parameter list, on 29/7/2015.
|
| // https://goo.gl/ueA7Ln
|
| - //
|
| - // In V8, this also applies to "use strong " directives.
|
| const char* context_data[][2] = {
|
| {"function f(", ") { 'use strict'; }"},
|
| - {"function f(", ") { 'use strong'; }"},
|
| {"function* g(", ") { 'use strict'; }"},
|
| - {"function* g(", ") { 'use strong'; }"},
|
| {"class c { foo(", ") { 'use strict' }"},
|
| - {"class c { foo(", ") { 'use strong' }"},
|
| {"var a = (", ") => { 'use strict'; }"},
|
| - {"var a = (", ") => { 'use strong'; }"},
|
| {"var o = { m(", ") { 'use strict'; }"},
|
| - {"var o = { m(", ") { 'use strong'; }"},
|
| {"var o = { *gm(", ") { 'use strict'; }"},
|
| - {"var o = { *gm(", ") { 'use strong'; }"},
|
| {"var c = { m(", ") { 'use strict'; }"},
|
| - {"var c = { m(", ") { 'use strong'; }"},
|
| {"var c = { *gm(", ") { 'use strict'; }"},
|
| - {"var c = { *gm(", ") { 'use strong'; }"},
|
|
|
| {"'use strict'; function f(", ") { 'use strict'; }"},
|
| - {"'use strict'; function f(", ") { 'use strong'; }"},
|
| {"'use strict'; function* g(", ") { 'use strict'; }"},
|
| - {"'use strict'; function* g(", ") { 'use strong'; }"},
|
| {"'use strict'; class c { foo(", ") { 'use strict' }"},
|
| - {"'use strict'; class c { foo(", ") { 'use strong' }"},
|
| {"'use strict'; var a = (", ") => { 'use strict'; }"},
|
| - {"'use strict'; var a = (", ") => { 'use strong'; }"},
|
| {"'use strict'; var o = { m(", ") { 'use strict'; }"},
|
| - {"'use strict'; var o = { m(", ") { 'use strong'; }"},
|
| {"'use strict'; var o = { *gm(", ") { 'use strict'; }"},
|
| - {"'use strict'; var o = { *gm(", ") { 'use strong'; }"},
|
| {"'use strict'; var c = { m(", ") { 'use strict'; }"},
|
| - {"'use strict'; var c = { m(", ") { 'use strong'; }"},
|
| {"'use strict'; var c = { *gm(", ") { 'use strict'; }"},
|
| - {"'use strict'; var c = { *gm(", ") { 'use strong'; }"},
|
| -
|
| - {"'use strong'; function f(", ") { 'use strict'; }"},
|
| - {"'use strong'; function f(", ") { 'use strong'; }"},
|
| - {"'use strong'; function* g(", ") { 'use strict'; }"},
|
| - {"'use strong'; function* g(", ") { 'use strong'; }"},
|
| - {"'use strong'; class c { foo(", ") { 'use strict' }"},
|
| - {"'use strong'; class c { foo(", ") { 'use strong' }"},
|
| - {"'use strong'; var a = (", ") => { 'use strict'; }"},
|
| - {"'use strong'; var a = (", ") => { 'use strong'; }"},
|
| - {"'use strong'; var o = { m(", ") { 'use strict'; }"},
|
| - {"'use strong'; var o = { m(", ") { 'use strong'; }"},
|
| - {"'use strong'; var o = { *gm(", ") { 'use strict'; }"},
|
| - {"'use strong'; var o = { *gm(", ") { 'use strong'; }"},
|
| - {"'use strong'; var c = { m(", ") { 'use strict'; }"},
|
| - {"'use strong'; var c = { m(", ") { 'use strong'; }"},
|
| - {"'use strong'; var c = { *gm(", ") { 'use strict'; }"},
|
| - {"'use strong'; var c = { *gm(", ") { 'use strong'; }"},
|
|
|
| {NULL, NULL}};
|
|
|
| @@ -7726,7 +7028,7 @@ TEST(LanguageModeDirectivesNonSimpleParameterListErrors) {
|
|
|
| static const ParserFlag always_flags[] = {
|
| kAllowHarmonyDefaultParameters, kAllowHarmonyDestructuring,
|
| - kAllowHarmonySloppy, kAllowStrongMode};
|
| + kAllowHarmonySloppy};
|
| RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags,
|
| arraysize(always_flags));
|
| }
|
|
|