| Index: test/cctest/test-parsing.cc
|
| diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc
|
| index 86e042eced4ddf856bba7eacf7ae0bdde96f124f..863820a10e4e9d36283feab488c2b558183ad125 100644
|
| --- a/test/cctest/test-parsing.cc
|
| +++ b/test/cctest/test-parsing.cc
|
| @@ -1377,6 +1377,7 @@ enum ParserFlag {
|
| kAllowHarmonyClasses,
|
| kAllowHarmonyObjectLiterals,
|
| kAllowHarmonyRestParameters,
|
| + kAllowHarmonyNewTarget,
|
| kAllowHarmonySloppy,
|
| kAllowHarmonyUnicode,
|
| kAllowHarmonyComputedPropertyNames,
|
| @@ -1404,6 +1405,7 @@ void SetParserFlags(i::ParserBase<Traits>* parser,
|
| parser->set_allow_harmony_classes(flags.Contains(kAllowHarmonyClasses));
|
| parser->set_allow_harmony_rest_params(
|
| flags.Contains(kAllowHarmonyRestParameters));
|
| + parser->set_allow_harmony_new_target(flags.Contains(kAllowHarmonyNewTarget));
|
| parser->set_allow_harmony_spreadcalls(
|
| flags.Contains(kAllowHarmonySpreadCalls));
|
| parser->set_allow_harmony_sloppy(flags.Contains(kAllowHarmonySloppy));
|
| @@ -6246,3 +6248,41 @@ TEST(StrongModeFreeVariablesNotDeclared) {
|
| *exception));
|
| }
|
| }
|
| +
|
| +
|
| +TEST(NewTarget) {
|
| + const char* bad_context_data[][2] = {{"", ""}, {"'use strict';", ""}, {NULL}};
|
| + const char* good_context_data[][2] = {
|
| + {"function f() {", "}"},
|
| + {"'use strict'; function f() {", "}"},
|
| + {"var f = function() {", "}"},
|
| + {"'use strict'; var f = function() {", "}"},
|
| + {"({m: function() {", "}})"},
|
| + {"'use strict'; ({m: function() {", "}})"},
|
| + {"({m() {", "}})"},
|
| + {"'use strict'; ({m() {", "}})"},
|
| + {"({get x() {", "}})"},
|
| + {"'use strict'; ({get x() {", "}})"},
|
| + {"({set x(_) {", "}})"},
|
| + {"'use strict'; ({set x(_) {", "}})"},
|
| + {"class C {m() {", "}}"},
|
| + {"class C {get x() {", "}}"},
|
| + {"class C {set x(_) {", "}}"},
|
| + {NULL}};
|
| +
|
| + const char* data[] = {"new.target", "{ new.target }", "() => { new.target }",
|
| + "() => new.target", "if (1) { new.target }",
|
| + "if (1) {} else { new.target }",
|
| + "while (0) { new.target }",
|
| + "do { new.target } while (0)", NULL};
|
| +
|
| + static const ParserFlag always_flags[] = {
|
| + kAllowHarmonyArrowFunctions, kAllowHarmonyClasses, kAllowHarmonyNewTarget,
|
| + kAllowHarmonyObjectLiterals, kAllowHarmonySloppy,
|
| + };
|
| +
|
| + RunParserSyncTest(bad_context_data, data, kError, NULL, 0, always_flags,
|
| + arraysize(always_flags));
|
| + RunParserSyncTest(good_context_data, data, kSuccess, NULL, 0, always_flags,
|
| + arraysize(always_flags));
|
| +}
|
|
|