--- a/js/src/frontend/BinSource.cpp
+++ b/js/src/frontend/BinSource.cpp
@@ -596,19 +596,40 @@ ASTReader::parseStatement(SimpleTokenRea
}
UniquePtr<ParseNode> result(new_<CaseClause>(test.release(), consequent.release(), 0));
if (!result) {
return false;
}
out = Move(result);
-
+
} else if (name == "ThrowStatement") {
- // FIXME: Implement
+
+ UniquePtr<ParseNode> arg;
+ for (auto field: fields) {
+ if (field == "argument") {
+ if (!this->parseExpression(&sub, arg)) {
+ return false;
+ }
+ } else {
+ return this->raiseError();
+ }
+ }
+
+ if (!arg) {
+ return this->raiseError();
+ }
+
+ UniquePtr<ParseNode> result(new_<UnaryNode>(PNK_THROW, JSOP_THROW, TokenPos(), arg.release()));
+ if (!result) {
+ return this->raiseError();
+ }
+ out = Move(result);
+
} else if (name == "TryStatement") {
// FIXME: Implement
} else if (name == "WhileStatement") {
// FIXME: Implement
} else if (name == "DoWhileStatement") {
// FIXME: Implement
} else if (name == "ForStatement") {
// FIXME: Implement