Chromium Code Reviews| Index: test/cctest/test-parsing.cc |
| diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc |
| index 675b48797952dbaf3e0afd23b933c61651ea1998..f60e2d10f874bbce243b4e38885ed1fea5840354 100644 |
| --- a/test/cctest/test-parsing.cc |
| +++ b/test/cctest/test-parsing.cc |
| @@ -6389,7 +6389,6 @@ TEST(DestructuringPositiveTests) { |
| {"function f(", ") {}"}, |
| {"function f(argument1, ", ") {}"}, |
| {"var f = (", ") => {};"}, |
| - {"var f = ", " => {};"}, |
| {"var f = (argument1,", ") => {};"}, |
| {NULL, NULL}}; |
| @@ -6417,6 +6416,7 @@ TEST(DestructuringPositiveTests) { |
| "{42 : x = 42}", |
| "{42e-2 : x}", |
| "{42e-2 : x = 42}", |
| + "{x : y, x : z}", |
| "{'hi' : x}", |
| "{'hi' : x = 42}", |
| "{var: x}", |
| @@ -6605,6 +6605,85 @@ TEST(DestructuringDisallowPatternsInForVarIn) { |
| } |
| +TEST(DestructuringDuplicateParams) { |
|
wingo
2015/06/22 10:28:33
Need tests that patterns are not allowed in rest p
Dmitry Lomov (no reviews)
2015/06/22 11:11:42
Done (also fixed)
|
| + i::FLAG_harmony_destructuring = true; |
| + i::FLAG_harmony_arrow_functions = true; |
| + i::FLAG_harmony_computed_property_names = true; |
| + static const ParserFlag always_flags[] = { |
| + kAllowHarmonyObjectLiterals, kAllowHarmonyComputedPropertyNames, |
| + kAllowHarmonyArrowFunctions, kAllowHarmonyDestructuring}; |
| + const char* context_data[][2] = {{"'use strict';", ""}, |
| + {"function outer() { 'use strict';", "}"}, |
| + {nullptr, nullptr}}; |
| + |
| + |
| + // clang-format off |
| + const char* error_data[] = { |
| + "function f(x,x){}", |
| + "function f(x, {x : x}){}", |
| + "function f(x, {x}){}", |
| + "function f({x,x}) {}", |
| + "function f([x,x]) {}", |
| + "function f(x, [y,{z:x}]) {}", |
| + "function f([x,{y:x}]) {}", |
| + // non-simple parameter list causes duplicates to be errors in sloppy mode. |
| + "function f(x, x, {a}) {}", |
|
wingo
2015/06/22 10:28:33
Arrow function tests would be nice here:
({x, x
Dmitry Lomov (no reviews)
2015/06/22 11:11:42
For arrow functions duplicate parameter detection
|
| + nullptr}; |
| + // clang-format on |
| + RunParserSyncTest(context_data, error_data, kError, NULL, 0, always_flags, |
| + arraysize(always_flags)); |
| +} |
| + |
| + |
| +TEST(DestructuringDuplicateParamsSloppy) { |
| + i::FLAG_harmony_destructuring = true; |
| + i::FLAG_harmony_arrow_functions = true; |
| + i::FLAG_harmony_computed_property_names = true; |
| + static const ParserFlag always_flags[] = { |
| + kAllowHarmonyObjectLiterals, kAllowHarmonyComputedPropertyNames, |
| + kAllowHarmonyArrowFunctions, kAllowHarmonyDestructuring}; |
| + const char* context_data[][2] = { |
| + {"", ""}, {"function outer() {", "}"}, {nullptr, nullptr}}; |
| + |
| + |
| + // clang-format off |
| + const char* error_data[] = { |
| + // non-simple parameter list causes duplicates to be errors in sloppy mode. |
| + "function f(x, {x : x}){}", |
| + "function f(x, {x}){}", |
| + "function f({x,x}) {}", |
| + "function f(x, x, {a}) {}", |
| + nullptr}; |
| + // clang-format on |
| + RunParserSyncTest(context_data, error_data, kError, NULL, 0, always_flags, |
| + arraysize(always_flags)); |
| +} |
| + |
| + |
| +TEST(DestructuringDisallowPatternsInSingleParamArrows) { |
| + i::FLAG_harmony_destructuring = true; |
| + i::FLAG_harmony_arrow_functions = true; |
| + i::FLAG_harmony_computed_property_names = true; |
| + static const ParserFlag always_flags[] = { |
| + kAllowHarmonyObjectLiterals, kAllowHarmonyComputedPropertyNames, |
| + kAllowHarmonyArrowFunctions, kAllowHarmonyDestructuring}; |
| + const char* context_data[][2] = {{"'use strict';", ""}, |
| + {"function outer() { 'use strict';", "}"}, |
| + {"", ""}, |
| + {"function outer() { ", "}"}, |
| + {nullptr, nullptr}}; |
| + |
| + // clang-format off |
| + const char* error_data[] = { |
| + "var f = {x} => {};", |
| + "var f = {x,y} => {};", |
| + nullptr}; |
| + // clang-format on |
| + RunParserSyncTest(context_data, error_data, kError, NULL, 0, always_flags, |
| + arraysize(always_flags)); |
| +} |
| + |
| + |
| TEST(SpreadArray) { |
| i::FLAG_harmony_spread_arrays = true; |