| Index: src/parser.cc
|
| diff --git a/src/parser.cc b/src/parser.cc
|
| index c1e6815b002af688d7be6266384c1e561f3df94f..6309e19bd0bc040ba7f2337b835d9d985a085d3c 100644
|
| --- a/src/parser.cc
|
| +++ b/src/parser.cc
|
| @@ -392,22 +392,6 @@ class TargetScope BASE_EMBEDDED {
|
| // ----------------------------------------------------------------------------
|
| // Implementation of Parser
|
|
|
| -bool ParserTraits::IsEvalOrArguments(const AstRawString* identifier) const {
|
| - return identifier == parser_->ast_value_factory()->eval_string() ||
|
| - identifier == parser_->ast_value_factory()->arguments_string();
|
| -}
|
| -
|
| -
|
| -bool ParserTraits::IsPrototype(const AstRawString* identifier) const {
|
| - return identifier == parser_->ast_value_factory()->prototype_string();
|
| -}
|
| -
|
| -
|
| -bool ParserTraits::IsConstructor(const AstRawString* identifier) const {
|
| - return identifier == parser_->ast_value_factory()->constructor_string();
|
| -}
|
| -
|
| -
|
| bool ParserTraits::IsThisProperty(Expression* expression) {
|
| DCHECK(expression != NULL);
|
| Property* property = expression->AsProperty();
|
| @@ -654,28 +638,6 @@ void ParserTraits::ReportMessageAt(Scanner::Location source_location,
|
| }
|
|
|
|
|
| -const AstRawString* ParserTraits::GetSymbol(Scanner* scanner) {
|
| - const AstRawString* result =
|
| - parser_->scanner()->CurrentSymbol(parser_->ast_value_factory());
|
| - DCHECK(result != NULL);
|
| - return result;
|
| -}
|
| -
|
| -
|
| -const AstRawString* ParserTraits::GetNumberAsSymbol(Scanner* scanner) {
|
| - double double_value = parser_->scanner()->DoubleValue();
|
| - char array[100];
|
| - const char* string =
|
| - DoubleToCString(double_value, Vector<char>(array, arraysize(array)));
|
| - return parser_->ast_value_factory()->GetOneByteString(string);
|
| -}
|
| -
|
| -
|
| -const AstRawString* ParserTraits::GetNextSymbol(Scanner* scanner) {
|
| - return parser_->scanner()->NextSymbol(parser_->ast_value_factory());
|
| -}
|
| -
|
| -
|
| Expression* ParserTraits::ThisExpression(Scope* scope, AstNodeFactory* factory,
|
| int pos) {
|
| return factory->NewVariableProxy(scope->receiver(), pos);
|
| @@ -739,7 +701,7 @@ Expression* ParserTraits::ExpressionFromIdentifier(const AstRawString* name,
|
|
|
| Expression* ParserTraits::ExpressionFromString(int pos, Scanner* scanner,
|
| AstNodeFactory* factory) {
|
| - const AstRawString* symbol = GetSymbol(scanner);
|
| + const AstRawString* symbol = parser_->GetSymbol(scanner);
|
| if (parser_->fni_ != NULL) parser_->fni_->PushLiteralName(symbol);
|
| return factory->NewStringLiteral(symbol, pos);
|
| }
|
| @@ -3502,7 +3464,8 @@ Handle<FixedArray> CompileTimeValue::GetElements(Handle<FixedArray> value) {
|
| }
|
|
|
|
|
| -bool CheckAndDeclareArrowParameter(ParserTraits* traits, Expression* expression,
|
| +bool CheckAndDeclareArrowParameter(AstValueFactory* ast_value_factory,
|
| + Scanner* scanner, Expression* expression,
|
| Scope* scope, int* num_params,
|
| Scanner::Location* dupe_loc) {
|
| // Case for empty parameter lists:
|
| @@ -3520,8 +3483,9 @@ bool CheckAndDeclareArrowParameter(ParserTraits* traits, Expression* expression,
|
| if (expression->AsVariableProxy()->is_this()) return false;
|
|
|
| const AstRawString* raw_name = expression->AsVariableProxy()->raw_name();
|
| - if (traits->IsEvalOrArguments(raw_name) ||
|
| - traits->IsFutureStrictReserved(raw_name))
|
| + if (raw_name == ast_value_factory->eval_string() ||
|
| + raw_name == ast_value_factory->arguments_string() ||
|
| + scanner->IdentifierIsFutureStrictReserved(raw_name))
|
| return false;
|
|
|
| if (scope->IsDeclared(raw_name)) {
|
| @@ -3543,10 +3507,12 @@ bool CheckAndDeclareArrowParameter(ParserTraits* traits, Expression* expression,
|
| binop->right()->is_parenthesized())
|
| return false;
|
|
|
| - return CheckAndDeclareArrowParameter(traits, binop->left(), scope,
|
| - num_params, dupe_loc) &&
|
| - CheckAndDeclareArrowParameter(traits, binop->right(), scope,
|
| - num_params, dupe_loc);
|
| + return CheckAndDeclareArrowParameter(ast_value_factory, scanner,
|
| + binop->left(), scope, num_params,
|
| + dupe_loc) &&
|
| + CheckAndDeclareArrowParameter(ast_value_factory, scanner,
|
| + binop->right(), scope, num_params,
|
| + dupe_loc);
|
| }
|
|
|
| // Any other kind of expression is not a valid parameter list.
|
| @@ -3562,8 +3528,9 @@ int ParserTraits::DeclareArrowParametersFromExpression(
|
| // parsed as arrow function parameter list, becauseonly top-level functions
|
| // are parsed lazily.
|
| parser_->parsing_lazy_arrow_parameters_ = false;
|
| - *ok = CheckAndDeclareArrowParameter(this, expression, scope, &num_params,
|
| - dupe_loc);
|
| + *ok = CheckAndDeclareArrowParameter(parser_->ast_value_factory(),
|
| + parser_->scanner(), expression, scope,
|
| + &num_params, dupe_loc);
|
| return num_params;
|
| }
|
|
|
|
|