Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(786)

Side by Side Diff: src/parsing/parser-base.h

Issue 2445993002: Drop unused end-position from VariableProxy (Closed)
Patch Set: Addressed comment Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/parsing/parser.cc ('k') | src/parsing/pattern-rewriter.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_PARSING_PARSER_BASE_H 5 #ifndef V8_PARSING_PARSER_BASE_H
6 #define V8_PARSING_PARSER_BASE_H 6 #define V8_PARSING_PARSER_BASE_H
7 7
8 #include "src/ast/ast.h" 8 #include "src/ast/ast.h"
9 #include "src/ast/scopes.h" 9 #include "src/ast/scopes.h"
10 #include "src/bailout-reason.h" 10 #include "src/bailout-reason.h"
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 bool for_promise_reject; 666 bool for_promise_reject;
667 ZoneList<const AstRawString*> bound_names; 667 ZoneList<const AstRawString*> bound_names;
668 TailCallExpressionList tail_call_expressions; 668 TailCallExpressionList tail_call_expressions;
669 }; 669 };
670 670
671 struct ForInfo { 671 struct ForInfo {
672 public: 672 public:
673 explicit ForInfo(ParserBase* parser) 673 explicit ForInfo(ParserBase* parser)
674 : bound_names(1, parser->zone()), 674 : bound_names(1, parser->zone()),
675 mode(ForEachStatement::ENUMERATE), 675 mode(ForEachStatement::ENUMERATE),
676 each_loc(), 676 position(kNoSourcePosition),
677 parsing_result() {} 677 parsing_result() {}
678 ZoneList<const AstRawString*> bound_names; 678 ZoneList<const AstRawString*> bound_names;
679 ForEachStatement::VisitMode mode; 679 ForEachStatement::VisitMode mode;
680 Scanner::Location each_loc; 680 int position;
681 DeclarationParsingResult parsing_result; 681 DeclarationParsingResult parsing_result;
682 }; 682 };
683 683
684 struct ClassInfo { 684 struct ClassInfo {
685 public: 685 public:
686 explicit ClassInfo(ParserBase* parser) 686 explicit ClassInfo(ParserBase* parser)
687 : proxy(nullptr), 687 : proxy(nullptr),
688 extends(parser->impl()->EmptyExpression()), 688 extends(parser->impl()->EmptyExpression()),
689 properties(parser->impl()->NewClassPropertyList(4)), 689 properties(parser->impl()->NewClassPropertyList(4)),
690 instance_field_initializers(parser->impl()->NewExpressionList(0)), 690 instance_field_initializers(parser->impl()->NewExpressionList(0)),
(...skipping 1072 matching lines...) Expand 10 before | Expand all | Expand 10 after
1763 /* falls through */ 1763 /* falls through */
1764 case Token::IDENTIFIER: 1764 case Token::IDENTIFIER:
1765 case Token::LET: 1765 case Token::LET:
1766 case Token::STATIC: 1766 case Token::STATIC:
1767 case Token::YIELD: 1767 case Token::YIELD:
1768 case Token::AWAIT: 1768 case Token::AWAIT:
1769 case Token::ESCAPED_STRICT_RESERVED_WORD: 1769 case Token::ESCAPED_STRICT_RESERVED_WORD:
1770 case Token::FUTURE_STRICT_RESERVED_WORD: { 1770 case Token::FUTURE_STRICT_RESERVED_WORD: {
1771 // Using eval or arguments in this context is OK even in strict mode. 1771 // Using eval or arguments in this context is OK even in strict mode.
1772 IdentifierT name = ParseAndClassifyIdentifier(CHECK_OK); 1772 IdentifierT name = ParseAndClassifyIdentifier(CHECK_OK);
1773 return impl()->ExpressionFromIdentifier(name, beg_pos, 1773 return impl()->ExpressionFromIdentifier(name, beg_pos);
1774 scanner()->location().end_pos);
1775 } 1774 }
1776 1775
1777 case Token::STRING: { 1776 case Token::STRING: {
1778 BindingPatternUnexpectedToken(); 1777 BindingPatternUnexpectedToken();
1779 Consume(Token::STRING); 1778 Consume(Token::STRING);
1780 return impl()->ExpressionFromString(beg_pos); 1779 return impl()->ExpressionFromString(beg_pos);
1781 } 1780 }
1782 1781
1783 case Token::ASSIGN_DIV: 1782 case Token::ASSIGN_DIV:
1784 case Token::DIV: 1783 case Token::DIV:
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
2385 if (name_token == Token::LET) { 2384 if (name_token == Token::LET) {
2386 classifier()->RecordLetPatternError( 2385 classifier()->RecordLetPatternError(
2387 scanner()->location(), MessageTemplate::kLetInLexicalBinding); 2386 scanner()->location(), MessageTemplate::kLetInLexicalBinding);
2388 } 2387 }
2389 if (name_token == Token::AWAIT) { 2388 if (name_token == Token::AWAIT) {
2390 DCHECK(!is_async_function()); 2389 DCHECK(!is_async_function());
2391 classifier()->RecordAsyncArrowFormalParametersError( 2390 classifier()->RecordAsyncArrowFormalParametersError(
2392 Scanner::Location(next_beg_pos, next_end_pos), 2391 Scanner::Location(next_beg_pos, next_end_pos),
2393 MessageTemplate::kAwaitBindingIdentifier); 2392 MessageTemplate::kAwaitBindingIdentifier);
2394 } 2393 }
2395 ExpressionT lhs = 2394 ExpressionT lhs = impl()->ExpressionFromIdentifier(name, next_beg_pos);
2396 impl()->ExpressionFromIdentifier(name, next_beg_pos, next_end_pos);
2397 CheckDestructuringElement(lhs, next_beg_pos, next_end_pos); 2395 CheckDestructuringElement(lhs, next_beg_pos, next_end_pos);
2398 2396
2399 ExpressionT value; 2397 ExpressionT value;
2400 if (peek() == Token::ASSIGN) { 2398 if (peek() == Token::ASSIGN) {
2401 Consume(Token::ASSIGN); 2399 Consume(Token::ASSIGN);
2402 ExpressionClassifier rhs_classifier(this); 2400 ExpressionClassifier rhs_classifier(this);
2403 ExpressionT rhs = ParseAssignmentExpression( 2401 ExpressionT rhs = ParseAssignmentExpression(
2404 true, CHECK_OK_CUSTOM(EmptyObjectLiteralProperty)); 2402 true, CHECK_OK_CUSTOM(EmptyObjectLiteralProperty));
2405 impl()->RewriteNonPattern(CHECK_OK_CUSTOM(EmptyObjectLiteralProperty)); 2403 impl()->RewriteNonPattern(CHECK_OK_CUSTOM(EmptyObjectLiteralProperty));
2406 impl()->AccumulateFormalParameterContainmentErrors(); 2404 impl()->AccumulateFormalParameterContainmentErrors();
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
2653 if (IsTrivialExpression()) { 2651 if (IsTrivialExpression()) {
2654 expression = ParsePrimaryExpression(&is_async, CHECK_OK); 2652 expression = ParsePrimaryExpression(&is_async, CHECK_OK);
2655 } else { 2653 } else {
2656 expression = ParseConditionalExpression(accept_IN, CHECK_OK); 2654 expression = ParseConditionalExpression(accept_IN, CHECK_OK);
2657 } 2655 }
2658 2656
2659 if (is_async && impl()->IsIdentifier(expression) && peek_any_identifier() && 2657 if (is_async && impl()->IsIdentifier(expression) && peek_any_identifier() &&
2660 PeekAhead() == Token::ARROW) { 2658 PeekAhead() == Token::ARROW) {
2661 // async Identifier => AsyncConciseBody 2659 // async Identifier => AsyncConciseBody
2662 IdentifierT name = ParseAndClassifyIdentifier(CHECK_OK); 2660 IdentifierT name = ParseAndClassifyIdentifier(CHECK_OK);
2663 expression = impl()->ExpressionFromIdentifier( 2661 expression =
2664 name, position(), scanner()->location().end_pos, InferName::kNo); 2662 impl()->ExpressionFromIdentifier(name, position(), InferName::kNo);
2665 if (fni_) { 2663 if (fni_) {
2666 // Remove `async` keyword from inferred name stack. 2664 // Remove `async` keyword from inferred name stack.
2667 fni_->RemoveAsyncKeywordFromEnd(); 2665 fni_->RemoveAsyncKeywordFromEnd();
2668 } 2666 }
2669 } 2667 }
2670 2668
2671 if (peek() == Token::ARROW) { 2669 if (peek() == Token::ARROW) {
2672 Scanner::Location arrow_loc = scanner()->peek_location(); 2670 Scanner::Location arrow_loc = scanner()->peek_location();
2673 ValidateArrowFormalParameters(expression, parenthesized_formals, is_async, 2671 ValidateArrowFormalParameters(expression, parenthesized_formals, is_async,
2674 CHECK_OK); 2672 CHECK_OK);
(...skipping 2496 matching lines...) Expand 10 before | Expand all | Expand 10 after
5171 StatementT init = impl()->NullStatement(); 5169 StatementT init = impl()->NullStatement();
5172 if (peek() != Token::SEMICOLON) { 5170 if (peek() != Token::SEMICOLON) {
5173 // An initializer is present. 5171 // An initializer is present.
5174 if (peek() == Token::VAR || peek() == Token::CONST || 5172 if (peek() == Token::VAR || peek() == Token::CONST ||
5175 (peek() == Token::LET && IsNextLetKeyword())) { 5173 (peek() == Token::LET && IsNextLetKeyword())) {
5176 // The initializer contains declarations. 5174 // The initializer contains declarations.
5177 ParseVariableDeclarations(kForStatement, &for_info.parsing_result, 5175 ParseVariableDeclarations(kForStatement, &for_info.parsing_result,
5178 nullptr, CHECK_OK); 5176 nullptr, CHECK_OK);
5179 bound_names_are_lexical = 5177 bound_names_are_lexical =
5180 IsLexicalVariableMode(for_info.parsing_result.descriptor.mode); 5178 IsLexicalVariableMode(for_info.parsing_result.descriptor.mode);
5181 for_info.each_loc = scanner()->location(); 5179 for_info.position = scanner()->location().beg_pos;
5182 5180
5183 if (CheckInOrOf(&for_info.mode)) { 5181 if (CheckInOrOf(&for_info.mode)) {
5184 // Just one declaration followed by in/of. 5182 // Just one declaration followed by in/of.
5185 if (for_info.parsing_result.declarations.length() != 1) { 5183 if (for_info.parsing_result.declarations.length() != 1) {
5186 impl()->ReportMessageAt( 5184 impl()->ReportMessageAt(
5187 for_info.parsing_result.bindings_loc, 5185 for_info.parsing_result.bindings_loc,
5188 MessageTemplate::kForInOfLoopMultiBindings, 5186 MessageTemplate::kForInOfLoopMultiBindings,
5189 ForEachStatement::VisitModeString(for_info.mode)); 5187 ForEachStatement::VisitModeString(for_info.mode));
5190 *ok = false; 5188 *ok = false;
5191 return impl()->NullStatement(); 5189 return impl()->NullStatement();
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
5463 has_seen_constructor_ = true; 5461 has_seen_constructor_ = true;
5464 return; 5462 return;
5465 } 5463 }
5466 } 5464 }
5467 5465
5468 5466
5469 } // namespace internal 5467 } // namespace internal
5470 } // namespace v8 5468 } // namespace v8
5471 5469
5472 #endif // V8_PARSING_PARSER_BASE_H 5470 #endif // V8_PARSING_PARSER_BASE_H
OLDNEW
« no previous file with comments | « src/parsing/parser.cc ('k') | src/parsing/pattern-rewriter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698