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

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: rebase over generator change cl Created 4 years, 8 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
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 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 Type::ExpressionClassifier* classifier); 543 Type::ExpressionClassifier* classifier);
543 void ParseArrowFunctionFormalParameters(ParserFormalParameters* parameters, 544 void ParseArrowFunctionFormalParameters(ParserFormalParameters* parameters,
544 Expression* params, 545 Expression* params,
545 const Scanner::Location& params_loc, 546 const Scanner::Location& params_loc,
546 bool* ok); 547 bool* ok);
547 void ParseArrowFunctionFormalParameterList( 548 void ParseArrowFunctionFormalParameterList(
548 ParserFormalParameters* parameters, Expression* params, 549 ParserFormalParameters* parameters, Expression* params,
549 const Scanner::Location& params_loc, 550 const Scanner::Location& params_loc,
550 Scanner::Location* duplicate_loc, bool* ok); 551 Scanner::Location* duplicate_loc, bool* ok);
551 552
553 V8_INLINE Expression* ParseAsyncFunctionExpression(bool* ok);
554
552 V8_INLINE DoExpression* ParseDoExpression(bool* ok); 555 V8_INLINE DoExpression* ParseDoExpression(bool* ok);
553 556
554 void ReindexLiterals(const ParserFormalParameters& parameters); 557 void ReindexLiterals(const ParserFormalParameters& parameters);
555 558
556 // Temporary glue; these functions will move to ParserBase. 559 // Temporary glue; these functions will move to ParserBase.
557 Expression* ParseV8Intrinsic(bool* ok); 560 Expression* ParseV8Intrinsic(bool* ok);
558 FunctionLiteral* ParseFunctionLiteral( 561 FunctionLiteral* ParseFunctionLiteral(
559 const AstRawString* name, Scanner::Location function_name_location, 562 const AstRawString* name, Scanner::Location function_name_location,
560 FunctionNameValidity function_name_validity, FunctionKind kind, 563 FunctionNameValidity function_name_validity, FunctionKind kind,
561 int function_token_position, FunctionLiteral::FunctionType type, 564 int function_token_position, FunctionLiteral::FunctionType type,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 V8_INLINE ZoneList<v8::internal::Expression*>* PrepareSpreadArguments( 624 V8_INLINE ZoneList<v8::internal::Expression*>* PrepareSpreadArguments(
622 ZoneList<v8::internal::Expression*>* list); 625 ZoneList<v8::internal::Expression*>* list);
623 V8_INLINE void MaterializeUnspreadArgumentsLiterals(int count) {} 626 V8_INLINE void MaterializeUnspreadArgumentsLiterals(int count) {}
624 V8_INLINE Expression* SpreadCall(Expression* function, 627 V8_INLINE Expression* SpreadCall(Expression* function,
625 ZoneList<v8::internal::Expression*>* args, 628 ZoneList<v8::internal::Expression*>* args,
626 int pos); 629 int pos);
627 V8_INLINE Expression* SpreadCallNew(Expression* function, 630 V8_INLINE Expression* SpreadCallNew(Expression* function,
628 ZoneList<v8::internal::Expression*>* args, 631 ZoneList<v8::internal::Expression*>* args,
629 int pos); 632 int pos);
630 633
634 Expression* ExpressionListToExpression(ZoneList<Expression*>* args);
635
631 // Rewrite all DestructuringAssignments in the current FunctionState. 636 // Rewrite all DestructuringAssignments in the current FunctionState.
632 V8_INLINE void RewriteDestructuringAssignments(); 637 V8_INLINE void RewriteDestructuringAssignments();
633 638
634 V8_INLINE Expression* RewriteExponentiation(Expression* left, 639 V8_INLINE Expression* RewriteExponentiation(Expression* left,
635 Expression* right, int pos); 640 Expression* right, int pos);
636 V8_INLINE Expression* RewriteAssignExponentiation(Expression* left, 641 V8_INLINE Expression* RewriteAssignExponentiation(Expression* left,
637 Expression* right, int pos); 642 Expression* right, int pos);
638 643
644 V8_INLINE Expression* RewriteAwaitExpression(Expression* value, int pos);
645
639 V8_INLINE void QueueDestructuringAssignmentForRewriting( 646 V8_INLINE void QueueDestructuringAssignmentForRewriting(
640 Expression* assignment); 647 Expression* assignment);
641 V8_INLINE void QueueNonPatternForRewriting(Expression* expr); 648 V8_INLINE void QueueNonPatternForRewriting(Expression* expr);
642 649
643 void SetFunctionNameFromPropertyName(ObjectLiteralProperty* property, 650 void SetFunctionNameFromPropertyName(ObjectLiteralProperty* property,
644 const AstRawString* name); 651 const AstRawString* name);
645 652
646 void SetFunctionNameFromIdentifierRef(Expression* value, 653 void SetFunctionNameFromIdentifierRef(Expression* value,
647 Expression* identifier); 654 Expression* identifier);
648 655
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 Statement* ParseStatement(ZoneList<const AstRawString*>* labels, 762 Statement* ParseStatement(ZoneList<const AstRawString*>* labels,
756 AllowLabelledFunctionStatement allow_function, 763 AllowLabelledFunctionStatement allow_function,
757 bool* ok); 764 bool* ok);
758 Statement* ParseSubStatement(ZoneList<const AstRawString*>* labels, 765 Statement* ParseSubStatement(ZoneList<const AstRawString*>* labels,
759 AllowLabelledFunctionStatement allow_function, 766 AllowLabelledFunctionStatement allow_function,
760 bool* ok); 767 bool* ok);
761 Statement* ParseStatementAsUnlabelled(ZoneList<const AstRawString*>* labels, 768 Statement* ParseStatementAsUnlabelled(ZoneList<const AstRawString*>* labels,
762 bool* ok); 769 bool* ok);
763 Statement* ParseFunctionDeclaration(ZoneList<const AstRawString*>* names, 770 Statement* ParseFunctionDeclaration(ZoneList<const AstRawString*>* names,
764 bool* ok); 771 bool* ok);
772 Statement* ParseAsyncFunctionDeclaration(ZoneList<const AstRawString*>* names,
773 bool* ok);
774 Expression* ParseAsyncFunctionExpression(bool* ok);
775 Statement* ParseFunctionDeclarationInternal(
776 int pos, ParseFunctionFlags flags, ZoneList<const AstRawString*>* names,
777 bool* ok);
765 Statement* ParseFunctionDeclaration(int pos, bool is_generator, 778 Statement* ParseFunctionDeclaration(int pos, bool is_generator,
766 ZoneList<const AstRawString*>* names, 779 ZoneList<const AstRawString*>* names,
767 bool* ok); 780 bool* ok);
768 Statement* ParseClassDeclaration(ZoneList<const AstRawString*>* names, 781 Statement* ParseClassDeclaration(ZoneList<const AstRawString*>* names,
769 bool* ok); 782 bool* ok);
770 Statement* ParseNativeDeclaration(bool* ok); 783 Statement* ParseNativeDeclaration(bool* ok);
771 Block* ParseBlock(ZoneList<const AstRawString*>* labels, bool* ok); 784 Block* ParseBlock(ZoneList<const AstRawString*>* labels, bool* ok);
772 Block* ParseBlock(ZoneList<const AstRawString*>* labels, 785 Block* ParseBlock(ZoneList<const AstRawString*>* labels,
773 bool finalize_block_scope, bool* ok); 786 bool finalize_block_scope, bool* ok);
774 Block* ParseVariableStatement(VariableDeclarationContext var_context, 787 Block* ParseVariableStatement(VariableDeclarationContext var_context,
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
1237 if (!parameters.is_simple) { 1250 if (!parameters.is_simple) {
1238 auto* init_block = 1251 auto* init_block =
1239 parser_->BuildParameterInitializationBlock(parameters, ok); 1252 parser_->BuildParameterInitializationBlock(parameters, ok);
1240 if (!*ok) return; 1253 if (!*ok) return;
1241 if (init_block != nullptr) { 1254 if (init_block != nullptr) {
1242 body->Add(init_block, parser_->zone()); 1255 body->Add(init_block, parser_->zone());
1243 } 1256 }
1244 } 1257 }
1245 } 1258 }
1246 1259
1260 Expression* ParserTraits::ParseAsyncFunctionExpression(bool* ok) {
1261 return parser_->ParseAsyncFunctionExpression(ok);
1262 }
1247 1263
1248 DoExpression* ParserTraits::ParseDoExpression(bool* ok) { 1264 DoExpression* ParserTraits::ParseDoExpression(bool* ok) {
1249 return parser_->ParseDoExpression(ok); 1265 return parser_->ParseDoExpression(ok);
1250 } 1266 }
1251 1267
1252 1268
1253 } // namespace internal 1269 } // namespace internal
1254 } // namespace v8 1270 } // namespace v8
1255 1271
1256 #endif // V8_PARSING_PARSER_H_ 1272 #endif // V8_PARSING_PARSER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698