| Index: test/cctest/test-parsing.cc
 | 
| diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc
 | 
| index 2ee81cf6ce417303425a24b7eef832433d7f9179..35aacdcfeb52865b639f91204ab4a1ab677162ea 100644
 | 
| --- a/test/cctest/test-parsing.cc
 | 
| +++ b/test/cctest/test-parsing.cc
 | 
| @@ -3965,8 +3965,6 @@ TEST(MethodDefinitionStrictFormalParamereters) {
 | 
|    const char* params_data[] = {
 | 
|      "x, x",
 | 
|      "x, y, x",
 | 
| -    "eval",
 | 
| -    "arguments",
 | 
|      "var",
 | 
|      "const",
 | 
|      NULL
 | 
| @@ -3978,6 +3976,57 @@ TEST(MethodDefinitionStrictFormalParamereters) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +TEST(MethodDefinitionEvalArguments) {
 | 
| +  const char* strict_context_data[][2] =
 | 
| +      {{"'use strict'; ({method(", "){}});"},
 | 
| +       {"'use strict'; ({*method(", "){}});"},
 | 
| +       {NULL, NULL}};
 | 
| +  const char* sloppy_context_data[][2] =
 | 
| +      {{"({method(", "){}});"},
 | 
| +       {"({*method(", "){}});"},
 | 
| +       {NULL, NULL}};
 | 
| +
 | 
| +  const char* data[] = {
 | 
| +      "eval",
 | 
| +      "arguments",
 | 
| +      NULL};
 | 
| +
 | 
| +  static const ParserFlag always_flags[] = {kAllowHarmonyObjectLiterals};
 | 
| +
 | 
| +  // Fail in strict mode
 | 
| +  RunParserSyncTest(strict_context_data, data, kError, NULL, 0, always_flags,
 | 
| +                    arraysize(always_flags));
 | 
| +
 | 
| +  // OK in sloppy mode
 | 
| +  RunParserSyncTest(sloppy_context_data, data, kSuccess, NULL, 0, always_flags,
 | 
| +                    arraysize(always_flags));
 | 
| +}
 | 
| +
 | 
| +
 | 
| +TEST(MethodDefinitionDuplicateEvalArguments) {
 | 
| +  const char* context_data[][2] =
 | 
| +      {{"'use strict'; ({method(", "){}});"},
 | 
| +       {"'use strict'; ({*method(", "){}});"},
 | 
| +       {"({method(", "){}});"},
 | 
| +       {"({*method(", "){}});"},
 | 
| +       {NULL, NULL}};
 | 
| +
 | 
| +  const char* data[] = {
 | 
| +      "eval, eval",
 | 
| +      "eval, a, eval",
 | 
| +      "arguments, arguments",
 | 
| +      "arguments, a, arguments",
 | 
| +      NULL};
 | 
| +
 | 
| +  static const ParserFlag always_flags[] = {kAllowHarmonyObjectLiterals};
 | 
| +
 | 
| +  // In strict mode, the error is using "eval" or "arguments" as parameter names
 | 
| +  // In sloppy mode, the error is that eval / arguments are duplicated
 | 
| +  RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags,
 | 
| +                    arraysize(always_flags));
 | 
| +}
 | 
| +
 | 
| +
 | 
|  TEST(MethodDefinitionDuplicateProperty) {
 | 
|    const char* context_data[][2] = {{"'use strict'; ({", "});"},
 | 
|                                     {NULL, NULL}};
 | 
| @@ -4880,6 +4929,59 @@ TEST(ParseRestParametersErrors) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +TEST(RestParametersEvalArguments) {
 | 
| +  const char* strict_context_data[][2] =
 | 
| +      {{"'use strict';(function(",
 | 
| +        "){ return;})(1, [], /regexp/, 'str',function(){});"},
 | 
| +       {NULL, NULL}};
 | 
| +  const char* sloppy_context_data[][2] =
 | 
| +      {{"(function(",
 | 
| +        "){ return;})(1, [],/regexp/, 'str', function(){});"},
 | 
| +       {NULL, NULL}};
 | 
| +
 | 
| +  const char* data[] = {
 | 
| +      "...eval",
 | 
| +      "eval, ...args",
 | 
| +      "...arguments",
 | 
| +      "arguments, ...args",
 | 
| +      NULL};
 | 
| +
 | 
| +  static const ParserFlag always_flags[] = {kAllowHarmonyRestParameters};
 | 
| +
 | 
| +  // Fail in strict mode
 | 
| +  RunParserSyncTest(strict_context_data, data, kError, NULL, 0, always_flags,
 | 
| +                    arraysize(always_flags));
 | 
| +
 | 
| +  // OK in sloppy mode
 | 
| +  RunParserSyncTest(sloppy_context_data, data, kSuccess, NULL, 0, always_flags,
 | 
| +                    arraysize(always_flags));
 | 
| +}
 | 
| +
 | 
| +
 | 
| +TEST(RestParametersDuplicateEvalArguments) {
 | 
| +  const char* context_data[][2] =
 | 
| +      {{"'use strict';(function(",
 | 
| +        "){ return;})(1, [], /regexp/, 'str',function(){});"},
 | 
| +       {"(function(",
 | 
| +        "){ return;})(1, [],/regexp/, 'str', function(){});"},
 | 
| +       {NULL, NULL}};
 | 
| +
 | 
| +  const char* data[] = {
 | 
| +      "eval, ...eval",
 | 
| +      "eval, eval, ...args",
 | 
| +      "arguments, ...arguments",
 | 
| +      "arguments, arguments, ...args",
 | 
| +      NULL};
 | 
| +
 | 
| +  static const ParserFlag always_flags[] = {kAllowHarmonyRestParameters};
 | 
| +
 | 
| +  // In strict mode, the error is using "eval" or "arguments" as parameter names
 | 
| +  // In sloppy mode, the error is that eval / arguments are duplicated
 | 
| +  RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags,
 | 
| +                    arraysize(always_flags));
 | 
| +}
 | 
| +
 | 
| +
 | 
|  TEST(LexicalScopingSloppyMode) {
 | 
|    const char* context_data[][2] = {
 | 
|        {"", ""},
 | 
| 
 |