| Index: src/parser.cc
|
| diff --git a/src/parser.cc b/src/parser.cc
|
| index 753391193bf03667a685a24161b83e53ca3ecbda..a45a4b15e60c906256719822d08ae8f2b16921b1 100644
|
| --- a/src/parser.cc
|
| +++ b/src/parser.cc
|
| @@ -871,11 +871,11 @@ Expression* ParserTraits::ParseV8Intrinsic(bool* ok) {
|
|
|
| FunctionLiteral* ParserTraits::ParseFunctionLiteral(
|
| const AstRawString* name, Scanner::Location function_name_location,
|
| - bool name_is_strict_reserved, FunctionKind kind,
|
| + FunctionNameValidity function_name_validity, FunctionKind kind,
|
| int function_token_position, FunctionLiteral::FunctionType type,
|
| FunctionLiteral::ArityRestriction arity_restriction, bool* ok) {
|
| return parser_->ParseFunctionLiteral(
|
| - name, function_name_location, name_is_strict_reserved, kind,
|
| + name, function_name_location, function_name_validity, kind,
|
| function_token_position, type, arity_restriction, ok);
|
| }
|
|
|
| @@ -1227,9 +1227,8 @@ FunctionLiteral* Parser::ParseLazy(Isolate* isolate, ParseInfo* info,
|
| shared_info->end_position());
|
| } else {
|
| result = ParseFunctionLiteral(raw_name, Scanner::Location::invalid(),
|
| - false, // Strict mode name already checked.
|
| - shared_info->kind(), RelocInfo::kNoPosition,
|
| - function_type,
|
| + kSkipFunctionNameCheck, shared_info->kind(),
|
| + RelocInfo::kNoPosition, function_type,
|
| FunctionLiteral::NORMAL_ARITY, &ok);
|
| }
|
| // Make sure the results agree.
|
| @@ -2194,7 +2193,9 @@ Statement* Parser::ParseFunctionDeclaration(
|
| const AstRawString* name = ParseIdentifierOrStrictReservedWord(
|
| &is_strict_reserved, CHECK_OK);
|
| FunctionLiteral* fun =
|
| - ParseFunctionLiteral(name, scanner()->location(), is_strict_reserved,
|
| + ParseFunctionLiteral(name, scanner()->location(),
|
| + is_strict_reserved ? kFunctionNameIsStrictReserved
|
| + : kFunctionNameValidityUnknown,
|
| is_generator ? FunctionKind::kGeneratorFunction
|
| : FunctionKind::kNormalFunction,
|
| pos, FunctionLiteral::DECLARATION,
|
| @@ -3914,8 +3915,8 @@ void ParserTraits::ReindexLiterals(
|
|
|
| FunctionLiteral* Parser::ParseFunctionLiteral(
|
| const AstRawString* function_name, Scanner::Location function_name_location,
|
| - bool name_is_strict_reserved, FunctionKind kind, int function_token_pos,
|
| - FunctionLiteral::FunctionType function_type,
|
| + FunctionNameValidity function_name_validity, FunctionKind kind,
|
| + int function_token_pos, FunctionLiteral::FunctionType function_type,
|
| FunctionLiteral::ArityRestriction arity_restriction, bool* ok) {
|
| // Function ::
|
| // '(' FormalParameterList? ')' '{' FunctionBody '}'
|
| @@ -4128,9 +4129,8 @@ FunctionLiteral* Parser::ParseFunctionLiteral(
|
|
|
| // 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);
|
| + CheckFunctionName(language_mode(), function_name, function_name_validity,
|
| + function_name_location, CHECK_OK);
|
| const bool use_strict_params =
|
| !parsing_state.is_simple_parameter_list || IsConciseMethod(kind);
|
| const bool allow_duplicate_parameters =
|
|
|