--- a/js/src/frontend/BinSource.cpp
+++ b/js/src/frontend/BinSource.cpp
@@ -2356,16 +2356,48 @@ ASTReader::parseCatchClause(SimpleTokenR
}
catchList->append(catchClause.release());
out = Move(catchList);
return true;
}
+bool
+ASTReader::parsePatternList(SimpleTokenReader* reader, UniquePtr<ParseNode>& out) {
+ if (out) {
+ return this->raiseError();
+ }
+
+ UniquePtr<ParseNode> result(this->new_<ListNode>(PNK_LIMIT /* callers must replace */,
+ TokenPos()));
+
+ uint32_t length;
+ SimpleTokenReader sub(this->cx);
+
+ if (!reader->readList(&length, &sub)) {
+ return false;
+ }
+
+ for (uint32_t i = 0; i < length; ++i) {
+ UniquePtr<ParseNode> pattern;
+ if (!this->parsePattern(&sub, pattern)) {
+ return false;
+ }
+
+ if (!pattern) {
+ return this->raiseError();
+ }
+
+ result->append(pattern.release());
+ }
+
+ out = Move(result);
+ return true;
+}
bool
ASTReader::readString(SimpleTokenReader* reader, MutableHandle<PropertyName*> out) {
if (out) {
return this->raiseError();
}
RootedAtom atom(cx);