| Index: src/preparser.cc
|
| diff --git a/src/preparser.cc b/src/preparser.cc
|
| index 170c9e725135818e3ff81a9914b16429b387dfa1..6889e71d25010e1d31008df346a1295a1da2147f 100644
|
| --- a/src/preparser.cc
|
| +++ b/src/preparser.cc
|
| @@ -937,36 +937,16 @@ PreParser::Expression PreParser::ParseFunctionLiteral(
|
| }
|
| Expect(Token::RBRACE, CHECK_OK);
|
|
|
| - // Validate strict mode. We can do this only after parsing the function,
|
| - // since the function can declare itself strict.
|
| - // Concise methods use StrictFormalParameters.
|
| - if (is_strict(language_mode()) || IsConciseMethod(kind) || is_rest) {
|
| - if (function_name.IsEvalOrArguments()) {
|
| - ReportMessageAt(function_name_location, "strict_eval_arguments");
|
| - *ok = false;
|
| - return Expression::Default();
|
| - }
|
| - if (name_is_strict_reserved) {
|
| - ReportMessageAt(function_name_location, "unexpected_strict_reserved");
|
| - *ok = false;
|
| - return Expression::Default();
|
| - }
|
| - if (eval_args_error_loc.IsValid()) {
|
| - ReportMessageAt(eval_args_error_loc, "strict_eval_arguments");
|
| - *ok = false;
|
| - return Expression::Default();
|
| - }
|
| - if (dupe_error_loc.IsValid()) {
|
| - ReportMessageAt(dupe_error_loc, "strict_param_dupe");
|
| - *ok = false;
|
| - return Expression::Default();
|
| - }
|
| - if (reserved_error_loc.IsValid()) {
|
| - ReportMessageAt(reserved_error_loc, "unexpected_strict_reserved");
|
| - *ok = false;
|
| - return Expression::Default();
|
| - }
|
| + // Validate name and parameter names. We can do this only after parsing the
|
| + // function, since the function can declare itself strict.
|
| + CheckFunctionName(language_mode(), kind, function_name,
|
| + name_is_strict_reserved, function_name_location, CHECK_OK);
|
| + const bool use_strict_params = is_rest || IsConciseMethod(kind);
|
| + CheckFunctionParameterNames(language_mode(), use_strict_params,
|
| + eval_args_error_loc, dupe_error_loc,
|
| + reserved_error_loc, CHECK_OK);
|
|
|
| + if (is_strict(language_mode())) {
|
| int end_position = scanner()->location().end_pos;
|
| CheckStrictOctalLiteral(start_position, end_position, CHECK_OK);
|
| }
|
|
|