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

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

Issue 1801633003: Add parsing for type queries (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@types
Patch Set: Created 4 years, 9 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_PREPARSER_H 5 #ifndef V8_PARSING_PREPARSER_H
6 #define V8_PARSING_PREPARSER_H 6 #define V8_PARSING_PREPARSER_H
7 7
8 #include "src/ast/scopes.h" 8 #include "src/ast/scopes.h"
9 #include "src/bailout-reason.h" 9 #include "src/bailout-reason.h"
10 #include "src/hashmap.h" 10 #include "src/hashmap.h"
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 // These functions make list->Add(some_expression) work (and do nothing). 334 // These functions make list->Add(some_expression) work (and do nothing).
335 explicit PreParserList(int length = 0) : length_(length) {} 335 explicit PreParserList(int length = 0) : length_(length) {}
336 PreParserList* operator->() { return this; } 336 PreParserList* operator->() { return this; }
337 void Add(T, void*) { ++length_; } 337 void Add(T, void*) { ++length_; }
338 int length() const { return length_; } 338 int length() const { return length_; }
339 private: 339 private:
340 int length_; 340 int length_;
341 }; 341 };
342 342
343 343
344 typedef PreParserList<PreParserIdentifier> PreParserIdentifierList;
344 typedef PreParserList<PreParserExpression> PreParserExpressionList; 345 typedef PreParserList<PreParserExpression> PreParserExpressionList;
345 346
346 347
347 class PreParserStatement { 348 class PreParserStatement {
348 public: 349 public:
349 static PreParserStatement Default() { 350 static PreParserStatement Default() {
350 return PreParserStatement(kUnknownStatement); 351 return PreParserStatement(kUnknownStatement);
351 } 352 }
352 353
353 static PreParserStatement Jump() { 354 static PreParserStatement Jump() {
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 const PreParserIdentifier& string, int pos) { 710 const PreParserIdentifier& string, int pos) {
710 return typesystem::PreParserType::StringLiteral(); 711 return typesystem::PreParserType::StringLiteral();
711 } 712 }
712 713
713 typesystem::PreParserType NewTypeReference( 714 typesystem::PreParserType NewTypeReference(
714 const PreParserIdentifier& name, 715 const PreParserIdentifier& name,
715 const typesystem::PreParserTypeArguments& type_arguments, int pos) { 716 const typesystem::PreParserTypeArguments& type_arguments, int pos) {
716 return typesystem::PreParserType::Reference(type_arguments.length() == 0); 717 return typesystem::PreParserType::Reference(type_arguments.length() == 0);
717 } 718 }
718 719
720 typesystem::PreParserType NewQueryType(
721 const PreParserIdentifier& name,
722 const PreParserIdentifierList& property_names, int pos) {
723 return typesystem::PreParserType::Default();
724 }
725
719 typesystem::PreParserFormalParameter NewFormalParameter( 726 typesystem::PreParserFormalParameter NewFormalParameter(
720 const PreParserIdentifier& name, bool optional, bool spread, 727 const PreParserIdentifier& name, bool optional, bool spread,
721 const typesystem::PreParserType& type, int pos) { 728 const typesystem::PreParserType& type, int pos) {
722 return typesystem::PreParserFormalParameter::Named(); 729 return typesystem::PreParserFormalParameter::Named();
723 } 730 }
724 731
725 typesystem::PreParserFormalParameter NewFormalParameter( 732 typesystem::PreParserFormalParameter NewFormalParameter(
726 const typesystem::PreParserType& type, int pos) { 733 const typesystem::PreParserType& type, int pos) {
727 return typesystem::PreParserFormalParameter::Unnamed(type); 734 return typesystem::PreParserFormalParameter::Unnamed(type);
728 } 735 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 // PreParser doesn't need to store generator variables. 778 // PreParser doesn't need to store generator variables.
772 typedef void GeneratorVariable; 779 typedef void GeneratorVariable;
773 780
774 typedef int AstProperties; 781 typedef int AstProperties;
775 782
776 typedef v8::internal::ExpressionClassifier<PreParserTraits> 783 typedef v8::internal::ExpressionClassifier<PreParserTraits>
777 ExpressionClassifier; 784 ExpressionClassifier;
778 785
779 // Return types for traversing functions. 786 // Return types for traversing functions.
780 typedef PreParserIdentifier Identifier; 787 typedef PreParserIdentifier Identifier;
788 typedef PreParserIdentifierList IdentifierList;
781 typedef PreParserExpression Expression; 789 typedef PreParserExpression Expression;
782 typedef PreParserExpression YieldExpression; 790 typedef PreParserExpression YieldExpression;
783 typedef PreParserExpression FunctionLiteral; 791 typedef PreParserExpression FunctionLiteral;
784 typedef PreParserExpression ClassLiteral; 792 typedef PreParserExpression ClassLiteral;
785 typedef PreParserExpression ObjectLiteralProperty; 793 typedef PreParserExpression ObjectLiteralProperty;
786 typedef PreParserExpression Literal; 794 typedef PreParserExpression Literal;
787 typedef PreParserExpressionList ExpressionList; 795 typedef PreParserExpressionList ExpressionList;
788 typedef PreParserExpressionList PropertyList; 796 typedef PreParserExpressionList PropertyList;
789 typedef PreParserIdentifier FormalParameter; 797 typedef PreParserIdentifier FormalParameter;
790 typedef PreParserFormalParameters FormalParameters; 798 typedef PreParserFormalParameters FormalParameters;
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
967 } 975 }
968 static typesystem::PreParserTypeArguments EmptyTypeArguments() { 976 static typesystem::PreParserTypeArguments EmptyTypeArguments() {
969 return typesystem::PreParserTypeArguments(); 977 return typesystem::PreParserTypeArguments();
970 } 978 }
971 static typesystem::PreParserTypeParameters EmptyTypeParameters() { 979 static typesystem::PreParserTypeParameters EmptyTypeParameters() {
972 return typesystem::PreParserTypeParameters(); 980 return typesystem::PreParserTypeParameters();
973 } 981 }
974 static typesystem::PreParserFormalParameters EmptyFormalParameters() { 982 static typesystem::PreParserFormalParameters EmptyFormalParameters() {
975 return typesystem::PreParserFormalParameters(); 983 return typesystem::PreParserFormalParameters();
976 } 984 }
985 static PreParserIdentifierList NullIdentifierList() {
986 return PreParserIdentifierList();
987 }
988 static PreParserIdentifierList EmptyIdentifierList() {
989 return PreParserIdentifierList();
990 }
977 991
978 // Odd-ball literal creators. 992 // Odd-ball literal creators.
979 static PreParserExpression GetLiteralTheHole(int position, 993 static PreParserExpression GetLiteralTheHole(int position,
980 PreParserFactory* factory) { 994 PreParserFactory* factory) {
981 return PreParserExpression::Default(); 995 return PreParserExpression::Default();
982 } 996 }
983 997
984 // Producing data during the recursive descent. 998 // Producing data during the recursive descent.
985 PreParserIdentifier GetSymbol(Scanner* scanner); 999 PreParserIdentifier GetSymbol(Scanner* scanner);
986 PreParserIdentifier GetNumberAsSymbol(Scanner* scanner); 1000 PreParserIdentifier GetNumberAsSymbol(Scanner* scanner);
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
1388 const PreParserFormalParameters& parameters, FunctionKind kind, 1402 const PreParserFormalParameters& parameters, FunctionKind kind,
1389 FunctionLiteral::FunctionType function_type, bool* ok) { 1403 FunctionLiteral::FunctionType function_type, bool* ok) {
1390 return pre_parser_->ParseEagerFunctionBody(function_name, pos, parameters, 1404 return pre_parser_->ParseEagerFunctionBody(function_name, pos, parameters,
1391 kind, function_type, ok); 1405 kind, function_type, ok);
1392 } 1406 }
1393 1407
1394 } // namespace internal 1408 } // namespace internal
1395 } // namespace v8 1409 } // namespace v8
1396 1410
1397 #endif // V8_PARSING_PREPARSER_H 1411 #endif // V8_PARSING_PREPARSER_H
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698