Bug 1497784 - Drop support for lexical declaration in BinAST for now. r=Yoric
authorTooru Fujisawa <arai_a@mac.com>
Tue, 30 Oct 2018 09:49:41 +0900
changeset 502591 a4fb56d2819e636de6c7ae756028e537efae48d0
parent 502590 598f4654a06cb0bc7e1525e61b7d97acd6ba0d51
child 502592 9b456742a2cc22f56aac2a4d26063307b85135a6
push id10290
push userffxbld-merge
push dateMon, 03 Dec 2018 16:23:23 +0000
treeherdermozilla-beta@700bed2445e6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersYoric
bugs1497784
milestone65.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1497784 - Drop support for lexical declaration in BinAST for now. r=Yoric
js/src/frontend/BinSource-auto.cpp
js/src/frontend/BinSource.yaml
js/src/jsapi-tests/binast/parser/multipart/unit/let_in_fun.binjs
js/src/jsapi-tests/binast/parser/multipart/unit/let_in_fun.js
testing/web-platform/mozilla/tests/binast/large-binjs.js
testing/web-platform/mozilla/tests/binast/large.binjs
testing/web-platform/mozilla/tests/binast/large.js
--- a/js/src/frontend/BinSource-auto.cpp
+++ b/js/src/frontend/BinSource-auto.cpp
@@ -2618,20 +2618,26 @@ BinASTParser<Tok>::parseInterfaceForInOf
 
     BINJS_MOZ_TRY_DECL(kind_, parseVariableDeclarationKind());
 
     BINJS_MOZ_TRY_DECL(binding, parseBinding());
 
     // Restored by `kindGuard`.
     variableDeclarationKind_ = kind_;
     MOZ_TRY(checkBinding(binding->template as<NameNode>().atom()->asPropertyName()));
-    auto pnk =
-        kind_ == VariableDeclarationKind::Let
-            ? ParseNodeKind::Let
-            : ParseNodeKind::Var;
+    ParseNodeKind pnk;
+    switch (kind_) {
+      case VariableDeclarationKind::Var:
+        pnk = ParseNodeKind::Var;
+        break;
+      case VariableDeclarationKind::Let:
+        return raiseError("Let is not supported in this preview release");
+      case VariableDeclarationKind::Const:
+        return raiseError("Const is not supported in this preview release");
+    }
     BINJS_TRY_DECL(result, factory_.newDeclarationList(pnk, tokenizer_->pos(start)));
     factory_.addList(result, binding);
     return result;
 }
 
 template<typename Tok> JS::Result<ParseNode*>
 BinASTParser<Tok>::parseInterfaceForInStatement(const size_t start, const BinKind kind, const BinFields& fields)
 {
@@ -3944,21 +3950,19 @@ BinASTParser<Tok>::parseInterfaceVariabl
     }
 
     ParseNodeKind pnk;
     switch (kind_) {
       case VariableDeclarationKind::Var:
         pnk = ParseNodeKind::Var;
         break;
       case VariableDeclarationKind::Let:
-        pnk = ParseNodeKind::Let;
-        break;
+        return raiseError("Let is not supported in this preview release");
       case VariableDeclarationKind::Const:
-        pnk = ParseNodeKind::Const;
-        break;
+        return raiseError("Const is not supported in this preview release");
     }
     declarators->setKind(pnk);
     auto result = declarators;
     return result;
 }
 
 
 /*
--- a/js/src/frontend/BinSource.yaml
+++ b/js/src/frontend/BinSource.yaml
@@ -839,20 +839,26 @@ ExpressionStatement:
 
 ForInOfBinding:
     init:
         AutoVariableDeclarationKind kindGuard(this);
     build: |
         // Restored by `kindGuard`.
         variableDeclarationKind_ = kind_;
         MOZ_TRY(checkBinding(binding->template as<NameNode>().atom()->asPropertyName()));
-        auto pnk =
-            kind_ == VariableDeclarationKind::Let
-                ? ParseNodeKind::Let
-                : ParseNodeKind::Var;
+        ParseNodeKind pnk;
+        switch (kind_) {
+          case VariableDeclarationKind::Var:
+            pnk = ParseNodeKind::Var;
+            break;
+          case VariableDeclarationKind::Let:
+            return raiseError("Let is not supported in this preview release");
+          case VariableDeclarationKind::Const:
+            return raiseError("Const is not supported in this preview release");
+        }
         BINJS_TRY_DECL(result, factory_.newDeclarationList(pnk, tokenizer_->pos(start)));
         factory_.addList(result, binding);
 
 
 
 ForInStatement:
     init: |
         ParseContext::Statement stmt(parseContext_, StatementKind::ForInLoop);
@@ -1328,21 +1334,19 @@ VariableDeclaration:
         }
 
         ParseNodeKind pnk;
         switch (kind_) {
           case VariableDeclarationKind::Var:
             pnk = ParseNodeKind::Var;
             break;
           case VariableDeclarationKind::Let:
-            pnk = ParseNodeKind::Let;
-            break;
+            return raiseError("Let is not supported in this preview release");
           case VariableDeclarationKind::Const:
-            pnk = ParseNodeKind::Const;
-            break;
+            return raiseError("Const is not supported in this preview release");
         }
         declarators->setKind(pnk);
         auto result = declarators;
 
 VariableDeclarator:
     build: |
         ParseNode* result;
         if (binding->isKind(ParseNodeKind::Name)) {
deleted file mode 100644
index 5b6d505c434d6a64ca5239ca0ce4bdd67085bbb7..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
--- a/js/src/jsapi-tests/binast/parser/multipart/unit/let_in_fun.js
+++ /dev/null
@@ -1,3 +0,0 @@
-function test() {
-    let limit = 1;
-}
--- a/testing/web-platform/mozilla/tests/binast/large-binjs.js
+++ b/testing/web-platform/mozilla/tests/binast/large-binjs.js
@@ -1,12 +1,12 @@
 // Larger JS source to exercise off-thread parsing.
 
 // List of words to bulk up output file.
-const words = [
+var words = [
     "A",
     "a",
     "aa",
     "aal",
     "aalii",
     "aam",
     "Aani",
     "aardvark",
index fb86dc59c4d9f5cb5932624f9ba1d21aeb8ea389..38dc72fac8304fc3a698410f94b40c9e12ee1b97
GIT binary patch
literal 11508
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
Rm#|Jx>>$!itx|9J{|CqI=i~qY
--- a/testing/web-platform/mozilla/tests/binast/large.js
+++ b/testing/web-platform/mozilla/tests/binast/large.js
@@ -1,12 +1,12 @@
 // Larger JS source to exercise off-thread parsing.
 
 // List of words to bulk up output file.
-const words = [
+var words = [
     "A",
     "a",
     "aa",
     "aal",
     "aalii",
     "aam",
     "Aani",
     "aardvark",