Index: test/cctest/test-parsing.cc |
diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc |
index 1ea550caab1dc65b1fe0f320531bb250748c604d..4f73c9ffdfca05d167732df183fb460997a4d014 100644 |
--- a/test/cctest/test-parsing.cc |
+++ b/test/cctest/test-parsing.cc |
@@ -6752,6 +6752,71 @@ TEST(DestructuringDisallowPatternsInRestParams) { |
} |
+TEST(DefaultParametersYieldInInitializers) { |
+ // clang-format off |
+ const char* sloppy_function_context_data[][2] = { |
+ {"(function f(", ") { });"}, |
+ // TODO(wingo): Add arrow functions. |
+ {NULL, NULL} |
+ }; |
+ |
+ const char* strict_function_context_data[][2] = { |
+ {"'use strong'; (function f(", ") { });"}, |
+ {"'use strict'; (function f(", ") { });"}, |
+ // TODO(wingo,conradw): These should also signal early errors. |
+ // {"(function f(", ") {'use strong'; });"}, |
+ // {"(function f(", ") {'use strict'; });"}, |
+ // TODO(wingo): Add arrow functions. |
+ {NULL, NULL} |
+ }; |
+ |
+ const char* generator_context_data[][2] = { |
+ {"'use strong'; (function *g(", ") { });"}, |
+ {"'use strict'; (function *g(", ") { });"}, |
+ // TODO(wingo,conradw): These should also signal early errors. |
+ // {"(function *g(", ") {'use strong'; });"}, |
+ // {"(function *g(", ") {'use strict'; });"}, |
+ {"(function *g(", ") { });"}, |
+ {NULL, NULL} |
+ }; |
+ |
+ const char* formal_parameter_data[] = { |
+ "x=yield", |
+ "x, y=yield", |
+ "{x=yield}", |
+ "[x=yield]", |
+ "{x}=yield", |
+ "[x]=yield", |
+ |
+ "x=(yield)", |
+ "x, y=(yield)", |
+ "{x=(yield)}", |
+ "[x=(yield)]", |
+ "{x}=(yield)", |
+ "[x]=(yield)", |
+ |
+ "x=f(yield)", |
+ "x, y=f(yield)", |
+ "{x=f(yield)}", |
+ "[x=f(yield)]", |
+ "{x}=f(yield)", |
+ "[x]=f(yield)", |
+ NULL |
+ }; |
+ |
+ // clang-format on |
+ static const ParserFlag always_flags[] = { |
+ kAllowHarmonyDestructuring, kAllowHarmonyDefaultParameters, |
+ kAllowHarmonyArrowFunctions, kAllowStrongMode}; |
+ RunParserSyncTest(sloppy_function_context_data, formal_parameter_data, |
+ kSuccess, NULL, 0, always_flags, arraysize(always_flags)); |
+ RunParserSyncTest(strict_function_context_data, formal_parameter_data, kError, |
+ NULL, 0, always_flags, arraysize(always_flags)); |
+ RunParserSyncTest(generator_context_data, formal_parameter_data, kError, NULL, |
+ 0, always_flags, arraysize(always_flags)); |
+} |
+ |
+ |
TEST(SpreadArray) { |
i::FLAG_harmony_spread_arrays = true; |