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, |