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

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

Issue 1841543003: [esnext] implement frontend changes for async/await proposal (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Uncomment that test Created 4 years, 7 months 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/expression-classifier.h ('k') | src/parsing/parser.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_H_ 5 #ifndef V8_PARSING_PARSER_H_
6 #define V8_PARSING_PARSER_H_ 6 #define V8_PARSING_PARSER_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/ast/ast.h" 9 #include "src/ast/ast.h"
10 #include "src/ast/scopes.h" 10 #include "src/ast/scopes.h"
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 typedef AstNodeFactory Factory; 348 typedef AstNodeFactory Factory;
349 }; 349 };
350 350
351 explicit ParserTraits(Parser* parser) : parser_(parser) {} 351 explicit ParserTraits(Parser* parser) : parser_(parser) {}
352 352
353 // Helper functions for recursive descent. 353 // Helper functions for recursive descent.
354 bool IsEval(const AstRawString* identifier) const; 354 bool IsEval(const AstRawString* identifier) const;
355 bool IsArguments(const AstRawString* identifier) const; 355 bool IsArguments(const AstRawString* identifier) const;
356 bool IsEvalOrArguments(const AstRawString* identifier) const; 356 bool IsEvalOrArguments(const AstRawString* identifier) const;
357 bool IsUndefined(const AstRawString* identifier) const; 357 bool IsUndefined(const AstRawString* identifier) const;
358 bool IsAwait(const AstRawString* identifier) const;
358 V8_INLINE bool IsFutureStrictReserved(const AstRawString* identifier) const; 359 V8_INLINE bool IsFutureStrictReserved(const AstRawString* identifier) const;
359 360
360 // Returns true if the expression is of type "this.foo". 361 // Returns true if the expression is of type "this.foo".
361 static bool IsThisProperty(Expression* expression); 362 static bool IsThisProperty(Expression* expression);
362 363
363 static bool IsIdentifier(Expression* expression); 364 static bool IsIdentifier(Expression* expression);
364 365
365 bool IsPrototype(const AstRawString* identifier) const; 366 bool IsPrototype(const AstRawString* identifier) const;
366 367
367 bool IsConstructor(const AstRawString* identifier) const; 368 bool IsConstructor(const AstRawString* identifier) const;
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 Scope* scope, const ParserFormalParameters::Parameter& parameter, 548 Scope* scope, const ParserFormalParameters::Parameter& parameter,
548 Type::ExpressionClassifier* classifier); 549 Type::ExpressionClassifier* classifier);
549 void ParseArrowFunctionFormalParameters(ParserFormalParameters* parameters, 550 void ParseArrowFunctionFormalParameters(ParserFormalParameters* parameters,
550 Expression* params, int end_pos, 551 Expression* params, int end_pos,
551 bool* ok); 552 bool* ok);
552 void ParseArrowFunctionFormalParameterList( 553 void ParseArrowFunctionFormalParameterList(
553 ParserFormalParameters* parameters, Expression* params, 554 ParserFormalParameters* parameters, Expression* params,
554 const Scanner::Location& params_loc, 555 const Scanner::Location& params_loc,
555 Scanner::Location* duplicate_loc, bool* ok); 556 Scanner::Location* duplicate_loc, bool* ok);
556 557
558 V8_INLINE Expression* ParseAsyncFunctionExpression(bool* ok);
559
557 V8_INLINE DoExpression* ParseDoExpression(bool* ok); 560 V8_INLINE DoExpression* ParseDoExpression(bool* ok);
558 561
559 void ReindexLiterals(const ParserFormalParameters& parameters); 562 void ReindexLiterals(const ParserFormalParameters& parameters);
560 563
561 // Temporary glue; these functions will move to ParserBase. 564 // Temporary glue; these functions will move to ParserBase.
562 Expression* ParseV8Intrinsic(bool* ok); 565 Expression* ParseV8Intrinsic(bool* ok);
563 FunctionLiteral* ParseFunctionLiteral( 566 FunctionLiteral* ParseFunctionLiteral(
564 const AstRawString* name, Scanner::Location function_name_location, 567 const AstRawString* name, Scanner::Location function_name_location,
565 FunctionNameValidity function_name_validity, FunctionKind kind, 568 FunctionNameValidity function_name_validity, FunctionKind kind,
566 int function_token_position, FunctionLiteral::FunctionType type, 569 int function_token_position, FunctionLiteral::FunctionType type,
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 V8_INLINE ZoneList<v8::internal::Expression*>* PrepareSpreadArguments( 633 V8_INLINE ZoneList<v8::internal::Expression*>* PrepareSpreadArguments(
631 ZoneList<v8::internal::Expression*>* list); 634 ZoneList<v8::internal::Expression*>* list);
632 V8_INLINE void MaterializeUnspreadArgumentsLiterals(int count) {} 635 V8_INLINE void MaterializeUnspreadArgumentsLiterals(int count) {}
633 V8_INLINE Expression* SpreadCall(Expression* function, 636 V8_INLINE Expression* SpreadCall(Expression* function,
634 ZoneList<v8::internal::Expression*>* args, 637 ZoneList<v8::internal::Expression*>* args,
635 int pos); 638 int pos);
636 V8_INLINE Expression* SpreadCallNew(Expression* function, 639 V8_INLINE Expression* SpreadCallNew(Expression* function,
637 ZoneList<v8::internal::Expression*>* args, 640 ZoneList<v8::internal::Expression*>* args,
638 int pos); 641 int pos);
639 642
643 Expression* ExpressionListToExpression(ZoneList<Expression*>* args);
644
640 // Rewrite all DestructuringAssignments in the current FunctionState. 645 // Rewrite all DestructuringAssignments in the current FunctionState.
641 V8_INLINE void RewriteDestructuringAssignments(); 646 V8_INLINE void RewriteDestructuringAssignments();
642 647
643 V8_INLINE Expression* RewriteExponentiation(Expression* left, 648 V8_INLINE Expression* RewriteExponentiation(Expression* left,
644 Expression* right, int pos); 649 Expression* right, int pos);
645 V8_INLINE Expression* RewriteAssignExponentiation(Expression* left, 650 V8_INLINE Expression* RewriteAssignExponentiation(Expression* left,
646 Expression* right, int pos); 651 Expression* right, int pos);
647 652
653 V8_INLINE Expression* RewriteAwaitExpression(Expression* value, int pos);
654
648 V8_INLINE void QueueDestructuringAssignmentForRewriting( 655 V8_INLINE void QueueDestructuringAssignmentForRewriting(
649 Expression* assignment); 656 Expression* assignment);
650 V8_INLINE void QueueNonPatternForRewriting(Expression* expr); 657 V8_INLINE void QueueNonPatternForRewriting(Expression* expr);
651 658
652 void SetFunctionNameFromPropertyName(ObjectLiteralProperty* property, 659 void SetFunctionNameFromPropertyName(ObjectLiteralProperty* property,
653 const AstRawString* name); 660 const AstRawString* name);
654 661
655 void SetFunctionNameFromIdentifierRef(Expression* value, 662 void SetFunctionNameFromIdentifierRef(Expression* value,
656 Expression* identifier); 663 Expression* identifier);
657 664
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 AllowLabelledFunctionStatement allow_function, 772 AllowLabelledFunctionStatement allow_function,
766 bool* ok); 773 bool* ok);
767 Statement* ParseSubStatement(ZoneList<const AstRawString*>* labels, 774 Statement* ParseSubStatement(ZoneList<const AstRawString*>* labels,
768 AllowLabelledFunctionStatement allow_function, 775 AllowLabelledFunctionStatement allow_function,
769 bool* ok); 776 bool* ok);
770 Statement* ParseStatementAsUnlabelled(ZoneList<const AstRawString*>* labels, 777 Statement* ParseStatementAsUnlabelled(ZoneList<const AstRawString*>* labels,
771 bool* ok); 778 bool* ok);
772 Statement* ParseFunctionDeclaration(bool* ok); 779 Statement* ParseFunctionDeclaration(bool* ok);
773 Statement* ParseHoistableDeclaration(ZoneList<const AstRawString*>* names, 780 Statement* ParseHoistableDeclaration(ZoneList<const AstRawString*>* names,
774 bool* ok); 781 bool* ok);
775 Statement* ParseHoistableDeclaration(int pos, bool is_generator, 782 Statement* ParseHoistableDeclaration(int pos, ParseFunctionFlags flags,
783 ZoneList<const AstRawString*>* names,
784 bool* ok);
785 Statement* ParseAsyncFunctionDeclaration(ZoneList<const AstRawString*>* names,
786 bool* ok);
787 Expression* ParseAsyncFunctionExpression(bool* ok);
788 Statement* ParseFunctionDeclaration(int pos, bool is_generator,
776 ZoneList<const AstRawString*>* names, 789 ZoneList<const AstRawString*>* names,
777 bool* ok); 790 bool* ok);
778 Statement* ParseClassDeclaration(ZoneList<const AstRawString*>* names, 791 Statement* ParseClassDeclaration(ZoneList<const AstRawString*>* names,
779 bool* ok); 792 bool* ok);
780 Statement* ParseNativeDeclaration(bool* ok); 793 Statement* ParseNativeDeclaration(bool* ok);
781 Block* ParseBlock(ZoneList<const AstRawString*>* labels, bool* ok); 794 Block* ParseBlock(ZoneList<const AstRawString*>* labels, bool* ok);
782 Block* ParseBlock(ZoneList<const AstRawString*>* labels, 795 Block* ParseBlock(ZoneList<const AstRawString*>* labels,
783 bool finalize_block_scope, bool* ok); 796 bool finalize_block_scope, bool* ok);
784 Block* ParseVariableStatement(VariableDeclarationContext var_context, 797 Block* ParseVariableStatement(VariableDeclarationContext var_context,
785 ZoneList<const AstRawString*>* names, 798 ZoneList<const AstRawString*>* names,
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
1248 if (!parameters.is_simple) { 1261 if (!parameters.is_simple) {
1249 auto* init_block = 1262 auto* init_block =
1250 parser_->BuildParameterInitializationBlock(parameters, ok); 1263 parser_->BuildParameterInitializationBlock(parameters, ok);
1251 if (!*ok) return; 1264 if (!*ok) return;
1252 if (init_block != nullptr) { 1265 if (init_block != nullptr) {
1253 body->Add(init_block, parser_->zone()); 1266 body->Add(init_block, parser_->zone());
1254 } 1267 }
1255 } 1268 }
1256 } 1269 }
1257 1270
1271 Expression* ParserTraits::ParseAsyncFunctionExpression(bool* ok) {
1272 return parser_->ParseAsyncFunctionExpression(ok);
1273 }
1258 1274
1259 DoExpression* ParserTraits::ParseDoExpression(bool* ok) { 1275 DoExpression* ParserTraits::ParseDoExpression(bool* ok) {
1260 return parser_->ParseDoExpression(ok); 1276 return parser_->ParseDoExpression(ok);
1261 } 1277 }
1262 1278
1263 1279
1264 } // namespace internal 1280 } // namespace internal
1265 } // namespace v8 1281 } // namespace v8
1266 1282
1267 #endif // V8_PARSING_PARSER_H_ 1283 #endif // V8_PARSING_PARSER_H_
OLDNEW
« no previous file with comments | « src/parsing/expression-classifier.h ('k') | src/parsing/parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698