| Index: src/preparser.h
|
| diff --git a/src/preparser.h b/src/preparser.h
|
| index 06de6ebe2e4ccb7dca0a7f84f1d47146e549f484..517403d34733eba81ea86c7bedd38162feded389 100644
|
| --- a/src/preparser.h
|
| +++ b/src/preparser.h
|
| @@ -114,8 +114,6 @@ class ParserBase : public Traits {
|
| }
|
|
|
| protected:
|
| - friend class Traits::Type::Checkpoint;
|
| -
|
| enum AllowEvalOrArgumentsAsIdentifier {
|
| kAllowEvalOrArguments,
|
| kDontAllowEvalOrArguments
|
| @@ -126,8 +124,6 @@ class ParserBase : public Traits {
|
| PARSE_EAGERLY
|
| };
|
|
|
| - class ParserCheckpoint;
|
| -
|
| // ---------------------------------------------------------------------------
|
| // FunctionState and BlockState together implement the parser's scope stack.
|
| // The parser's current scope is in scope_. BlockState and FunctionState
|
| @@ -223,38 +219,6 @@ class ParserBase : public Traits {
|
| typename Traits::Type::Factory factory_;
|
|
|
| friend class ParserTraits;
|
| - friend class ParserCheckpoint;
|
| - };
|
| -
|
| - // Annoyingly, arrow functions first parse as comma expressions, then when we
|
| - // see the => we have to go back and reinterpret the arguments as being formal
|
| - // parameters. To do so we need to reset some of the parser state back to
|
| - // what it was before the arguments were first seen.
|
| - class ParserCheckpoint : public Traits::Type::Checkpoint {
|
| - public:
|
| - template <typename Parser>
|
| - explicit ParserCheckpoint(Parser* parser)
|
| - : Traits::Type::Checkpoint(parser) {
|
| - function_state_ = parser->function_state_;
|
| - next_materialized_literal_index_ =
|
| - function_state_->next_materialized_literal_index_;
|
| - next_handler_index_ = function_state_->next_handler_index_;
|
| - expected_property_count_ = function_state_->expected_property_count_;
|
| - }
|
| -
|
| - void Restore() {
|
| - Traits::Type::Checkpoint::Restore();
|
| - function_state_->next_materialized_literal_index_ =
|
| - next_materialized_literal_index_;
|
| - function_state_->next_handler_index_ = next_handler_index_;
|
| - function_state_->expected_property_count_ = expected_property_count_;
|
| - }
|
| -
|
| - private:
|
| - FunctionState* function_state_;
|
| - int next_materialized_literal_index_;
|
| - int next_handler_index_;
|
| - int expected_property_count_;
|
| };
|
|
|
| class ParsingModeScope BASE_EMBEDDED {
|
| @@ -1057,14 +1021,6 @@ class PreParserFactory {
|
| };
|
|
|
|
|
| -class PreParserCheckpoint BASE_EMBEDDED {
|
| - public:
|
| - template <typename Parser>
|
| - explicit PreParserCheckpoint(Parser* parser) {}
|
| - void Restore() {}
|
| -};
|
| -
|
| -
|
| class PreParser;
|
|
|
| class PreParserTraits {
|
| @@ -1077,7 +1033,6 @@ class PreParserTraits {
|
| // Used by FunctionState and BlockState.
|
| typedef PreParserScope Scope;
|
| typedef PreParserScope ScopePtr;
|
| - typedef PreParserCheckpoint Checkpoint;
|
|
|
| // PreParser doesn't need to store generator variables.
|
| typedef void GeneratorVariable;
|
| @@ -2051,12 +2006,10 @@ ParserBase<Traits>::ParseAssignmentExpression(bool accept_IN, bool* ok) {
|
| }
|
|
|
| if (fni_ != NULL) fni_->Enter();
|
| - ParserCheckpoint checkpoint(this);
|
| ExpressionT expression =
|
| this->ParseConditionalExpression(accept_IN, CHECK_OK);
|
|
|
| if (allow_arrow_functions() && peek() == Token::ARROW) {
|
| - checkpoint.Restore();
|
| expression = this->ParseArrowFunctionLiteral(lhs_location.beg_pos,
|
| expression, CHECK_OK);
|
| return expression;
|
|
|