--- a/js/src/frontend/BinSource.cpp
+++ b/js/src/frontend/BinSource.cpp
@@ -1099,16 +1099,66 @@ ASTReader::parseBool(SimpleTokenReader*
// FIXME: Can replace with an assert once we have
// implemented headers and header validation.
return this->raiseError();
}
return reader->readBool(result);
}
bool
+ASTReader::parseExpression(SimpleTokenReader* reader, UniquePtr<ParseNode>& out) {
+ if (out) {
+ return this->raiseError();
+ }
+
+ SimpleTokenReader::Fields fields(this->cx);
+ SimpleTokenReader sub(this->cx);
+
+ std::string name;
+ if (!reader->taggedTuple(&name, &fields, &sub)) {
+ return false;
+ }
+
+ if (name == "ThisExpression") {
+ // FIXME: Implement
+ } else if (name == "ArrayExpression") {
+ // FIXME: Implement
+ } else if (name == "ObjectExpression") {
+ // FIXME: Implement
+ } else if (name == "FunctionExpression") {
+ // FIXME: Implement
+ } else if (name == "UnaryExpression") {
+ // FIXME: Implement
+ } else if (name == "UpdateExpression") {
+ // FIXME: Implement
+ } else if (name == "BinaryExpression") {
+ // FIXME: Implement
+ } else if (name == "AssignmentExpression") {
+ // FIXME: Implement
+ } else if (name == "LogicalExpression") {
+ // FIXME: Implement
+ } else if (name == "MemberExpression") {
+ // FIXME: Implement
+ } else if (name == "ConditionalExpression") {
+ // FIXME: Implement
+ } else if (name == "CallExpression") {
+ // FIXME: Implement
+ } else if (name == "NewExpression") {
+ // FIXME: Implement
+ } else if (name == "SequenceExpression") {
+ // FIXME: Implement
+ } else {
+ return this->raiseError();
+ }
+
+ return false;
+}
+
+
+bool
ASTReader::raiseError() {
// FIXME: Implement actual error conditions.
return false;
}
void
TraceBinParser(JSTracer* trc, AutoGCRooter* parser)
{