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

Unified Diff: src/parsing/preparser.h

Issue 1817093002: Add parsing for object types (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@types-1810943002-tuple
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 side-by-side diff with in-line comments
Download patch
Index: src/parsing/preparser.h
diff --git a/src/parsing/preparser.h b/src/parsing/preparser.h
index bc7b735918a6529775b1cb169b08c597b0edea51..d9e1de9a2d8ccfe2d4b1483ec8fe23be9c88810d 100644
--- a/src/parsing/preparser.h
+++ b/src/parsing/preparser.h
@@ -521,6 +521,34 @@ class PreParserType {
typedef PreParserList<PreParserType> PreParserTypeList;
+
+class PreParserTypeMember {
+ public:
+ static PreParserTypeMember Default(bool valid_type, bool valid_binder) {
+ return PreParserTypeMember(valid_type, valid_binder);
+ }
+ static PreParserTypeMember IndexSignature() {
+ return PreParserTypeMember(true, false);
+ }
+ bool IsValidType() const { return valid_type_; }
+ bool IsValidBindingIdentifierOrPattern() const { return valid_binder_; }
+
+ // Dummy implementation for making type_member->somefunc() work in both
+ // Parser and PreParser.
+ PreParserTypeMember* operator->() { return this; }
+
+ private:
+ PreParserTypeMember(bool valid_type, bool valid_binder)
+ : valid_type_(valid_type), valid_binder_(valid_binder) {}
+
+ bool valid_type_;
+ bool valid_binder_;
+};
+
+
+typedef PreParserList<PreParserTypeMember> PreParserTypeMembers;
+
+
V8_INLINE PreParserFormalParameter
PreParserFormalParameter::Unnamed(const PreParserType& type) {
return PreParserFormalParameter(type.IsValidType(),
@@ -701,10 +729,16 @@ class PreParserFactory {
return typesystem::PreParserType::Default(valid_type, valid_binder);
}
+ typesystem::PreParserType NewObjectType(
+ const typesystem::PreParserTypeMembers& members, bool valid_type,
+ bool valid_binder, int pos) {
+ return typesystem::PreParserType::Default(valid_type, valid_binder);
+ }
+
typesystem::PreParserType NewFunctionType(
const typesystem::PreParserTypeParameters& type_parameters,
const typesystem::PreParserFormalParameters& parameters,
- typesystem::PreParserType result_type, int pos,
+ const typesystem::PreParserType& result_type, int pos,
bool constructor = false) {
return typesystem::PreParserType::Default();
}
@@ -744,11 +778,27 @@ class PreParserFactory {
}
typesystem::PreParserTypeParameter NewTypeParameter(
- PreParserIdentifier name, const typesystem::PreParserType& extends,
+ const PreParserIdentifier& name, const typesystem::PreParserType& extends,
int pos) {
return typesystem::PreParserTypeParameter::Default();
}
+ typesystem::PreParserTypeMember NewTypeMember(
+ const PreParserExpression& property, bool optional,
+ const typesystem::PreParserTypeParameters& type_parameters,
+ const typesystem::PreParserFormalParameters& parameters,
+ const typesystem::PreParserType& result_type, bool valid_type,
+ bool valid_binder, int pos, bool constructor = false) {
+ return typesystem::PreParserTypeMember::Default(valid_type, valid_binder);
+ }
+
+ typesystem::PreParserTypeMember NewTypeMember(
+ const PreParserExpression& property,
+ typesystem::TypeMember::IndexType index_type,
+ const typesystem::PreParserType& result_type, int pos) {
+ return typesystem::PreParserTypeMember::IndexSignature();
+ }
+
// Return the object itself as AstVisitor and implement the needed
// dummy method right in this class.
PreParserFactory* visitor() { return this; }
@@ -808,6 +858,8 @@ class PreParserTraits {
typedef typesystem::PreParserTypeParameters TypeParameters;
typedef typesystem::PreParserFormalParameter FormalParameter;
typedef typesystem::PreParserFormalParameters FormalParameters;
+ typedef typesystem::PreParserTypeMember TypeMember;
+ typedef typesystem::PreParserTypeMembers TypeMembers;
};
// For constructing objects returned by the traversing functions.
@@ -985,6 +1037,9 @@ class PreParserTraits {
static typesystem::PreParserFormalParameters EmptyFormalParameters() {
return typesystem::PreParserFormalParameters();
}
+ static typesystem::PreParserFormalParameters NullFormalParameters() {
+ return typesystem::PreParserFormalParameters();
+ }
static PreParserIdentifierList NullIdentifierList() {
return PreParserIdentifierList();
}
@@ -994,6 +1049,12 @@ class PreParserTraits {
static typesystem::PreParserType HoleTypeElement() {
return typesystem::PreParserType::Default(false);
}
+ static typesystem::PreParserTypeMembers EmptyTypeMembers() {
+ return typesystem::PreParserTypeMembers();
+ }
+ static typesystem::PreParserTypeMember EmptyTypeMember() {
+ return typesystem::PreParserTypeMember::Default(false, false);
+ }
// Odd-ball literal creators.
static PreParserExpression GetLiteralTheHole(int position,

Powered by Google App Engine
This is Rietveld 408576698