WIP: parsePattern draft
authorDavid Teller <dteller@mozilla.com>
Sun, 06 Aug 2017 16:36:45 +0200
changeset 641391 0bd1e89ab3b2d273f0329b9fd5848b0b7dcff120
parent 641390 54a1427bdc26e06bb697c84ae357a106c17b1c7c
child 641392 546310aeaaed167db4503bc705eb46dcbc9bc5fb
push id72504
push userdteller@mozilla.com
push dateSun, 06 Aug 2017 22:28:40 +0000
milestone57.0a1
WIP: parsePattern MozReview-Commit-ID: KfHxNIcrbuW
js/src/frontend/BinSource.cpp
--- a/js/src/frontend/BinSource.cpp
+++ b/js/src/frontend/BinSource.cpp
@@ -2390,16 +2390,33 @@ ASTReader::parsePatternList(SimpleTokenR
         result->append(pattern.release());
     }
 
     out = Move(result);
     return true;
 }
 
 bool
+ASTReader::parsePattern(SimpleTokenReader* reader, UniquePtr<ParseNode>& out) {
+    if (out) {
+        return this->raiseError();
+    }
+
+    BinKind kind;
+    SimpleTokenReader::BinFields fields(this->cx);
+    SimpleTokenReader sub(this->cx);
+
+    if (!reader->taggedTuple(kind, fields, &sub)) {
+        return false;
+    }
+
+    return this->parsePatternAux(&sub, kind, fields, out);
+}
+
+bool
 ASTReader::parsePatternAux(SimpleTokenReader* reader, const BinKind kind, const SimpleTokenReader::BinFields& fields, UniquePtr<ParseNode>& out) {
     if (out) {
         return this->raiseError();
     }
 
     switch (kind) {
         case BinKind::identifier: {
             RootedAtom id(cx);