| Index: test/cctest/test-parsing.cc
|
| diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc
|
| index 24cf67b4a16fec074530d8c2a067696e8cc8ed2a..6132d4109d2bc1c966962d9154649c8dfd57bc6d 100644
|
| --- a/test/cctest/test-parsing.cc
|
| +++ b/test/cctest/test-parsing.cc
|
| @@ -1386,6 +1386,7 @@
|
| kAllowHarmonySpreadCalls,
|
| kAllowHarmonyDestructuring,
|
| kAllowHarmonySpreadArrays,
|
| + kAllowHarmonyNewTarget,
|
| kAllowStrongMode
|
| };
|
|
|
| @@ -1419,6 +1420,7 @@
|
| flags.Contains(kAllowHarmonyDestructuring));
|
| parser->set_allow_harmony_spread_arrays(
|
| flags.Contains(kAllowHarmonySpreadArrays));
|
| + parser->set_allow_harmony_new_target(flags.Contains(kAllowHarmonyNewTarget));
|
| parser->set_allow_strong_mode(flags.Contains(kAllowStrongMode));
|
| }
|
|
|
| @@ -6615,3 +6617,58 @@
|
| RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags,
|
| arraysize(always_flags));
|
| }
|
| +
|
| +
|
| +TEST(NewTarget) {
|
| + // clang-format off
|
| + 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* bad_context_data[][2] = {
|
| + {"", ""},
|
| + {"'use strict';", ""},
|
| + {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,
|
| + };
|
| + // clang-format on
|
| +
|
| + RunParserSyncTest(good_context_data, data, kSuccess, NULL, 0, always_flags,
|
| + arraysize(always_flags));
|
| + RunParserSyncTest(bad_context_data, data, kError, NULL, 0, always_flags,
|
| + arraysize(always_flags));
|
| +}
|
|
|