Repository: jshint/jshint
Pull request #3486 (2020-06-20 23:38:28)

Version 2.13.0
This is a tracking branch for the next minor release of JSHint. If you'd like
to implement a new feature, this is the place to submit it!

ES2020 features:

- [x] [Dynamic import](https://github.com/tc39/proposal-dynamic-import)
- [x] [`import.meta`](https://github.com/tc39/proposal-import-meta)
- [x] [BigInt](https://github.com/tc39/proposal-bigint)
- [x] [`globalThis`](https://github.com/tc39/proposal-global)
- [x] [Optional chaining](https://github.com/tc39/proposal-optional-chaining)
- [x] [Nullish coalescing](https://github.com/tc39/proposal-nullish-coalescing)
- [x] [`export * as ns from "mod"`](https://github.com/tc39/ecma262/pull/1174)

coveralls: 
[![Coverage Status](https://coveralls.io/builds/31581373/badge)](https://coveralls.io/builds/31581373)

Coverage decreased (-0.02%) to 99.978% when pulling **274a4624af6f69a0c14a64dd6bcd15033b982700 on v2.12.0** into **1013d51d8ca8cfe4ed3d8b54835c9c181c5ac7b7 on master**.

jugglinmike: I've updated the description with a list of ES2020 features that are relevant for JSHint.
jugglinmike: [We published the project license change using version 2.12.0](https://jshint.com/blog/2020-08-02/release-2-12-0/), so I'm updating this pull request to describe 2.13.0 instead.
jugglinmike: Rebased on top of the `master` branch

Patch:
diff --git a/package.json b/package.json
index 262410ed..e8fb5060 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
   "scripts": {
     "browser-test-server": "node tests/helpers/browser/server",
     "build": "node bin/build",
-    "coverage": "istanbul -- cover ./node_modules/nodeunit/bin/nodeunit tests/unit tests/unit/unstable",
+    "coverage": "istanbul -- cover ./node_modules/nodeunit/bin/nodeunit tests/unit",
     "coverage-report": "npm run coverage && istanbul report html",
     "data": "node scripts/generate-identifier-data",
     "fetch-test262": "git submodule init && git submodule update",
@@ -34,7 +34,7 @@
     "test-cli": "nodeunit tests/cli.js",
     "test-node": "npm run test-unit && npm run test-cli && npm run test-regression",
     "test-regression": "nodeunit tests/regression",
-    "test-unit": "nodeunit tests/unit tests/unit/unstable",
+    "test-unit": "nodeunit tests/unit",
     "test-website": "node tests/website.js",
     "test": "npm run test-node && npm run test-browser"
   },
diff --git a/src/jshint.js b/src/jshint.js
index aac08fa7..3ffbee96 100644
--- a/src/jshint.js
+++ b/src/jshint.js
@@ -709,6 +709,7 @@ var JSHINT = (function() {
           case "8":
           case "9":
           case "10":
+          case "11":
             state.option.moz = false;
             state.option.esversion = +val;
             break;
@@ -717,6 +718,7 @@ var JSHINT = (function() {
           case "2017":
           case "2018":
           case "2019":
+          case "2020":
             state.option.moz = false;
             // Translate specification publication year to version number.
             state.option.esversion = +val - 2009;
@@ -747,6 +749,7 @@ var JSHINT = (function() {
               state.option[tn] = !state.option[tn];
             }
           } else if (directiveToken.type === "jshint.unstable") {
+            /* istanbul ignore next */
             state.option.unstable[key] = (val === "true");
           } else {
             state.option[key] = (val === "true");
@@ -1470,8 +1473,8 @@ var JSHINT = (function() {
 
     if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)") {
       if (left.value === "bigint") {
-        if (!state.option.unstable.bigint) {
-          warning("W144", left, "BigInt", "bigint");
+        if (!state.inES11()) {
+          warning("W119", left, "BigInt", "11");
         }
 
         return false;
@@ -1735,18 +1738,18 @@ var JSHINT = (function() {
   }
 
   /**
-   * Retrieve the value of the current token if it is an identifier and
-   * optionally advance the parser.
+   * Retrieve the value of the next token if it is an identifier and optionally
+   * advance the parser.
    *
    * @param {number} context - the parsing context; see `prod-params.js` for
    *                           more information
-   * @param {boolean} [prop] -`true` if this identifier is that of an object
-   *                           property
+   * @param {boolean} [isName] - `true` if an IdentifierName should be consumed
+   *                             (e.g. object properties)
    * @param {boolean} [preserve] - `true` if the token should not be consumed
    *
    * @returns {string|undefined} - the value of the identifier, if present
    */
-  function optionalidentifier(context, prop, preserve) {
+  function optionalidentifier(context, isName, preserve) {
     if (!state.tokens.next.identifier) {
       return;
     }
@@ -1756,20 +1759,12 @@ var JSHINT = (function() {
     }
 
     var curr = state.tokens.curr;
-    var val  = state.tokens.curr.value;
 
-    if (!isReserved(context, curr)) {
-      return val;
+    if (isReserved(context, curr) && !(isName && state.inES5())) {
+      warning("W024", state.tokens.curr, state.tokens.curr.id);
     }
 
-    if (prop) {
-      if (state.inES5()) {
-        return val;
-      }
-    }
-
-    warning("W024", state.tokens.curr, state.tokens.curr.id);
-    return val;
+    return curr.value;
   }
 
   /**
@@ -1807,13 +1802,13 @@ var JSHINT = (function() {
    *
    * @param {number} context - the parsing context; see `prod-params.js` for
    *                           more information
-   * @param {boolean} [prop] -`true` if this identifier is that of an object
-   *                           property
+   * @param {boolean} [isName] - `true` if an IdentifierName should be consumed
+   *                             (e.g. object properties)
    *
    * @returns {string|undefined} - the value of the identifier, if present
    */
-  function identifier(context, prop) {
-    var i = optionalidentifier(context, prop, false);
+  function identifier(context, isName) {
+    var i = optionalidentifier(context, isName, false);
     if (i) {
       return i;
     }
@@ -2442,6 +2437,26 @@ var JSHINT = (function() {
     return that;
   }, andPrecedence);
 
+  infix("??", function(context, left, that) {
+    if (!left.paren && (left.id === "||" || left.id === "&&")) {
+      error("E024", that, "??");
+    }
+
+    if (!state.inES11()) {
+      warning("W119", that, "nullish coalescing", "11");
+    }
+
+    increaseComplexityCount();
+    that.left = left;
+    var right = that.right = expression(context, 39);
+
+    if (!right.paren && (right.id === "||" || right.id === "&&")) {
+      error("E024", that.right, that.right.id);
+    }
+
+    return that;
+  }, 39);
+
   // The Exponentiation operator, introduced in ECMAScript 2016
   //
   // ExponentiationExpression[Yield] :
@@ -2738,7 +2753,9 @@ var JSHINT = (function() {
           }
         }
       } else {
-        if (c.id !== "." && c.id !== "[" && c.id !== "(") {
+        if (c.id === "?." && !c.paren) {
+          error("E024", c, "?.");
+        } else if (c.id !== "." && c.id !== "[" && c.id !== "(") {
           /* istanbul ignore next */
           warning("W056", state.tokens.curr);
         }
@@ -2758,7 +2775,6 @@ var JSHINT = (function() {
 
   var classDeclaration = blockstmt("class", function(context) {
     var className, classNameToken;
-    var inexport = context & prodParams.export;
 
     if (!state.inES6()) {
       warning("W104", state.tokens.curr, "class", "6");
@@ -2785,12 +2801,12 @@ var JSHINT = (function() {
     }
 
     if (classNameToken) {
-      this.name = className;
+      this.name = classNameToken;
       state.funct["(scope)"].initialize(className);
-      if (inexport) {
-        state.funct["(scope)"].setExported(className, classNameToken);
-      }
+    } else {
+      this.name = null;
     }
+
     state.funct["(scope)"].stack();
     classBody(this, context);
     return this;
@@ -2827,13 +2843,15 @@ var JSHINT = (function() {
 
     state.funct["(scope)"].stack();
     if (classNameToken) {
-      this.name = className;
+      this.name = classNameToken;
       state.funct["(scope)"].addbinding(className, {
         type: "class",
         initialized: true,
         token: classNameToken
       });
       state.funct["(scope)"].block.use(className, classNameToken);
+    } else {
+      this.name = null;
     }
 
     classBody(this, context);
@@ -3038,6 +3056,31 @@ var JSHINT = (function() {
     return that;
   }, 160, true);
 
+  infix("?.", function(context, left, that) {
+    if (!state.inES11()) {
+      warning("W119", state.tokens.curr, "Optional chaining", "11");
+    }
+
+
+    if (checkPunctuator(state.tokens.next, "[")) {
+      that.left = left;
+      advance();
+      that.right = state.tokens.curr.led(context, left);
+    } else if (checkPunctuator(state.tokens.next, "(")) {
+      that.left = left;
+      advance();
+      that.right = state.tokens.curr.led(context, left);
+    } else {
+      state.syntax["."].led.call(that, context, left);
+    }
+
+    if (state.tokens.next.type === "(template)") {
+      error("E024", state.tokens.next, "`");
+    }
+
+    return that;
+  }, 160, true);
+
   infix("(", function(context, left, that) {
     if (state.option.immed && left && !left.immed && left.id === "function") {
       warning("W062");
@@ -3250,12 +3293,19 @@ var JSHINT = (function() {
           // Used to cover a unary expression as the left-hand side of the
           // exponentiation operator
           (beginsUnaryExpression(ret) && state.tokens.next.id === "**") ||
+          // Used to cover a logical operator as the right-hand side of the
+          // nullish coalescing operator
+          (preceeding.id === "??" && (ret.id === "&&" || ret.id === "||")) ||
           // Used to delineate an integer number literal from a dereferencing
           // punctuator (otherwise interpreted as a decimal point)
           (ret.type === "(number)" &&
             checkPunctuator(pn, ".") && /^\d+$/.test(ret.value)) ||
           // Used to wrap object destructuring assignment
-          (opening.beginsStmt && ret.id === "=" && ret.left.id === "{");
+          (opening.beginsStmt && ret.id === "=" && ret.left.id === "{") ||
+          // Used to allow optional chaining with other language features which
+          // are otherwise restricted.
+          (ret.id === "?." &&
+              (preceeding.id === "new" || state.tokens.next.type === "(template)"));
       }
     }
 
@@ -3455,33 +3505,26 @@ var JSHINT = (function() {
     return !!state.funct["(method)"];
   }
 
-  function propertyName(context, preserveOrToken) {
-    var id;
-    var preserve = true;
-    if (typeof preserveOrToken === "object") {
-      /* istanbul ignore next */
-      id = preserveOrToken;
-    } else {
-      preserve = preserveOrToken;
-      id = optionalidentifier(context, true, preserve);
-    }
+  /**
+   * Retrieve the value of the next token if it is a valid LiteralPropertyName
+   * and optionally advance the parser.
+   *
+   * @param {number} context - the parsing context; see `prod-params.js` for
+   *                           more information
+   *
+   * @returns {string|undefined} - the value of the identifier, if present
+   */
+  function propertyName(context) {
+    var id = optionalidentifier(context, true);
 
     if (!id) {
       if (state.tokens.next.id === "(string)") {
         id = state.tokens.next.value;
-        if (!preserve) {
-          advance();
-        }
+        advance();
       } else if (state.tokens.next.id === "(number)") {
         id = state.tokens.next.value.toString();
-        if (!preserve) {
-          advance();
-        }
+        advance();
       }
-    /* istanbul ignore next */
-    } else if (typeof id === "object") {
-      if (id.id === "(string)" || id.id === "(identifier)") id = id.value;
-      else if (id.id === "(number)") id = id.value.toString();
     }
 
     if (id === "hasOwnProperty") {
@@ -4009,10 +4052,9 @@ var JSHINT = (function() {
           if (!state.inES6()) {
             warning("W104", state.tokens.next, "object short notation", "6");
           }
-          i = propertyName(context, true);
-          saveProperty(props, i, state.tokens.next);
-
-          expression(context, 10);
+          t = expression(context, 10);
+          i = t.value;
+          saveProperty(props, i, t);
 
         } else if (peek().id !== ":" && (nextVal === "get" || nextVal === "set")) {
           advance(nextVal);
@@ -4346,7 +4388,6 @@ var JSHINT = (function() {
     // used for both let and const statements
 
     var noin = context & prodParams.noin;
-    var inexport = context & prodParams.export;
     var isLet = type === "let";
     var isConst = type === "const";
     var tokens, lone, value, letblock;
@@ -4436,10 +4477,6 @@ var JSHINT = (function() {
           if (tokens.hasOwnProperty(t)) {
             t = tokens[t];
             state.funct["(scope)"].initialize(t.id);
-
-            if (lone && inexport) {
-              state.funct["(scope)"].setExported(t.token.value, t.token);
-            }
           }
         }
       }
@@ -4541,7 +4578,6 @@ var JSHINT = (function() {
 
   var varstatement = stmt("var", function(context) {
     var noin = context & prodParams.noin;
-    var inexport = context & prodParams.export;
     var tokens, lone, value, id;
 
     this.first = [];
@@ -4584,9 +4620,6 @@ var JSHINT = (function() {
               type: "var",
               token: t.token });
 
-            if (lone && inexport) {
-              state.funct["(scope)"].setExported(t.id, t.token);
-            }
             names.push(t.token);
           }
         }
@@ -4659,25 +4692,21 @@ var JSHINT = (function() {
     if (inblock) {
       warning("W082", state.tokens.curr);
     }
-    var nameToken = optionalidentifier(context) ? state.tokens.curr : null;
+    this.name = optionalidentifier(context) ? state.tokens.curr : null;
 
-    if (!nameToken) {
+    if (!this.name) {
       if (!inexport) {
         warning("W025");
       }
     } else {
-      state.funct["(scope)"].addbinding(nameToken.value, {
+      state.funct["(scope)"].addbinding(this.name.value, {
         type: labelType,
         token: state.tokens.curr,
         initialized: true });
-
-      if (inexport) {
-        state.funct["(scope)"].setExported(nameToken.value, state.tokens.prev);
-      }
     }
 
     var f = doFunction(context, {
-      name: nameToken && nameToken.value,
+      name: this.name && this.name.value,
       statement: this,
       type: generator ? "generator" : null,
       ignoreLoopFunc: inblock // a declaration may already have warned
@@ -4690,13 +4719,16 @@ var JSHINT = (function() {
     // mode (the scope manager will not report an error because a declaration
     // does not introduce a binding into the function's environment record).
     var enablesStrictMode = f["(isStrict)"] && !state.isStrict();
-    if (nameToken && (f["(name)"] === "arguments" || f["(name)"] === "eval") &&
+    if (this.name && (f["(name)"] === "arguments" || f["(name)"] === "eval") &&
       enablesStrictMode) {
-      error("E008", nameToken);
+      error("E008", this.name);
     }
 
-    if (state.tokens.next.id === "(" && state.tokens.next.line === state.tokens.curr.line) {
-      /* istanbul ignore next */
+    // Although the parser correctly recognizes the statement boundary in this
+    // condition, it's support for the invalid "empty grouping" expression
+    // makes it tolerant of productions such as `function f() {}();`.
+    if (state.tokens.next.id === "(" && peek().id === ")" && peek(1).id !== "=>" &&
+      state.tokens.next.line === state.tokens.curr.line) {
       error("E039");
     }
     return this;
@@ -4719,21 +4751,21 @@ var JSHINT = (function() {
 
     // This context modification restricts the use of `await` as the optional
     // BindingIdentifier in async function expressions.
-    var nameToken = optionalidentifier(isAsync ? context | prodParams.async : context) ?
+    this.name = optionalidentifier(isAsync ? context | prodParams.async : context) ?
       state.tokens.curr : null;
 
     var f = doFunction(context, {
-      name: nameToken && nameToken.value,
+      name: this.name && this.name.value,
       type: generator ? "generator" : null
     });
 
-    if (generator && nameToken && nameToken.value === "yield") {
-      error("E024", nameToken, "yield");
+    if (generator && this.name && this.name.value === "yield") {
+      error("E024", this.name, "yield");
     }
 
-    if (nameToken && (f["(name)"] === "arguments" || f["(name)"] === "eval") &&
+    if (this.name && (f["(name)"] === "arguments" || f["(name)"] === "eval") &&
       f["(isStrict)"]) {
-      error("E008", nameToken);
+      error("E008", this.name);
     }
 
     return this;
@@ -4797,7 +4829,7 @@ var JSHINT = (function() {
         var tokens = destructuringPattern(context);
         _.each(tokens, function(token) {
           if (token.id) {
-            state.funct["(scope)"].addParam(token.id, token, "exception");
+            state.funct["(scope)"].addParam(token.id, token.token, "exception");
           }
         });
       } else if (state.tokens.next.type !== "(identifier)") {
@@ -5534,7 +5566,35 @@ var JSHINT = (function() {
     return this;
   }).exps = true;
 
-  stmt("import", function(context) {
+  prefix("import", function(context) {
+    var mp = metaProperty(context, "meta", function() {
+      if (!state.inES11(true)) {
+        warning("W119", state.tokens.prev, "import.meta", "11");
+      }
+      if (!state.option.module) {
+        error("E070", state.tokens.prev);
+      }
+    });
+
+    if (mp) {
+      return mp;
+    }
+
+    if (!checkPunctuator(state.tokens.next, "(")) {
+      return state.syntax["(identifier)"].nud.call(this, context);
+    }
+
+    if (!state.inES11()) {
+      warning("W119", state.tokens.curr, "dynamic import", "11");
+    }
+
+    advance("(");
+    expression(context, 10);
+    advance(")");
+    return this;
+  });
+
+  var importSymbol = stmt("import", function(context) {
     if (!state.funct["(scope)"].block.isGlobal()) {
       error("E053", state.tokens.curr, "Import");
     }
@@ -5594,15 +5654,12 @@ var JSHINT = (function() {
           break;
         }
         var importName;
-        if (state.tokens.next.type === "default") {
-          importName = "default";
-          advance("default");
-        } else {
-          importName = identifier(context);
-        }
-        if (state.tokens.next.value === "as") {
+        if (peek().value === "as") {
+          identifier(context, true);
           advance("as");
           importName = identifier(context);
+        } else {
+          importName = identifier(context);
         }
 
         // Import bindings are immutable (see ES6 8.1.1.5.5)
@@ -5636,12 +5693,18 @@ var JSHINT = (function() {
     // }
 
     return this;
-  }).exps = true;
+  });
+  importSymbol.exps = true;
+  importSymbol.reserved = true;
+  importSymbol.meta = { isFutureReservedWord: true, es5: true };
+  importSymbol.useFud = function() {
+    return !(checkPunctuators(state.tokens.next, [".", "("]));
+  };
+  importSymbol.rbp = 161;
 
   stmt("export", function(context) {
     var ok = true;
     var token;
-    var identifier;
     var moduleSpecifier;
     context = context | prodParams.export;
 
@@ -5657,7 +5720,18 @@ var JSHINT = (function() {
 
     if (state.tokens.next.value === "*") {
       // ExportDeclaration :: export * FromClause
+      // ExportDeclaration :: export * as IdentifierName FromClause
       advance("*");
+
+      if (state.tokens.next.value === "as") {
+        if (!state.inES11()) {
+          warning("W119", state.tokens.curr, "export * as ns from", "11");
+        }
+        advance("as");
+        identifier(context, true);
+        state.funct["(scope)"].setExported(null, state.tokens.curr);
+      }
+
       advance("from");
       advance("(string)");
       return this;
@@ -5674,26 +5748,27 @@ var JSHINT = (function() {
       state.nameStack.set(state.tokens.next);
 
       advance("default");
+      var def = state.tokens.curr;
       var exportType = state.tokens.next.id;
       if (exportType === "function") {
         this.block = true;
         advance("function");
-        state.syntax["function"].fud(context);
+        token = state.syntax["function"].fud(context);
+        state.funct["(scope)"].setExported(token.name, def);
       } else if (exportType === "async" && peek().id === "function") {
         this.block = true;
         advance("async");
         advance("function");
-        state.syntax["function"].fud(context | prodParams.preAsync);
+        token = state.syntax["function"].fud(context | prodParams.preAsync);
+        state.funct["(scope)"].setExported(token.name, def);
       } else if (exportType === "class") {
         this.block = true;
         advance("class");
-        state.syntax["class"].fud(context);
+        token = state.syntax["class"].fud(context);
+        state.funct["(scope)"].setExported(token.name, def);
       } else {
-        token = expression(context, 10);
-        if (token.identifier) {
-          identifier = token.value;
-          state.funct["(scope)"].setExported(identifier, token);
-        }
+        expression(context, 10);
+        state.funct["(scope)"].setExported(null, def);
       }
       return this;
     }
@@ -5708,15 +5783,22 @@ var JSHINT = (function() {
         }
         advance();
 
-        exportedTokens.push(state.tokens.curr);
-
         if (state.tokens.next.value === "as") {
           advance("as");
           if (!state.tokens.next.identifier) {
             /* istanbul ignore next */
             error("E030", state.tokens.next, state.tokens.next.value);
           }
+          exportedTokens.push({
+            local: state.tokens.prev,
+            export: state.tokens.next
+          });
           advance();
+        } else {
+          exportedTokens.push({
+            local: state.tokens.curr,
+            export: state.tokens.curr
+          });
         }
 
         if (!checkPunctuator(state.tokens.next, "}")) {
@@ -5730,8 +5812,8 @@ var JSHINT = (function() {
         moduleSpecifier = state.tokens.next;
         advance("(string)");
       } else if (ok) {
-        exportedTokens.forEach(function(token) {
-          state.funct["(scope)"].setExported(token.value, token);
+        exportedTokens.forEach(function(x) {
+          state.funct["(scope)"].setExported(x.local, x.export);
         });
       }
 
@@ -5747,31 +5829,43 @@ var JSHINT = (function() {
     } else if (state.tokens.next.id === "var") {
       // ExportDeclaration :: export VariableStatement
       advance("var");
-      state.tokens.curr.fud(context);
+      token = state.tokens.curr.fud(context);
+      token.first.forEach(function(binding) {
+        state.funct["(scope)"].setExported(binding, binding);
+      });
     } else if (state.tokens.next.id === "let") {
       // ExportDeclaration :: export VariableStatement
       advance("let");
-      state.tokens.curr.fud(context);
+      token = state.tokens.curr.fud(context);
+      token.first.forEach(function(binding) {
+        state.funct["(scope)"].setExported(binding, binding);
+      });
     } else if (state.tokens.next.id === "const") {
       // ExportDeclaration :: export VariableStatement
       advance("const");
-      state.tokens.curr.fud(context);
+      token = state.tokens.curr.fud(context);
+      token.first.forEach(function(binding) {
+        state.funct["(scope)"].setExported(binding, binding);
+      });
     } else if (state.tokens.next.id === "function") {
       // ExportDeclaration :: export Declaration
       this.block = true;
       advance("function");
-      state.syntax["function"].fud(context);
+      token = state.syntax["function"].fud(context);
+      state.funct["(scope)"].setExported(token.name, token.name);
     } else if (state.tokens.next.id === "async" && peek().id === "function") {
       // ExportDeclaration :: export Declaration
       this.block = true;
       advance("async");
       advance("function");
-      state.syntax["function"].fud(context | prodParams.preAsync);
+      token = state.syntax["function"].fud(context | prodParams.preAsync);
+      state.funct["(scope)"].setExported(token.name, token.name);
     } else if (state.tokens.next.id === "class") {
       // ExportDeclaration :: export Declaration
       this.block = true;
       advance("class");
-      state.syntax["class"].fud(context);
+      token = state.syntax["class"].fud(context);
+      state.funct["(scope)"].setExported(token.name, token.name);
     } else {
       /* istanbul ignore next */
       error("E024", state.tokens.next, state.tokens.next.value);
@@ -5843,7 +5937,6 @@ var JSHINT = (function() {
   FutureReservedWord("float");
   FutureReservedWord("goto");
   FutureReservedWord("implements", { es5: true, strictOnly: true });
-  FutureReservedWord("import", { es5: true });
   FutureReservedWord("int");
   FutureReservedWord("interface", { es5: true, strictOnly: true });
   FutureReservedWord("long");
diff --git a/src/lex.js b/src/lex.js
index 05ba48f4..f6858f69 100644
--- a/src/lex.js
+++ b/src/lex.js
@@ -249,7 +249,6 @@ Lexer.prototype = {
     case "]":
     case ":":
     case "~":
-    case "?":
       return {
         type: Token.Punctuator,
         value: ch1
@@ -289,6 +288,22 @@ Lexer.prototype = {
 
     ch2 = this.peek(1);
     ch3 = this.peek(2);
+
+    if (ch1 === "?") {
+      // Optional chaining
+      if (ch2 === "." && !reg.decimalDigit.test(ch3)) {
+        return {
+          type: Token.Punctuator,
+          value: "?."
+        };
+      }
+
+      return {
+        type: Token.Punctuator,
+        value: ch2 === "?" ? "??" : "?"
+      };
+    }
+
     ch4 = this.peek(3);
 
     // 4-character punctuator: >>>=
@@ -874,19 +889,17 @@ Lexer.prototype = {
 
       if (isAllowedDigit !== isDecimalDigit || isBigInt) {
         if (isBigInt) {
-          if (!state.option.unstable.bigint) {
-            this.triggerAsync(
-              "warning",
-              {
-                code: "W144",
-                line: this.line,
-                character: this.char,
-                data: [ "BigInt", "bigint" ]
-              },
-              checks,
-              function() { return true; }
-            );
-          }
+          this.triggerAsync(
+            "warning",
+            {
+              code: "W119",
+              line: this.line,
+              character: this.char,
+              data: [ "BigInt", "11" ]
+            },
+            checks,
+            function() { return !state.inES11(); }
+          );
 
           if (isLegacy || isNonOctal) {
             this.triggerAsync(
diff --git a/src/messages.js b/src/messages.js
index 6c4bd053..113586b0 100644
--- a/src/messages.js
+++ b/src/messages.js
@@ -84,7 +84,9 @@ var errors = {
     "enable strict mode.",
   E066: "Asynchronous iteration is only available with for-of loops.",
   E067: "Malformed numeric literal: '{a}'.",
-  E068: "Decimals with leading zeros are not allowed in strict mode."
+  E068: "Decimals with leading zeros are not allowed in strict mode.",
+  E069: "Duplicate exported binding: '{a}'.",
+  E070: "import.meta may only be used in module code."
 };
 
 var warnings = {
diff --git a/src/options.js b/src/options.js
index 43a5754e..482575ea 100644
--- a/src/options.js
+++ b/src/options.js
@@ -1051,6 +1051,9 @@ exports.val = {
    *  - `10` - To enable language features introduced by [ECMAScript
    *    10](https://www.ecma-international.org/ecma-262/10.0/index.html).
    *    Notable additions: optional catch bindings.
+   *  - `11` - To enable language features introduced by ECMAScript 11. Notable
+   *    additions: "export * as ns from 'module'", `import.meta`, the nullish
+   *    coalescing operator, and optional chaining, and dynamic import.
    */
   esversion: 5
 };
@@ -1062,17 +1065,6 @@ exports.val = {
  * right to remove or modify them between major version releases.
  */
 exports.unstable = {
-  /**
-   * [The BigInt proposal](https://github.com/tc39/proposal-bigint) extends the
-   * language's grammer for numeric literals to support integer values of
-   * arbitrary precision. It also introduces a new value of the `typeof`
-   * operator, "bigint".
-   *
-   * Mathematical operations which use both BigInt and traditional ECMAScript
-   * Number values may not have the intended effect. Due to the weakly-typed
-   * nature of the language, JSHint is unable to identify such cases.
-   */
-  bigint: true
 };
 
 // These are JSHint boolean options which are shared with JSLint
diff --git a/src/scope-manager.js b/src/scope-manager.js
index ee6f8a52..27178ed7 100644
--- a/src/scope-manager.js
+++ b/src/scope-manager.js
@@ -64,6 +64,7 @@ var scopeManager = function(state, predefined, exported, declared) {
   var usedPredefinedAndGlobals = Object.create(null);
   var impliedGlobals = Object.create(null);
   var unuseds = [];
+  var esModuleExports = [];
   var emitter = new events.EventEmitter();
 
   function warning(code, token) {
@@ -537,8 +538,9 @@ var scopeManager = function(state, predefined, exported, declared) {
         if (usage["(onlyUsedSubFunction)"]) {
           _latedefWarning(type, bindingName, token);
         } else {
-          // this is a clear illegal usage for block scoped variables
-          warning("E056", token, bindingName, type);
+          // this is a clear illegal usage, but not a syntax error, so emit a
+          // warning and not an error
+          warning("W003", token, bindingName);
         }
       }
     },
@@ -694,8 +696,18 @@ var scopeManager = function(state, predefined, exported, declared) {
      * @param {string} bindingName - the value of the identifier
      * @param {object} token
      */
-    setExported: function(bindingName, token) {
-      this.block.use(bindingName, token);
+    setExported: function(localName, exportName) {
+      if (exportName) {
+        if (esModuleExports.indexOf(exportName.value) > -1) {
+          error("E069", exportName, exportName.value);
+        }
+
+        esModuleExports.push(exportName.value);
+      }
+
+      if (localName) {
+        this.block.use(localName.value, localName);
+      }
     },
 
     /**
diff --git a/src/state.js b/src/state.js
index cd5b247a..0788b30f 100644
--- a/src/state.js
+++ b/src/state.js
@@ -65,6 +65,15 @@ var state = {
     return this.option.moz;
   },
 
+  /**
+   * Determine if constructs introduced in ECMAScript 11 should be accepted.
+   *
+   * @returns {boolean}
+   */
+  inES11: function() {
+    return this.esVersion >= 11;
+  },
+
   /**
    * Determine if constructs introduced in ECMAScript 10 should be accepted.
    *


Test patch:
diff --git a/tests/test262/expectations.txt b/tests/test262/expectations.txt
index 1a4ea5b7..7863ce36 100644
--- a/tests/test262/expectations.txt
+++ b/tests/test262/expectations.txt
@@ -147,22 +147,10 @@ test/language/arguments-object/10.6-13-c-1-s.js(strict mode)
 test/language/arguments-object/10.6-2gs.js(strict mode)
 test/language/block-scope/syntax/function-declarations/in-statement-position-if-expression-statement-else-statement.js(strict mode)
 test/language/block-scope/syntax/function-declarations/in-statement-position-if-expression-statement.js(strict mode)
-test/language/destructuring/binding/syntax/array-elements-with-initializer.js(default)
-test/language/destructuring/binding/syntax/array-elements-with-initializer.js(strict mode)
-test/language/module-code/early-dup-export-decl.js(default)
-test/language/module-code/early-dup-export-decl.js(strict mode)
-test/language/module-code/early-dup-export-dflt-id.js(default)
-test/language/module-code/early-dup-export-dflt-id.js(strict mode)
-test/language/module-code/early-dup-export-id-as.js(default)
-test/language/module-code/early-dup-export-id-as.js(strict mode)
-test/language/module-code/early-dup-export-id.js(default)
-test/language/module-code/early-dup-export-id.js(strict mode)
 test/language/module-code/early-export-global.js(default)
 test/language/module-code/early-export-global.js(strict mode)
 test/language/module-code/early-export-unresolvable.js(default)
 test/language/module-code/early-export-unresolvable.js(strict mode)
-test/language/module-code/instn-named-id-name.js(default)
-test/language/module-code/instn-named-id-name.js(strict mode)
 test/language/module-code/parse-err-hoist-lex-fun.js(default)
 test/language/module-code/parse-err-hoist-lex-fun.js(strict mode)
 test/language/module-code/parse-err-hoist-lex-gen.js(default)
@@ -1071,78 +1059,14 @@ test/annexB/built-ins/escape/escape-above-astral.js(strict mode)
 
 
 # Async functions
-test/language/expressions/async-arrow-function/dflt-params-ref-later.js(default)
-test/language/expressions/async-arrow-function/dflt-params-ref-later.js(strict mode)
-test/language/expressions/async-arrow-function/dflt-params-ref-self.js(default)
-test/language/expressions/async-arrow-function/dflt-params-ref-self.js(strict mode)
-test/language/expressions/async-function/named-dflt-params-ref-later.js(default)
-test/language/expressions/async-function/named-dflt-params-ref-later.js(strict mode)
-test/language/expressions/async-function/named-dflt-params-ref-self.js(default)
-test/language/expressions/async-function/named-dflt-params-ref-self.js(strict mode)
-test/language/expressions/async-function/nameless-dflt-params-ref-later.js(default)
-test/language/expressions/async-function/nameless-dflt-params-ref-later.js(strict mode)
-test/language/expressions/async-function/nameless-dflt-params-ref-self.js(default)
-test/language/expressions/async-function/nameless-dflt-params-ref-self.js(strict mode)
-test/language/statements/async-function/dflt-params-ref-later.js(default)
-test/language/statements/async-function/dflt-params-ref-later.js(strict mode)
-test/language/statements/async-function/dflt-params-ref-self.js(default)
-test/language/statements/async-function/dflt-params-ref-self.js(strict mode)
-test/language/statements/async-generator/dflt-params-ref-later.js(default)
-test/language/statements/async-generator/dflt-params-ref-later.js(strict mode)
-test/language/statements/async-generator/dflt-params-ref-self.js(default)
-test/language/statements/async-generator/dflt-params-ref-self.js(strict mode)
 
-test/language/expressions/generators/dflt-params-ref-later.js(default)
-test/language/expressions/generators/dflt-params-ref-later.js(strict mode)
-test/language/expressions/generators/dflt-params-ref-self.js(default)
-test/language/expressions/generators/dflt-params-ref-self.js(strict mode)
-test/language/expressions/async-generator/dflt-params-ref-later.js(default)
-test/language/expressions/async-generator/dflt-params-ref-later.js(strict mode)
-test/language/expressions/async-generator/dflt-params-ref-self.js(default)
-test/language/expressions/async-generator/dflt-params-ref-self.js(strict mode)
-test/language/expressions/async-generator/named-dflt-params-ref-later.js(default)
-test/language/expressions/async-generator/named-dflt-params-ref-later.js(strict mode)
-test/language/expressions/async-generator/named-dflt-params-ref-self.js(default)
-test/language/expressions/async-generator/named-dflt-params-ref-self.js(strict mode)
-test/language/expressions/function/dflt-params-ref-later.js(default)
-test/language/expressions/function/dflt-params-ref-later.js(strict mode)
-test/language/expressions/function/dflt-params-ref-self.js(default)
-test/language/expressions/function/dflt-params-ref-self.js(strict mode)
 test/language/expressions/object/accessor-name-literal-string-unicode-escape.js(default)
 test/language/expressions/object/accessor-name-literal-string-unicode-escape.js(strict mode)
-test/language/expressions/object/method-definition/async-gen-meth-dflt-params-ref-later.js(default)
-test/language/expressions/object/method-definition/async-gen-meth-dflt-params-ref-later.js(strict mode)
-test/language/expressions/object/method-definition/async-gen-meth-dflt-params-ref-self.js(default)
-test/language/expressions/object/method-definition/async-gen-meth-dflt-params-ref-self.js(strict mode)
-test/language/expressions/object/method-definition/async-meth-dflt-params-ref-later.js(default)
-test/language/expressions/object/method-definition/async-meth-dflt-params-ref-later.js(strict mode)
-test/language/expressions/object/method-definition/async-meth-dflt-params-ref-self.js(default)
-test/language/expressions/object/method-definition/async-meth-dflt-params-ref-self.js(strict mode)
-test/language/expressions/object/method-definition/gen-meth-dflt-params-ref-later.js(default)
-test/language/expressions/object/method-definition/gen-meth-dflt-params-ref-later.js(strict mode)
-test/language/expressions/object/method-definition/gen-meth-dflt-params-ref-self.js(default)
-test/language/expressions/object/method-definition/gen-meth-dflt-params-ref-self.js(strict mode)
-test/language/expressions/object/method-definition/meth-dflt-params-ref-later.js(default)
-test/language/expressions/object/method-definition/meth-dflt-params-ref-later.js(strict mode)
-test/language/expressions/object/method-definition/meth-dflt-params-ref-self.js(default)
-test/language/expressions/object/method-definition/meth-dflt-params-ref-self.js(strict mode)
-test/language/expressions/arrow-function/dflt-params-ref-later.js(default)
-test/language/expressions/arrow-function/dflt-params-ref-later.js(strict mode)
-test/language/expressions/arrow-function/dflt-params-ref-self.js(default)
-test/language/expressions/arrow-function/dflt-params-ref-self.js(strict mode)
 
 # Async iteration
 test/language/expressions/async-generator/early-errors-expression-yield-star-after-newline.js(default)
 test/language/expressions/async-generator/early-errors-expression-yield-star-after-newline.js(strict mode)
 
-test/language/statements/function/dflt-params-ref-later.js(default)
-test/language/statements/function/dflt-params-ref-later.js(strict mode)
-test/language/statements/function/dflt-params-ref-self.js(default)
-test/language/statements/function/dflt-params-ref-self.js(strict mode)
-test/language/statements/generators/dflt-params-ref-later.js(default)
-test/language/statements/generators/dflt-params-ref-later.js(strict mode)
-test/language/statements/generators/dflt-params-ref-self.js(default)
-test/language/statements/generators/dflt-params-ref-self.js(strict mode)
 
 test/language/export/escaped-as-export-specifier.js(default)
 test/language/export/escaped-as-export-specifier.js(strict mode)
@@ -1458,14 +1382,6 @@ test/language/comments/multi-line-asi-line-separator.js(default)
 test/language/comments/multi-line-asi-line-separator.js(strict mode)
 test/language/comments/multi-line-asi-paragraph-separator.js(default)
 test/language/comments/multi-line-asi-paragraph-separator.js(strict mode)
-test/language/module-code/eval-rqstd-once.js(default)
-test/language/module-code/eval-rqstd-once.js(strict mode)
-test/language/module-code/eval-rqstd-order.js(default)
-test/language/module-code/eval-rqstd-order.js(strict mode)
-test/language/module-code/eval-self-once.js(default)
-test/language/module-code/eval-self-once.js(strict mode)
-test/language/module-code/instn-once.js(default)
-test/language/module-code/instn-once.js(strict mode)
 test/language/module-code/privatename-valid-no-earlyerr.js(default)
 test/language/module-code/privatename-valid-no-earlyerr.js(strict mode)
 test/annexB/language/comments/single-line-html-close-unicode-separators.js(default)
@@ -1475,68 +1391,6 @@ test/intl402/Intl/getCanonicalLocales/non-iana-canon.js(default)
 test/intl402/Intl/getCanonicalLocales/non-iana-canon.js(strict mode)
 test/language/expressions/class/constructor-this-tdz-during-initializers.js(default)
 test/language/expressions/class/constructor-this-tdz-during-initializers.js(strict mode)
-test/language/expressions/dynamic-import/always-create-new-promise.js(default)
-test/language/expressions/dynamic-import/always-create-new-promise.js(strict mode)
-test/language/expressions/dynamic-import/assign-expr-get-value-abrupt-throws.js(default)
-test/language/expressions/dynamic-import/assign-expr-get-value-abrupt-throws.js(strict mode)
-test/language/expressions/dynamic-import/await-import-evaluation.js(default)
-test/language/expressions/dynamic-import/await-import-evaluation.js(strict mode)
-test/language/expressions/dynamic-import/custom-primitive.js(default)
-test/language/expressions/dynamic-import/custom-primitive.js(strict mode)
-test/language/expressions/dynamic-import/eval-export-dflt-cls-anon.js(default)
-test/language/expressions/dynamic-import/eval-export-dflt-cls-anon.js(strict mode)
-test/language/expressions/dynamic-import/eval-export-dflt-cls-name-meth.js(default)
-test/language/expressions/dynamic-import/eval-export-dflt-cls-name-meth.js(strict mode)
-test/language/expressions/dynamic-import/eval-export-dflt-cls-named.js(default)
-test/language/expressions/dynamic-import/eval-export-dflt-cls-named.js(strict mode)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-cls-anon.js(default)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-cls-anon.js(strict mode)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-cls-name-meth.js(default)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-cls-name-meth.js(strict mode)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-cls-named.js(default)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-cls-named.js(strict mode)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-fn-anon.js(default)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-fn-anon.js(strict mode)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-fn-named.js(default)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-fn-named.js(strict mode)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-gen-anon.js(default)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-gen-anon.js(strict mode)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-gen-named.js(default)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-gen-named.js(strict mode)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-in.js(default)
-test/language/expressions/dynamic-import/eval-export-dflt-expr-in.js(strict mode)
-test/language/expressions/dynamic-import/eval-rqstd-once.js(default)
-test/language/expressions/dynamic-import/eval-rqstd-once.js(strict mode)
-test/language/expressions/dynamic-import/eval-self-once-module.js(default)
-test/language/expressions/dynamic-import/eval-self-once-module.js(strict mode)
-test/language/expressions/dynamic-import/eval-self-once-script.js(default)
-test/language/expressions/dynamic-import/eval-self-once-script.js(strict mode)
-test/language/expressions/dynamic-import/for-await-resolution-and-error-agen-yield.js(default)
-test/language/expressions/dynamic-import/for-await-resolution-and-error-agen-yield.js(strict mode)
-test/language/expressions/dynamic-import/for-await-resolution-and-error-agen.js(default)
-test/language/expressions/dynamic-import/for-await-resolution-and-error-agen.js(strict mode)
-test/language/expressions/dynamic-import/for-await-resolution-and-error.js(default)
-test/language/expressions/dynamic-import/for-await-resolution-and-error.js(strict mode)
-test/language/expressions/dynamic-import/imported-self-update.js(default)
-test/language/expressions/dynamic-import/imported-self-update.js(strict mode)
-test/language/expressions/dynamic-import/indirect-resolution.js(default)
-test/language/expressions/dynamic-import/indirect-resolution.js(strict mode)
-test/language/expressions/dynamic-import/returns-promise.js(default)
-test/language/expressions/dynamic-import/returns-promise.js(strict mode)
-test/language/expressions/dynamic-import/reuse-namespace-object-from-import.js(default)
-test/language/expressions/dynamic-import/reuse-namespace-object-from-import.js(strict mode)
-test/language/expressions/dynamic-import/reuse-namespace-object-from-script.js(default)
-test/language/expressions/dynamic-import/reuse-namespace-object-from-script.js(strict mode)
-test/language/expressions/dynamic-import/reuse-namespace-object.js(default)
-test/language/expressions/dynamic-import/reuse-namespace-object.js(strict mode)
-test/language/expressions/dynamic-import/update-to-dynamic-import.js(default)
-test/language/expressions/dynamic-import/update-to-dynamic-import.js(strict mode)
-test/language/expressions/import.meta/distinct-for-each-module.js(default)
-test/language/expressions/import.meta/distinct-for-each-module.js(strict mode)
-test/language/expressions/import.meta/import-meta-is-an-ordinary-object.js(default)
-test/language/expressions/import.meta/import-meta-is-an-ordinary-object.js(strict mode)
-test/language/expressions/import.meta/same-object-returned.js(default)
-test/language/expressions/import.meta/same-object-returned.js(strict mode)
 test/language/statements/class/classelementname-abrupt-completion.js(default)
 test/language/statements/class/classelementname-abrupt-completion.js(strict mode)
 test/language/statements/class/static-classelementname-abrupt-completion.js(default)
@@ -1682,22 +1536,6 @@ test/language/expressions/class/accessor-name-inst/literal-string-unicode-escape
 test/language/expressions/class/accessor-name-inst/literal-string-unicode-escape.js(strict mode)
 test/language/expressions/class/accessor-name-static/literal-string-unicode-escape.js(default)
 test/language/expressions/class/accessor-name-static/literal-string-unicode-escape.js(strict mode)
-test/language/expressions/class/async-gen-method/dflt-params-ref-later.js(default)
-test/language/expressions/class/async-gen-method/dflt-params-ref-later.js(strict mode)
-test/language/expressions/class/async-gen-method/dflt-params-ref-self.js(default)
-test/language/expressions/class/async-gen-method/dflt-params-ref-self.js(strict mode)
-test/language/expressions/class/async-gen-method-static/dflt-params-ref-later.js(default)
-test/language/expressions/class/async-gen-method-static/dflt-params-ref-later.js(strict mode)
-test/language/expressions/class/async-gen-method-static/dflt-params-ref-self.js(default)
-test/language/expressions/class/async-gen-method-static/dflt-params-ref-self.js(strict mode)
-test/language/expressions/class/async-method/dflt-params-ref-later.js(default)
-test/language/expressions/class/async-method/dflt-params-ref-later.js(strict mode)
-test/language/expressions/class/async-method/dflt-params-ref-self.js(default)
-test/language/expressions/class/async-method/dflt-params-ref-self.js(strict mode)
-test/language/expressions/class/async-method-static/dflt-params-ref-later.js(default)
-test/language/expressions/class/async-method-static/dflt-params-ref-later.js(strict mode)
-test/language/expressions/class/async-method-static/dflt-params-ref-self.js(default)
-test/language/expressions/class/async-method-static/dflt-params-ref-self.js(strict mode)
 test/language/expressions/class/dstr/async-private-gen-meth-ary-init-iter-close.js(default)
 test/language/expressions/class/dstr/async-private-gen-meth-ary-init-iter-close.js(strict mode)
 test/language/expressions/class/dstr/async-private-gen-meth-ary-init-iter-no-close.js(default)
@@ -4564,658 +4402,10 @@ test/language/expressions/class/elements/wrapped-in-sc-static-private-methods.js
 test/language/expressions/class/elements/wrapped-in-sc-static-private-methods.js(strict mode)
 test/language/expressions/class/elements/wrapped-in-sc-string-literal-names.js(default)
 test/language/expressions/class/elements/wrapped-in-sc-string-literal-names.js(strict mode)
-test/language/expressions/class/gen-method/dflt-params-ref-later.js(default)
-test/language/expressions/class/gen-method/dflt-params-ref-later.js(strict mode)
-test/language/expressions/class/gen-method/dflt-params-ref-self.js(default)
-test/language/expressions/class/gen-method/dflt-params-ref-self.js(strict mode)
-test/language/expressions/class/gen-method-static/dflt-params-ref-later.js(default)
-test/language/expressions/class/gen-method-static/dflt-params-ref-later.js(strict mode)
-test/language/expressions/class/gen-method-static/dflt-params-ref-self.js(default)
-test/language/expressions/class/gen-method-static/dflt-params-ref-self.js(strict mode)
-test/language/expressions/class/method/dflt-params-ref-later.js(default)
-test/language/expressions/class/method/dflt-params-ref-later.js(strict mode)
-test/language/expressions/class/method/dflt-params-ref-self.js(default)
-test/language/expressions/class/method/dflt-params-ref-self.js(strict mode)
-test/language/expressions/class/method-static/dflt-params-ref-later.js(default)
-test/language/expressions/class/method-static/dflt-params-ref-later.js(strict mode)
-test/language/expressions/class/method-static/dflt-params-ref-self.js(default)
-test/language/expressions/class/method-static/dflt-params-ref-self.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/additive-expr.js(default)
-test/language/expressions/dynamic-import/assignment-expression/additive-expr.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/array-literal.js(default)
-test/language/expressions/dynamic-import/assignment-expression/array-literal.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/arrow-function.js(default)
-test/language/expressions/dynamic-import/assignment-expression/arrow-function.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/await-expr.js(default)
-test/language/expressions/dynamic-import/assignment-expression/await-expr.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/await-identifier.js(default)
-test/language/expressions/dynamic-import/assignment-expression/await-identifier.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/call-expr-arguments.js(default)
-test/language/expressions/dynamic-import/assignment-expression/call-expr-arguments.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/call-expr-expr.js(default)
-test/language/expressions/dynamic-import/assignment-expression/call-expr-expr.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/call-expr-identifier.js(default)
-test/language/expressions/dynamic-import/assignment-expression/call-expr-identifier.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/cover-call-expr.js(default)
-test/language/expressions/dynamic-import/assignment-expression/cover-call-expr.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/cover-parenthesized-expr.js(default)
-test/language/expressions/dynamic-import/assignment-expression/cover-parenthesized-expr.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/identifier.js(default)
-test/language/expressions/dynamic-import/assignment-expression/identifier.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/import-meta.js(default)
-test/language/expressions/dynamic-import/assignment-expression/import-meta.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/lhs-assign-operator-assign-expr.js(default)
-test/language/expressions/dynamic-import/assignment-expression/lhs-assign-operator-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/lhs-eq-assign-expr-nostrict.js(default)
-test/language/expressions/dynamic-import/assignment-expression/logical-and-expr.js(default)
-test/language/expressions/dynamic-import/assignment-expression/logical-and-expr.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/lhs-eq-assign-expr.js(default)
-test/language/expressions/dynamic-import/assignment-expression/lhs-eq-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/logical-or-expr.js(default)
-test/language/expressions/dynamic-import/assignment-expression/logical-or-expr.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/member-expr.js(default)
-test/language/expressions/dynamic-import/assignment-expression/member-expr.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/new-target.js(default)
-test/language/expressions/dynamic-import/assignment-expression/new-target.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/object-literal.js(default)
-test/language/expressions/dynamic-import/assignment-expression/object-literal.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/ternary.js(default)
-test/language/expressions/dynamic-import/assignment-expression/ternary.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/tagged-function-call.js(default)
-test/language/expressions/dynamic-import/assignment-expression/tagged-function-call.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/this.js(default)
-test/language/expressions/dynamic-import/assignment-expression/this.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/unary-expr.js(default)
-test/language/expressions/dynamic-import/assignment-expression/unary-expr.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/yield-assign-expr.js(default)
-test/language/expressions/dynamic-import/assignment-expression/yield-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/yield-expr.js(default)
-test/language/expressions/dynamic-import/assignment-expression/yield-expr.js(strict mode)
-test/language/expressions/dynamic-import/assignment-expression/yield-identifier.js(default)
-test/language/expressions/dynamic-import/assignment-expression/yield-star.js(default)
-test/language/expressions/dynamic-import/assignment-expression/yield-star.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-arrow-import-catch-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-await-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-await-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-return-await-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-function-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-function-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-await-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-async-gen-return-await-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-import-catch-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-block-labeled-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-do-while-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-do-while-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-do-while-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-do-while-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-do-while-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-do-while-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-do-while-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-do-while-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-do-while-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-do-while-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-do-while-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-do-while-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-do-while-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-do-while-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-else-import-catch-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-function-import-catch-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-if-import-catch-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/nested-while-import-catch-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-eval-rqstd-abrupt-typeerror.js(default)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-eval-rqstd-abrupt-typeerror.js(strict mode)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-eval-rqstd-abrupt-urierror.js(default)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-eval-rqstd-abrupt-urierror.js(strict mode)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-eval-script-code-target.js(default)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-eval-script-code-target.js(strict mode)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-file-does-not-exist.js(default)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-file-does-not-exist.js(strict mode)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-instn-iee-err-ambiguous-import.js(default)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-instn-iee-err-ambiguous-import.js(strict mode)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-instn-iee-err-circular.js(default)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-instn-iee-err-circular.js(strict mode)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-specifier-tostring-abrupt-rejects.js(default)
-test/language/expressions/dynamic-import/catch/top-level-import-catch-specifier-tostring-abrupt-rejects.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-Symbol-toStringTag.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-Symbol-toStringTag.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-define-own-property.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-define-own-property.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-delete-exported-init-no-strict.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-delete-exported-init-strict.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-delete-non-exported-no-strict.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-delete-non-exported-strict.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-extensible.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-extensible.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-dflt-direct.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-dflt-direct.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-dflt-indirect.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-dflt-indirect.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-props-nrml.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-props-nrml.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-get-own-property-str-found-init.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-get-own-property-str-found-init.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-get-own-property-str-not-found.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-get-own-property-str-not-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-get-own-property-sym.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-get-own-property-sym.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-get-str-found.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-get-str-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-get-str-not-found.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-get-str-not-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-get-sym-found.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-get-sym-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-get-sym-not-found.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-get-sym-not-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-has-property-str-found-init.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-has-property-str-found-init.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-has-property-str-not-found.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-has-property-str-not-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-has-property-sym-found.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-has-property-sym-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-has-property-sym-not-found.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-has-property-sym-not-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-no-iterator.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-no-iterator.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-own-property-keys-sort.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-own-property-keys-sort.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-prevent-extensions-object.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-prevent-extensions-object.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-prevent-extensions-reflect.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-prevent-extensions-reflect.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-prop-descs.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-prop-descs.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-prototype.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-prototype.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-set-no-strict.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-set-prototype-of-null.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-set-prototype-of-null.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-set-prototype-of.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-set-prototype-of.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-set-same-values-no-strict.js(default)
-test/language/expressions/dynamic-import/namespace/await-ns-set-same-values-strict.js(strict mode)
-test/language/expressions/dynamic-import/namespace/await-ns-set-strict.js(strict mode)
-test/language/expressions/dynamic-import/namespace/default-property-not-set-own.js(default)
-test/language/expressions/dynamic-import/namespace/default-property-not-set-own.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-Symbol-toStringTag.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-Symbol-toStringTag.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-define-own-property.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-define-own-property.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-delete-exported-init-no-strict.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-delete-exported-init-strict.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-delete-non-exported-no-strict.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-delete-non-exported-strict.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-extensible.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-extensible.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-dflt-direct.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-dflt-direct.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-dflt-indirect.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-dflt-indirect.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-props-nrml.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-props-nrml.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-str-found-init.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-str-found-init.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-str-not-found.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-str-not-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-sym.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-sym.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-str-found.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-str-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-str-not-found.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-str-not-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-sym-found.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-sym-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-sym-not-found.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-get-sym-not-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-has-property-str-found-init.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-has-property-str-found-init.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-has-property-str-not-found.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-has-property-str-not-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-has-property-sym-found.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-has-property-sym-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-has-property-sym-not-found.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-has-property-sym-not-found.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-no-iterator.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-no-iterator.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-own-property-keys-sort.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-own-property-keys-sort.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-prevent-extensions-object.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-prevent-extensions-object.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-prevent-extensions-reflect.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-prevent-extensions-reflect.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-prop-descs.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-prop-descs.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-prototype.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-prototype.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-set-no-strict.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-set-prototype-of-null.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-set-prototype-of-null.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-set-prototype-of.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-set-prototype-of.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-set-same-values-no-strict.js(default)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-set-same-values-strict.js(strict mode)
-test/language/expressions/dynamic-import/namespace/promise-then-ns-set-strict.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-arrow-import-then-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-arrow-import-then-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-arrow-import-then-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-arrow-import-then-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-arrow-import-then-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-arrow-import-then-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-await-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-await-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-await-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-await-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-await-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-await-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-await-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-await-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-await-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-await-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-await-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-await-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-return-await-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-return-await-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-return-await-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-return-await-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-return-await-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-return-await-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-function-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-function-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-gen-await-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-gen-await-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-gen-await-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-gen-await-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-gen-await-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-gen-await-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-gen-await-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-gen-await-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-gen-await-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-gen-await-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-gen-await-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-gen-await-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-block-import-then-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-block-import-then-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-block-import-then-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-block-import-then-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-block-import-then-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-block-import-then-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-block-import-then-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-block-import-then-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-block-import-then-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-block-import-then-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-block-import-then-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-block-import-then-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-do-while-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-do-while-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-do-while-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-do-while-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-do-while-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-do-while-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-do-while-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-do-while-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-do-while-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-do-while-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-do-while-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-do-while-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-else-import-then-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-else-import-then-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-else-import-then-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-else-import-then-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-else-import-then-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-else-import-then-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-else-import-then-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-else-import-then-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-else-import-then-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-else-import-then-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-else-import-then-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-else-import-then-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-function-import-then-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-function-import-then-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-function-import-then-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-function-import-then-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-function-import-then-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-function-import-then-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-function-import-then-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-function-import-then-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-function-import-then-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-function-import-then-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-function-import-then-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-function-import-then-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-if-braceless-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-if-braceless-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-if-braceless-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-if-braceless-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-if-braceless-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-if-braceless-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-if-braceless-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-if-braceless-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-if-braceless-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-if-braceless-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-if-braceless-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-if-braceless-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-if-import-then-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-if-import-then-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-if-import-then-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-if-import-then-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-if-import-then-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-if-import-then-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-if-import-then-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-if-import-then-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-if-import-then-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-if-import-then-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-if-import-then-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-if-import-then-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-while-import-then-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/nested-while-import-then-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-while-import-then-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/nested-while-import-then-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-while-import-then-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/nested-while-import-then-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-while-import-then-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/nested-while-import-then-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-while-import-then-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/nested-while-import-then-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/nested-while-import-then-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/nested-while-import-then-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-specifier-tostring.js(strict mode)
-test/language/expressions/dynamic-import/usage/top-level-import-then-eval-gtbndng-indirect-update-dflt.js(default)
-test/language/expressions/dynamic-import/usage/top-level-import-then-eval-gtbndng-indirect-update-dflt.js(strict mode)
-test/language/expressions/dynamic-import/usage/top-level-import-then-eval-gtbndng-indirect-update.js(default)
-test/language/expressions/dynamic-import/usage/top-level-import-then-eval-gtbndng-indirect-update.js(strict mode)
-test/language/expressions/dynamic-import/usage/top-level-import-then-eval-script-code-host-resolves-module-code.js(default)
-test/language/expressions/dynamic-import/usage/top-level-import-then-eval-script-code-host-resolves-module-code.js(strict mode)
-test/language/expressions/dynamic-import/usage/top-level-import-then-is-call-expression-square-brackets.js(default)
-test/language/expressions/dynamic-import/usage/top-level-import-then-is-call-expression-square-brackets.js(strict mode)
-test/language/expressions/dynamic-import/usage/top-level-import-then-returns-thenable.js(default)
-test/language/expressions/dynamic-import/usage/top-level-import-then-returns-thenable.js(strict mode)
-test/language/expressions/dynamic-import/usage/top-level-import-then-specifier-tostring.js(default)
-test/language/expressions/dynamic-import/usage/top-level-import-then-specifier-tostring.js(strict mode)
-test/language/expressions/import.meta/syntax/goal-module-nested-function.js(default)
-test/language/expressions/import.meta/syntax/goal-module-nested-function.js(strict mode)
-test/language/expressions/import.meta/syntax/goal-module.js(default)
-test/language/expressions/import.meta/syntax/goal-module.js(strict mode)
 test/language/statements/class/accessor-name-inst/literal-string-unicode-escape.js(default)
 test/language/statements/class/accessor-name-inst/literal-string-unicode-escape.js(strict mode)
 test/language/statements/class/accessor-name-static/literal-string-unicode-escape.js(default)
 test/language/statements/class/accessor-name-static/literal-string-unicode-escape.js(strict mode)
-test/language/statements/class/async-gen-method/dflt-params-ref-later.js(default)
-test/language/statements/class/async-gen-method/dflt-params-ref-later.js(strict mode)
-test/language/statements/class/async-gen-method/dflt-params-ref-self.js(default)
-test/language/statements/class/async-gen-method/dflt-params-ref-self.js(strict mode)
-test/language/statements/class/async-gen-method-static/dflt-params-ref-later.js(default)
-test/language/statements/class/async-gen-method-static/dflt-params-ref-later.js(strict mode)
-test/language/statements/class/async-gen-method-static/dflt-params-ref-self.js(default)
-test/language/statements/class/async-gen-method-static/dflt-params-ref-self.js(strict mode)
-test/language/statements/class/async-method/dflt-params-ref-later.js(default)
-test/language/statements/class/async-method/dflt-params-ref-later.js(strict mode)
-test/language/statements/class/async-method/dflt-params-ref-self.js(default)
-test/language/statements/class/async-method/dflt-params-ref-self.js(strict mode)
-test/language/statements/class/async-method-static/dflt-params-ref-later.js(default)
-test/language/statements/class/async-method-static/dflt-params-ref-later.js(strict mode)
-test/language/statements/class/async-method-static/dflt-params-ref-self.js(default)
-test/language/statements/class/async-method-static/dflt-params-ref-self.js(strict mode)
 test/language/statements/class/dstr/async-private-gen-meth-ary-init-iter-close.js(default)
 test/language/statements/class/dstr/async-private-gen-meth-ary-init-iter-close.js(strict mode)
 test/language/statements/class/dstr/async-private-gen-meth-ary-init-iter-no-close.js(default)
@@ -8122,22 +7312,6 @@ test/language/statements/class/elements/wrapped-in-sc-static-private-methods.js(
 test/language/statements/class/elements/wrapped-in-sc-static-private-methods.js(strict mode)
 test/language/statements/class/elements/wrapped-in-sc-string-literal-names.js(default)
 test/language/statements/class/elements/wrapped-in-sc-string-literal-names.js(strict mode)
-test/language/statements/class/gen-method/dflt-params-ref-later.js(default)
-test/language/statements/class/gen-method/dflt-params-ref-later.js(strict mode)
-test/language/statements/class/gen-method/dflt-params-ref-self.js(default)
-test/language/statements/class/gen-method/dflt-params-ref-self.js(strict mode)
-test/language/statements/class/gen-method-static/dflt-params-ref-later.js(default)
-test/language/statements/class/gen-method-static/dflt-params-ref-later.js(strict mode)
-test/language/statements/class/gen-method-static/dflt-params-ref-self.js(default)
-test/language/statements/class/gen-method-static/dflt-params-ref-self.js(strict mode)
-test/language/statements/class/method/dflt-params-ref-later.js(default)
-test/language/statements/class/method/dflt-params-ref-later.js(strict mode)
-test/language/statements/class/method/dflt-params-ref-self.js(default)
-test/language/statements/class/method/dflt-params-ref-self.js(strict mode)
-test/language/statements/class/method-static/dflt-params-ref-later.js(default)
-test/language/statements/class/method-static/dflt-params-ref-later.js(strict mode)
-test/language/statements/class/method-static/dflt-params-ref-self.js(default)
-test/language/statements/class/method-static/dflt-params-ref-self.js(strict mode)
 test/language/statements/for-of/dstr/array-elem-iter-rtrn-close-err.js(default)
 test/language/statements/for-of/dstr/array-elem-iter-rtrn-close-err.js(strict mode)
 test/language/statements/for-of/dstr/array-elem-iter-thrw-close-err.js(default)
@@ -8521,132 +7695,6 @@ test/language/expressions/class/elements/private-methods/prod-private-method-ini
 test/language/expressions/class/elements/private-methods/prod-private-method-initialize-order.js(strict mode)
 test/language/expressions/class/elements/private-methods/prod-private-method.js(default)
 test/language/expressions/class/elements/private-methods/prod-private-method.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/callexpression-arguments.js(default)
-test/language/expressions/dynamic-import/syntax/valid/callexpression-arguments.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/callexpression-templateliteral.js(default)
-test/language/expressions/dynamic-import/syntax/valid/callexpression-templateliteral.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-arrow-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-arrow-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-arrow-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-arrow-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-arrow-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-arrow-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-await-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-await-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-await-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-await-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-await-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-await-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-function-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-block-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-block-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-block-labeled-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-block-labeled-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-block-labeled-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-block-labeled-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-block-labeled-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-block-labeled-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-block-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-block-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-block-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-block-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-do-while-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-do-while-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-do-while-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-do-while-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-do-while-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-do-while-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-else-braceless-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-else-braceless-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-else-braceless-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-else-braceless-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-else-braceless-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-else-braceless-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-else-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-else-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-else-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-else-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-else-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-else-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-function-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-function-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-function-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-function-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-function-return-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-function-return-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-function-return-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-function-return-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-function-return-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-function-return-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-function-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-function-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-if-braceless-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-if-braceless-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-if-braceless-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-if-braceless-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-if-braceless-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-if-braceless-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-if-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-if-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-if-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-if-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-if-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-if-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-while-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-while-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-while-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-while-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-while-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-while-script-code-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/nested-with-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-with-expression-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-with-expression-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-with-expression-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-with-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/nested-with-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/new-covered-expression-is-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/new-covered-expression-is-valid.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/top-level-empty-str-is-valid-assign-expr.js(default)
-test/language/expressions/dynamic-import/syntax/valid/top-level-empty-str-is-valid-assign-expr.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/top-level-nested-imports.js(default)
-test/language/expressions/dynamic-import/syntax/valid/top-level-nested-imports.js(strict mode)
-test/language/expressions/dynamic-import/syntax/valid/top-level-script-code-valid.js(default)
-test/language/expressions/dynamic-import/syntax/valid/top-level-script-code-valid.js(strict mode)
 test/language/statements/class/elements/async-gen-private-method/yield-promise-reject-next-catch.js(default)
 test/language/statements/class/elements/async-gen-private-method/yield-promise-reject-next-catch.js(strict mode)
 test/language/statements/class/elements/async-gen-private-method/yield-promise-reject-next-for-await-of-async-iterator.js(default)
@@ -9138,8 +8186,6 @@ test/language/identifiers/start-unicode-9.0.0-escaped.js(default)
 test/language/identifiers/start-unicode-9.0.0-escaped.js(strict mode)
 test/language/identifiers/start-unicode-9.0.0.js(default)
 test/language/identifiers/start-unicode-9.0.0.js(strict mode)
-test/language/module-code/export-star-as-dflt.js(default)
-test/language/module-code/export-star-as-dflt.js(strict mode)
 test/language/statementList/block-array-literal-with-item.js(default)
 test/language/statementList/block-array-literal.js(default)
 test/language/statementList/block-arrow-function-assignment-expr.js(default)
@@ -9168,12 +8214,6 @@ test/language/statementList/class-regexp-literal-flags.js(default)
 test/language/statementList/class-regexp-literal-flags.js(strict mode)
 test/language/statementList/class-regexp-literal.js(default)
 test/language/statementList/class-regexp-literal.js(strict mode)
-test/language/statementList/fn-arrow-function-assignment-expr.js(default)
-test/language/statementList/fn-arrow-function-assignment-expr.js(strict mode)
-test/language/statementList/fn-arrow-function-functionbody.js(default)
-test/language/statementList/fn-arrow-function-functionbody.js(strict mode)
-test/language/statementList/fn-expr-arrow-function-boolean-literal.js(default)
-test/language/statementList/fn-expr-arrow-function-boolean-literal.js(strict mode)
 test/language/statementList/fn-regexp-literal-flags.js(default)
 test/language/statementList/fn-regexp-literal-flags.js(strict mode)
 test/language/statementList/fn-regexp-literal.js(default)
@@ -9216,46 +8256,6 @@ test/language/expressions/class/private-static-method-brand-check-multiple-evalu
 test/language/expressions/class/private-static-method-brand-check-multiple-evaluations-of-class-factory.js(strict mode)
 test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-factory.js(default)
 test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-factory.js(strict mode)
-test/language/expressions/coalesce/abrupt-is-a-short-circuit.js(default)
-test/language/expressions/coalesce/abrupt-is-a-short-circuit.js(strict mode)
-test/language/expressions/coalesce/chainable-if-parenthesis-covered-logical-and.js(default)
-test/language/expressions/coalesce/chainable-if-parenthesis-covered-logical-and.js(strict mode)
-test/language/expressions/coalesce/chainable-if-parenthesis-covered-logical-or.js(default)
-test/language/expressions/coalesce/chainable-if-parenthesis-covered-logical-or.js(strict mode)
-test/language/expressions/coalesce/chainable-with-bitwise-and.js(default)
-test/language/expressions/coalesce/chainable-with-bitwise-and.js(strict mode)
-test/language/expressions/coalesce/chainable-with-bitwise-or.js(default)
-test/language/expressions/coalesce/chainable-with-bitwise-or.js(strict mode)
-test/language/expressions/coalesce/chainable-with-bitwise-xor.js(default)
-test/language/expressions/coalesce/chainable-with-bitwise-xor.js(strict mode)
-test/language/expressions/coalesce/chainable.js(default)
-test/language/expressions/coalesce/chainable.js(strict mode)
-test/language/expressions/coalesce/follows-null.js(default)
-test/language/expressions/coalesce/follows-null.js(strict mode)
-test/language/expressions/coalesce/follows-undefined.js(default)
-test/language/expressions/coalesce/follows-undefined.js(strict mode)
-test/language/expressions/coalesce/short-circuit-number-0.js(default)
-test/language/expressions/coalesce/short-circuit-number-0.js(strict mode)
-test/language/expressions/coalesce/short-circuit-number-42.js(default)
-test/language/expressions/coalesce/short-circuit-number-42.js(strict mode)
-test/language/expressions/coalesce/short-circuit-number-empty-string.js(default)
-test/language/expressions/coalesce/short-circuit-number-empty-string.js(strict mode)
-test/language/expressions/coalesce/short-circuit-number-false.js(default)
-test/language/expressions/coalesce/short-circuit-number-false.js(strict mode)
-test/language/expressions/coalesce/short-circuit-number-object.js(default)
-test/language/expressions/coalesce/short-circuit-number-object.js(strict mode)
-test/language/expressions/coalesce/short-circuit-number-string.js(default)
-test/language/expressions/coalesce/short-circuit-number-string.js(strict mode)
-test/language/expressions/coalesce/short-circuit-number-symbol.js(default)
-test/language/expressions/coalesce/short-circuit-number-symbol.js(strict mode)
-test/language/expressions/coalesce/short-circuit-number-true.js(default)
-test/language/expressions/coalesce/short-circuit-number-true.js(strict mode)
-test/language/expressions/coalesce/short-circuit-prevents-evaluation.js(default)
-test/language/expressions/coalesce/short-circuit-prevents-evaluation.js(strict mode)
-test/language/expressions/coalesce/tco-pos-null.js(strict mode)
-test/language/expressions/coalesce/tco-pos-undefined.js(strict mode)
-test/language/expressions/conditional/coalesce-expr-ternary.js(default)
-test/language/expressions/conditional/coalesce-expr-ternary.js(strict mode)
 test/language/expressions/logical-assignment/lgcl-and-assignment-operator-bigint.js(default)
 test/language/expressions/logical-assignment/lgcl-and-assignment-operator-bigint.js(strict mode)
 test/language/expressions/logical-assignment/lgcl-and-assignment-operator-lhs-before-rhs.js(default)
@@ -9342,48 +8342,6 @@ test/language/expressions/object/ident-name-prop-name-literal-default-escaped-ex
 test/language/expressions/object/ident-name-prop-name-literal-default-escaped-ext.js(strict mode)
 test/language/expressions/object/ident-name-prop-name-literal-extends-escaped-ext.js(default)
 test/language/expressions/object/ident-name-prop-name-literal-extends-escaped-ext.js(strict mode)
-test/language/expressions/optional-chaining/call-expression.js(default)
-test/language/expressions/optional-chaining/call-expression.js(strict mode)
-test/language/expressions/optional-chaining/iteration-statement-do.js(default)
-test/language/expressions/optional-chaining/iteration-statement-do.js(strict mode)
-test/language/expressions/optional-chaining/iteration-statement-for-await-of.js(default)
-test/language/expressions/optional-chaining/iteration-statement-for-await-of.js(strict mode)
-test/language/expressions/optional-chaining/iteration-statement-for-in.js(default)
-test/language/expressions/optional-chaining/iteration-statement-for-in.js(strict mode)
-test/language/expressions/optional-chaining/iteration-statement-for-of-type-error.js(default)
-test/language/expressions/optional-chaining/iteration-statement-for-of-type-error.js(strict mode)
-test/language/expressions/optional-chaining/iteration-statement-for.js(default)
-test/language/expressions/optional-chaining/iteration-statement-for.js(strict mode)
-test/language/expressions/optional-chaining/iteration-statement-while.js(default)
-test/language/expressions/optional-chaining/iteration-statement-while.js(strict mode)
-test/language/expressions/optional-chaining/member-expression-async-identifier.js(default)
-test/language/expressions/optional-chaining/member-expression-async-identifier.js(strict mode)
-test/language/expressions/optional-chaining/member-expression-async-literal.js(default)
-test/language/expressions/optional-chaining/member-expression-async-literal.js(strict mode)
-test/language/expressions/optional-chaining/member-expression-async-this.js(default)
-test/language/expressions/optional-chaining/member-expression-async-this.js(strict mode)
-test/language/expressions/optional-chaining/member-expression.js(default)
-test/language/expressions/optional-chaining/member-expression.js(strict mode)
-test/language/expressions/optional-chaining/new-target-optional-call.js(default)
-test/language/expressions/optional-chaining/new-target-optional-call.js(strict mode)
-test/language/expressions/optional-chaining/optional-call-preserves-this.js(default)
-test/language/expressions/optional-chaining/optional-call-preserves-this.js(strict mode)
-test/language/expressions/optional-chaining/optional-chain-async-optional-chain-square-brackets.js(default)
-test/language/expressions/optional-chaining/optional-chain-async-optional-chain-square-brackets.js(strict mode)
-test/language/expressions/optional-chaining/optional-chain-async-square-brackets.js(default)
-test/language/expressions/optional-chaining/optional-chain-async-square-brackets.js(strict mode)
-test/language/expressions/optional-chaining/optional-chain-expression-optional-expression.js(default)
-test/language/expressions/optional-chaining/optional-chain-expression-optional-expression.js(strict mode)
-test/language/expressions/optional-chaining/optional-chain.js(default)
-test/language/expressions/optional-chaining/optional-chain.js(strict mode)
-test/language/expressions/optional-chaining/optional-expression.js(default)
-test/language/expressions/optional-chaining/optional-expression.js(strict mode)
-test/language/expressions/optional-chaining/runtime-semantics-evaluation.js(default)
-test/language/expressions/optional-chaining/runtime-semantics-evaluation.js(strict mode)
-test/language/expressions/optional-chaining/short-circuiting.js(default)
-test/language/expressions/optional-chaining/short-circuiting.js(strict mode)
-test/language/expressions/optional-chaining/super-property-optional-call.js(default)
-test/language/expressions/optional-chaining/super-property-optional-call.js(strict mode)
 test/language/module-code/top-level-await/await-awaits-thenable-not-callable.js(default)
 test/language/module-code/top-level-await/await-awaits-thenable-not-callable.js(strict mode)
 test/language/module-code/top-level-await/await-awaits-thenables-that-throw.js(default)
@@ -9408,10 +8366,6 @@ test/language/module-code/top-level-await/await-expr-resolution.js(default)
 test/language/module-code/top-level-await/await-expr-resolution.js(strict mode)
 test/language/module-code/top-level-await/await-void-expr.js(default)
 test/language/module-code/top-level-await/await-void-expr.js(strict mode)
-test/language/module-code/top-level-await/dynamic-import-rejection.js(default)
-test/language/module-code/top-level-await/dynamic-import-rejection.js(strict mode)
-test/language/module-code/top-level-await/dynamic-import-resolution.js(default)
-test/language/module-code/top-level-await/dynamic-import-resolution.js(strict mode)
 test/language/module-code/top-level-await/if-await-expr.js(default)
 test/language/module-code/top-level-await/if-await-expr.js(strict mode)
 test/language/module-code/top-level-await/module-async-import-async-resolution-ticks.js(default)
@@ -10526,4 +9480,12 @@ test/language/statements/for-of/dstr/obj-prop-elem-target-obj-literal-prop-ref-i
 test/language/statements/for-of/dstr/obj-prop-elem-target-obj-literal-prop-ref-init.js(default)
 test/language/statements/for-of/dstr/obj-prop-elem-target-obj-literal-prop-ref-init.js(strict mode)
 test/language/statements/for-of/dstr/obj-prop-elem-target-obj-literal-prop-ref.js(default)
-test/language/statements/for-of/dstr/obj-prop-elem-target-obj-literal-prop-ref.js(strict mode)
\ No newline at end of file
+test/language/statements/for-of/dstr/obj-prop-elem-target-obj-literal-prop-ref.js(strict mode)
+test/language/expressions/import.meta/syntax/escape-sequence-import.js(default)
+test/language/expressions/import.meta/syntax/escape-sequence-import.js(strict mode)
+test/language/expressions/import.meta/syntax/escape-sequence-meta.js(default)
+test/language/expressions/import.meta/syntax/escape-sequence-meta.js(strict mode)
+test/language/expressions/optional-chaining/call-expression-super-no-base.js(default)
+test/language/expressions/optional-chaining/call-expression-super-no-base.js(strict mode)
+test/language/expressions/dynamic-import/escape-sequence-import.js(default)
+test/language/expressions/dynamic-import/escape-sequence-import.js(strict mode)
diff --git a/tests/test262/test.js b/tests/test262/test.js
index fd8ae58b..d18dc7bd 100644
--- a/tests/test262/test.js
+++ b/tests/test262/test.js
@@ -51,12 +51,9 @@ module.exports = function(test) {
 
   try {
     JSHint(test.contents, {
-      esversion: 10,
+      esversion: 11,
       maxerr: Infinity,
-      module: isModule,
-      unstable: {
-        bigint: true
-      }
+      module: isModule
     });
   } catch (e) {
     return false;
diff --git a/tests/unit/unstable/bigint.js b/tests/unit/bigint.js
similarity index 73%
rename from tests/unit/unstable/bigint.js
rename to tests/unit/bigint.js
index 3db2720a..26c6fae5 100644
--- a/tests/unit/unstable/bigint.js
+++ b/tests/unit/bigint.js
@@ -1,22 +1,22 @@
 "use strict";
 
-var TestRun = require("../../helpers/testhelper").setup.testRun;
+var TestRun = require("../helpers/testhelper").setup.testRun;
 
 exports.enabling = function (test) {
   TestRun(test, "Not enabled")
-    .addError(1, 6, "'BigInt' is a non-standard language feature. Enable it using the 'bigint' unstable option.")
-    .test("void 1n;", {esversion: 9});
+    .addError(1, 6, "'BigInt' is only available in ES11 (use 'esversion: 11').")
+    .test("void 1n;", {esversion: 10});
 
   TestRun(test, "Enabled via inline directive")
     .test([
-      "// jshint.unstable bigint: true",
+      "// jshint esversion: 11",
       "void 1n;"
-    ], {esversion: 9});
+    ], {esversion: 10});
 
   TestRun(test, "Enabled via configuration object")
     .test([
       "void 1n;"
-    ], {esversion: 9, unstable: {bigint: true}});
+    ], {esversion: 11});
 
   test.done();
 };
@@ -34,7 +34,7 @@ exports.validUsage = function(test) {
       "void 0b1n;",
       "void 0b01n;",
       "void 0b10n;",
-    ], {esversion: 6, unstable: {bigint: true}});
+    ], {esversion: 11});
 
   TestRun(test, 'No warnings for values that would otherwise coerce to Infinity')
     .test([
@@ -44,7 +44,7 @@ exports.validUsage = function(test) {
         "0000000000000000000000000000000000000000000000000000000000000000000" +
         "0000000000000000000000000000000000000000000000000000000000000000000" +
         "000000000000000000000000000000000000000000n;"
-    ], {esversion: 9, unstable: {bigint: true}});
+    ], {esversion: 11});
 
   test.done();
 };
@@ -54,51 +54,51 @@ exports.invalid = function (test) {
     .addError(1, 10, "A leading decimal point can be confused with a dot: '.1'.")
     .addError(1, 8, "Missing semicolon.")
     .addError(1, 8, "Expected an assignment or function call and instead saw an expression.")
-    .test("void 1n.1;", {esversion: 6, unstable: {bigint: true}});
+    .test("void 1n.1;", {esversion: 11});
 
   TestRun(test, "following decimal point")
     .addError(1, 6, "Unexpected '1'.")
     .addError(1, 1, "Unexpected early end of program.")
     .addError(1, 6, "Unrecoverable syntax error. (100% scanned).")
-    .test("void 1.1n;", {esversion: 6, unstable: {bigint: true}});
+    .test("void 1.1n;", {esversion: 11});
 
   TestRun(test, "preceding exponent")
     .addError(1, 6, "Unexpected '1'.")
     .addError(1, 1, "Unexpected early end of program.")
     .addError(1, 6, "Unrecoverable syntax error. (100% scanned).")
-    .test("void 1ne3;", {esversion: 6, unstable: {bigint: true}});
+    .test("void 1ne3;", {esversion: 11});
 
   TestRun(test, "following exponent")
     .addError(1, 6, "Unexpected '1'.")
     .addError(1, 1, "Unexpected early end of program.")
     .addError(1, 6, "Unrecoverable syntax error. (100% scanned).")
-    .test("void 1e3n;", {esversion: 6, unstable: {bigint: true}});
+    .test("void 1e3n;", {esversion: 11});
 
   TestRun(test, "invalid legacy octal")
     .addError(1, 6, "Malformed numeric literal: '01n'.")
-    .test("void 01n;", {esversion: 6, unstable: {bigint: true}});
+    .test("void 01n;", {esversion: 11});
 
   TestRun(test, "invalid leading 0")
     .addError(1, 6, "Malformed numeric literal: '08n'.")
-    .test("void 08n;", {esversion: 6, unstable: {bigint: true}});
+    .test("void 08n;", {esversion: 11});
 
   TestRun(test, "invalid hex digit")
     .addError(1, 8, "Malformed numeric literal: '0x'.")
     .addError(1, 8, "Missing semicolon.")
     .addError(1, 8, "Expected an assignment or function call and instead saw an expression.")
-    .test("void 0xgn;", {esversion: 6, unstable: {bigint: true}});
+    .test("void 0xgn;", {esversion: 11});
 
   TestRun(test, "invalid binary digit")
     .addError(1, 8, "Malformed numeric literal: '0b'.")
     .addError(1, 8, "Missing semicolon.")
     .addError(1, 8, "Expected an assignment or function call and instead saw an expression.")
-    .test("void 0b2n;", {esversion: 6, unstable: {bigint: true}});
+    .test("void 0b2n;", {esversion: 11});
 
   TestRun(test, "invalid octal digit")
     .addError(1, 8, "Malformed numeric literal: '0o'.")
     .addError(1, 8, "Missing semicolon.")
     .addError(1, 8, "Expected an assignment or function call and instead saw an expression.")
-    .test("void 0o8n;", {esversion: 6, unstable: {bigint: true}});
+    .test("void 0o8n;", {esversion: 11});
 
   test.done();
 };
diff --git a/tests/unit/core.js b/tests/unit/core.js
index fe7e305c..0d989788 100644
--- a/tests/unit/core.js
+++ b/tests/unit/core.js
@@ -875,8 +875,8 @@ exports.testES6Modules = function (test) {
   ];
 
   var testRun = TestRun(test)
-    .addError(74, 1, "Empty export: this is unnecessary and can be removed.")
-    .addError(75, 1, "Empty export: consider replacing with `import 'source';`.");
+    .addError(75, 1, "Empty export: this is unnecessary and can be removed.")
+    .addError(76, 1, "Empty export: consider replacing with `import 'source';`.");
   importConstErrors.forEach(function(error) { testRun.addError.apply(testRun, error); });
   testRun.test(src, {esnext: true});
 
@@ -891,7 +891,6 @@ exports.testES6Modules = function (test) {
     .addError(10, 1, "'import' is only available in ES6 (use 'esversion: 6').")
     .addError(11, 1, "'import' is only available in ES6 (use 'esversion: 6').")
     .addError(22, 1, "'export' is only available in ES6 (use 'esversion: 6').")
-    .addError(26, 1, "'export' is only available in ES6 (use 'esversion: 6').")
     .addError(30, 1, "'export' is only available in ES6 (use 'esversion: 6').")
     .addError(31, 1, "'export' is only available in ES6 (use 'esversion: 6').")
     .addError(32, 1, "'export' is only available in ES6 (use 'esversion: 6').")
@@ -900,8 +899,6 @@ exports.testES6Modules = function (test) {
     .addError(44, 1, "'export' is only available in ES6 (use 'esversion: 6').")
     .addError(46, 1, "'export' is only available in ES6 (use 'esversion: 6').")
     .addError(47, 8, "'class' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
-    .addError(48, 1, "'export' is only available in ES6 (use 'esversion: 6').")
-    .addError(48, 16, "'class' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
     .addError(47, 1, "'export' is only available in ES6 (use 'esversion: 6').")
     .addError(46, 8, "'class' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
     .addError(57, 1, "'import' is only available in ES6 (use 'esversion: 6').")
@@ -912,11 +909,11 @@ exports.testES6Modules = function (test) {
     .addError(67, 1, "'export' is only available in ES6 (use 'esversion: 6').")
     .addError(67, 16, "'function*' is only available in ES6 (use 'esversion: 6').")
     .addError(67, 26, "'yield' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
-    .addError(70, 1, "'export' is only available in ES6 (use 'esversion: 6').")
-    .addError(71, 1, "'import' is only available in ES6 (use 'esversion: 6').")
-    .addError(74, 1, "'export' is only available in ES6 (use 'esversion: 6').")
+    .addError(71, 1, "'export' is only available in ES6 (use 'esversion: 6').")
+    .addError(72, 1, "'import' is only available in ES6 (use 'esversion: 6').")
     .addError(75, 1, "'export' is only available in ES6 (use 'esversion: 6').")
-    .addError(76, 1, "'import' is only available in ES6 (use 'esversion: 6').")
+    .addError(76, 1, "'export' is only available in ES6 (use 'esversion: 6').")
+    .addError(77, 1, "'import' is only available in ES6 (use 'esversion: 6').")
     .test(src);
 
   var src2 = [
@@ -929,6 +926,18 @@ exports.testES6Modules = function (test) {
   TestRun(test)
     .test(src2, {});
 
+  TestRun(test)
+    .test([
+      "export default function() {",
+      "  return 'foobar';",
+      "}"
+    ], {esversion: 6});
+
+  TestRun(test)
+    .test([
+      "export default class Bar {}"
+    ], {esversion: 6});
+
   // See gh-3055 "Labels Break JSHint"
   TestRun(test, "following labeled block")
     .test([
@@ -990,6 +999,138 @@ exports.testES6Modules = function (test) {
       "export default async function * () { yield 0; await 0; }",
     ], { esversion: 9, module: true });
 
+  TestRun(test, "IdentifierName in renamed import/export")
+    .test([
+      "import { if as x } from '.';",
+      "export { x as if } from '.';"
+    ], { esversion: 6, module: true });
+
+  test.done();
+};
+
+exports.testES6ModuleDuplicateExport = function (test) {
+  TestRun(test, "Same declaration, adjacent")
+    .addError(2, 13, "Duplicate exported binding: 'x'.")
+    .test([
+      "var x;",
+      "export { x, x };"
+    ], { esversion: 6, module: true });
+
+  TestRun(test, "Same declaration, removed")
+    .addError(2, 16, "Duplicate exported binding: 'y'.")
+    .test([
+      "var y, z;",
+      "export { y, z, y };"
+    ], { esversion: 6, module: true });
+
+  TestRun(test, "Same declaration, renamed")
+    .addError(2, 18, "Duplicate exported binding: 'y'.")
+    .test([
+      "var y, z;",
+      "export { y, z as y };"
+    ], { esversion: 6, module: true });
+
+  TestRun(test, "Distinct declarations, by reference")
+    .addError(3, 10, "Duplicate exported binding: 'z'.")
+    .test([
+      "var z;",
+      "export { z };",
+      "export { z };"
+    ], { esversion: 6, module: true });
+
+  TestRun(test, "Distinct declarations, by reference, renamed")
+    .addError(3, 15, "Duplicate exported binding: 'y'.")
+    .test([
+      "var y, z;",
+      "export { y };",
+      "export { z as y };"
+    ], { esversion: 6, module: true });
+
+  TestRun(test, "Distinct declarations, default")
+    .addError(2, 8, "Duplicate exported binding: 'default'.")
+    .test([
+      "export default 0;",
+      "export default 0;"
+    ], { esversion: 6, module: true });
+
+  TestRun(test, "Distinct declarations, by reference, default/renamed")
+    .addError(3, 15, "Duplicate exported binding: 'default'.")
+    .test([
+      "var x;",
+      "export default 0;",
+      "export { x as default };"
+    ], { esversion: 6, module: true });
+
+  TestRun(test, "Distinct declarations, by reference, renamed/default")
+    .addError(3, 8, "Duplicate exported binding: 'default'.")
+    .test([
+      "var x;",
+      "export { x as default };",
+      "export default 0;"
+    ], { esversion: 6, module: true });
+
+  TestRun(test, "Distinct declarations, by statement - var")
+    .addError(2, 10, "Duplicate exported binding: 'a'.")
+    .test([
+      "export var a;",
+      "export { a };"
+    ], { esversion: 6, module: true });
+
+  TestRun(test, "Distinct declarations, by statement - let")
+    .addError(2, 10, "Duplicate exported binding: 'b'.")
+    .test([
+      "export let b;",
+      "export { b };"
+    ], { esversion: 6, module: true });
+
+  TestRun(test, "Distinct declarations, by statement - const")
+    .addError(2, 10, "Duplicate exported binding: 'c'.")
+    .test([
+      "export const c = null;",
+      "export { c };"
+    ], { esversion: 6, module: true });
+
+  TestRun(test, "Distinct declarations, by statement - function")
+    .addError(2, 10, "Duplicate exported binding: 'd'.")
+    .test([
+      "export function d() {}",
+      "export { d };"
+    ], { esversion: 6, module: true });
+
+  TestRun(test, "Distinct declarations, by statement - class")
+    .addError(2, 10, "Duplicate exported binding: 'e'.")
+    .test([
+      "export class e {}",
+      "export { e };"
+    ], { esversion: 6, module: true });
+
+  test.done();
+};
+
+exports.testExportStar = function (test) {
+  TestRun(test, "rejects earlier language editions")
+    .addError(1, 8, "'export * as ns from' is only available in ES11 (use 'esversion: 11').")
+    .test([
+      "export * as x from '.';"
+    ], { esversion: 10, module: true });
+
+  TestRun(test, "minimal esversion")
+    .test([
+      "export * as x from '.';"
+    ], { esversion: 11, module: true });
+
+  TestRun(test, "tolerates any IdentifierName")
+    .test([
+      "export * as if from '.';"
+    ], { esversion: 11, module: true });
+
+  TestRun(test, "detects duplicate bindings")
+    .addError(2, 13, "Duplicate exported binding: 'x'.")
+    .test([
+      "export * as x from '.';",
+      "export * as x from '.';"
+    ], { esversion: 11, module: true });
+
   test.done();
 };
 
@@ -1015,7 +1156,10 @@ exports.testES6ModulesNamedExportsAffectUnused = function (test) {
     "export var v1u, v2u;",
     "export let l1u, l2u;",
     "export const c1u, c2u;",
-    "export function* gen() { yield 1; }"
+    "export function* gen() { yield 1; }",
+    "export var { varX } = 0;",
+    "export let { letX } = 0;",
+    "export const { constX } = 0;"
   ];
 
   TestRun(test)
@@ -1292,10 +1436,7 @@ exports.testES6ModulesDefaultExportsAffectUnused = function (test) {
     "  bar: 'bar'",
     "};",
     "var x = 23;",
-    "var z = 42;",
-    "export default { a: a, x: x };",
-    "export default function boo() { return x + z; }",
-    "export default class MyClass { }"
+    "export default { a: a, x: x };"
   ];
 
   TestRun(test)
@@ -1304,6 +1445,28 @@ exports.testES6ModulesDefaultExportsAffectUnused = function (test) {
       unused: true
     });
 
+  TestRun(test)
+    .test([
+      "var x = 23;",
+      "var z = 42;",
+      "export default function boo() { return x + z; }"
+    ], {
+      esnext: true,
+      unused: true
+    });
+
+  TestRun(test)
+    .test("export default class MyClass { }", {
+      esnext: true,
+      unused: true
+    });
+
+  TestRun(test)
+    .test("export default class {}", {
+      esnext: true,
+      unused: true
+    });
+
   test.done();
 };
 
@@ -1610,19 +1773,19 @@ exports.testDefaultArguments = function (test) {
   var src = fs.readFileSync(__dirname + "/fixtures/default-arguments.js", "utf8");
   TestRun(test)
     .addError(14, 39, "'bar' is not defined.")
-    .addError(14, 32, "'num3' was used before it was declared, which is illegal for 'param' variables.")
-    .addError(15, 32, "'num4' was used before it was declared, which is illegal for 'param' variables.")
+    .addError(14, 32, "'num3' was used before it was defined.")
+    .addError(15, 32, "'num4' was used before it was defined.")
     .addError(18, 41, "Regular parameters should not come after default parameters.")
     .addError(27, 10, "'c' is not defined.")
     .addError(33, 4, "'d' was used before it was defined.")
-    .addError(36, 16, "'e' was used before it was declared, which is illegal for 'param' variables.")
+    .addError(36, 16, "'e' was used before it was defined.")
     .test(src, { esnext: true, undef: true, latedef: true });
 
   TestRun(test)
-    .addError(14, 32, "'num3' was used before it was declared, which is illegal for 'param' variables.")
-    .addError(15, 32, "'num4' was used before it was declared, which is illegal for 'param' variables.")
+    .addError(14, 32, "'num3' was used before it was defined.")
+    .addError(15, 32, "'num4' was used before it was defined.")
     .addError(18, 41, "Regular parameters should not come after default parameters.")
-    .addError(36, 16, "'e' was used before it was declared, which is illegal for 'param' variables.")
+    .addError(36, 16, "'e' was used before it was defined.")
     .test(src, { moz: true });
 
   TestRun(test)
@@ -1632,9 +1795,9 @@ exports.testDefaultArguments = function (test) {
     .addError(12, 37, "'default parameters' is only available in ES6 (use 'esversion: 6').")
     .addError(13, 37, "'default parameters' is only available in ES6 (use 'esversion: 6').")
     .addError(14, 37, "'default parameters' is only available in ES6 (use 'esversion: 6').")
-    .addError(14, 32, "'num3' was used before it was declared, which is illegal for 'param' variables.")
+    .addError(14, 32, "'num3' was used before it was defined.")
     .addError(15, 37, "'default parameters' is only available in ES6 (use 'esversion: 6').")
-    .addError(15, 32, "'num4' was used before it was declared, which is illegal for 'param' variables.")
+    .addError(15, 32, "'num4' was used before it was defined.")
     .addError(18, 37, "'default parameters' is only available in ES6 (use 'esversion: 6').")
     .addError(18, 41, "Regular parameters should not come after default parameters.")
     .addError(26, 18, "'default parameters' is only available in ES6 (use 'esversion: 6').")
@@ -1642,12 +1805,24 @@ exports.testDefaultArguments = function (test) {
     .addError(33, 6, "'default parameters' is only available in ES6 (use 'esversion: 6').")
     .addError(35, 18, "'default parameters' is only available in ES6 (use 'esversion: 6').")
     .addError(36, 18, "'default parameters' is only available in ES6 (use 'esversion: 6').")
-    .addError(36, 16, "'e' was used before it was declared, which is illegal for 'param' variables.")
+    .addError(36, 16, "'e' was used before it was defined.")
     .test(src, {  });
 
   test.done();
 };
 
+exports.testEarlyCatchParam = function (test) {
+  TestRun(test)
+    .addError(2, 18, "'y' was used before it was defined.")
+    .test([
+      "try {",
+      "} catch ([x = y, y]) {",
+      "}"
+    ], { esversion: 6 });
+
+  test.done();
+};
+
 exports.testDuplicateParamNames = function (test) {
   var src = [
   "(function() {",
diff --git a/tests/unit/dynamic-import.js b/tests/unit/dynamic-import.js
new file mode 100644
index 00000000..151768d5
--- /dev/null
+++ b/tests/unit/dynamic-import.js
@@ -0,0 +1,62 @@
+/**
+ * Tests for the parser/tokenizer
+ */
+
+"use strict";
+
+var JSHINT  = require("../..").JSHINT;
+var fs    = require('fs');
+var TestRun = require("../helpers/testhelper").setup.testRun;
+var path    = require("path");
+
+exports.dynamicImport = {};
+
+exports.dynamicImport.valid = function (test) {
+  TestRun(test)
+    .test([
+        "import(0);",
+        "import(0 ? 0 : 0);",
+        "(function * () { ",
+        "  import(yield);",
+        "})();",
+        "import(() => {});",
+        "import(async () => {});",
+        "import(x = 0);",
+        "new (import(0))();",
+        "import(import(0));",
+      ], {esversion: 11});
+
+  test.done();
+};
+
+exports.dynamicImport.invalidvalid = function (test) {
+  TestRun(test, "empty")
+    .addError(1, 8, "Expected an identifier and instead saw ')'.")
+    .addError(1, 9, "Expected ')' and instead saw ';'.")
+    .addError(1, 10, "Missing semicolon.")
+    .test("import();", {esversion: 11});
+
+  TestRun(test, "expression")
+    .addError(1, 11, "Expected ')' and instead saw ','.")
+    .addError(1, 12, "Missing semicolon.")
+    .addError(1, 13, "Expected an assignment or function call and instead saw an expression.")
+    .addError(1, 16, "Missing semicolon.")
+    .addError(1, 16, "Expected an identifier and instead saw ')'.")
+    .addError(1, 16, "Expected an assignment or function call and instead saw an expression.")
+    .test("import('a', 'b');", {esversion: 11});
+
+  TestRun(test, "NewExpression")
+    .addError(1, 5, "Unexpected 'import'.")
+    .addError(1, 13, "Missing '()' invoking a constructor.")
+    .test("new import(0);", {esversion: 11});
+
+  test.done();
+};
+
+exports.dynamicImport.esversion = function (test) {
+  TestRun(test)
+    .addError(1, 1, "'dynamic import' is only available in ES11 (use 'esversion: 11').")
+    .test("import(0);", {esversion: 10});
+
+  test.done();
+};
diff --git a/tests/unit/fixtures/es6-import-export.js b/tests/unit/fixtures/es6-import-export.js
index fe0088a7..cb5a21ac 100644
--- a/tests/unit/fixtures/es6-import-export.js
+++ b/tests/unit/fixtures/es6-import-export.js
@@ -21,11 +21,11 @@ function foobar() {}
 
 export default foobar;
 
-// at some point doing a double export default should error, but for now,
-// makes testing a hell of a lot easier
-export default function() {
-  return "foobar";
-}
+
+
+
+
+
 
 export { foo };
 export { foo, bar } from "source";
@@ -45,7 +45,7 @@ export var c = "c";
 
 export class Foo {}
 export class List extends Array {}
-export default class Bar {}
+
 
 // imports are const's and cannot be re-assigned
 $ = null;
@@ -67,7 +67,8 @@ import newImport from 'newImport';
 export function* gen() { yield 1; }
 
 // Trailing comma
-export { a, };
+var w;
+export { w, };
 import { x, } from "source";
 
 // Empty
diff --git a/tests/unit/options.js b/tests/unit/options.js
index e3dcdd09..ca0d5432 100644
--- a/tests/unit/options.js
+++ b/tests/unit/options.js
@@ -311,7 +311,7 @@ exports.notypeof = function (test) {
     .addError(3, 17, "Invalid typeof value 'bool'")
     .addError(4, 11, "Invalid typeof value 'obj'")
     .addError(13, 17, "Invalid typeof value 'symbol'")
-    .addError(14, 21, "'BigInt' is a non-standard language feature. Enable it using the 'bigint' unstable option.")
+    .addError(14, 21, "'BigInt' is only available in ES11 (use 'esversion: 11').")
     .test(src);
 
   TestRun(test)
@@ -319,7 +319,7 @@ exports.notypeof = function (test) {
     .addError(2, 14, "Invalid typeof value 'double'")
     .addError(3, 17, "Invalid typeof value 'bool'")
     .addError(4, 11, "Invalid typeof value 'obj'")
-    .addError(14, 21, "'BigInt' is a non-standard language feature. Enable it using the 'bigint' unstable option.")
+    .addError(14, 21, "'BigInt' is only available in ES11 (use 'esversion: 11').")
     .test(src, { esnext: true });
 
   TestRun(test)
@@ -327,7 +327,7 @@ exports.notypeof = function (test) {
     .addError(2, 14, "Invalid typeof value 'double'")
     .addError(3, 17, "Invalid typeof value 'bool'")
     .addError(4, 11, "Invalid typeof value 'obj'")
-    .test(src, { esnext: true, unstable: { bigint: true } });
+    .test(src, { esversion: 11 });
 
   TestRun(test)
     .test(src, { notypeof: true });
@@ -2748,6 +2748,12 @@ exports.maxcomplexity = function (test) {
   TestRun(test)
     .test(src, { es3: true });
 
+  TestRun(test, "nullish coalescing operator")
+    .addError(1, 11, "This function's cyclomatic complexity is too high. (2)")
+    .test([
+      "function f() { 0 ?? 0; }"
+    ], { esversion: 11, expr: true, maxcomplexity: 1 });
+
   test.done();
 };
 
@@ -3682,6 +3688,50 @@ singleGroups.destructuringAssign = function (test) {
   test.done();
 };
 
+singleGroups.nullishCoalescing = function (test) {
+  TestRun(test)
+    .addError(1, 1, "Unnecessary grouping operator.")
+    .addError(2, 6, "Unnecessary grouping operator.")
+    .test([
+      "(0) ?? 0;",
+      "0 ?? (0);"
+    ], { singleGroups: true, expr: true, esversion: 11 });
+
+  TestRun(test)
+    .test([
+      "0 ?? (0 || 0);",
+      "(0 ?? 0) || 0;",
+      "0 ?? (0 && 0);",
+      "(0 ?? 0) && 0;"
+    ], { singleGroups: true, expr: true, esversion: 11 });
+
+  test.done();
+};
+
+singleGroups.optionalChaining = function (test) {
+  var code = [
+    "new ({}?.constructor)();",
+    "({}?.toString)``;",
+    // Invalid forms:
+    "([])?.x;",
+    "([]?.x).x;",
+    "([]?.x)?.x;"
+  ];
+
+  TestRun(test)
+    .addError(1, 21, "Bad constructor.")
+    .addError(2, 15, "Expected an assignment or function call and instead saw an expression.")
+    .addError(3, 1, "Unnecessary grouping operator.")
+    .addError(3, 7, "Expected an assignment or function call and instead saw an expression.")
+    .addError(4, 1, "Unnecessary grouping operator.")
+    .addError(4, 9, "Expected an assignment or function call and instead saw an expression.")
+    .addError(5, 1, "Unnecessary grouping operator.")
+    .addError(5, 10, "Expected an assignment or function call and instead saw an expression.")
+    .test(code, { singleGroups: true, esversion: 11 });
+
+  test.done();
+};
+
 exports.elision = function (test) {
   var code = [
     "var a = [1,,2];",
@@ -4251,13 +4301,15 @@ exports.esversion = function(test) {
     "// jshint esversion: 10",
     "// jshint esversion: 2019",
     "// jshint esversion: 11",
-    "// jshint esversion: 2020"
+    "// jshint esversion: 2020",
+    "// jshint esversion: 12",
+    "// jshint esversion: 2021"
   ];
 
   TestRun(test, "Value")
     .addError(2, 1, "Bad option value.")
-    .addError(14, 1, "Bad option value.")
-    .addError(15, 1, "Bad option value.")
+    .addError(16, 1, "Bad option value.")
+    .addError(17, 1, "Bad option value.")
     .test(code);
 
   var es5code = [
diff --git a/tests/unit/parser.js b/tests/unit/parser.js
index f58b73a9..70bab699 100644
--- a/tests/unit/parser.js
+++ b/tests/unit/parser.js
@@ -10263,3 +10263,236 @@ exports.asyncIteration = function (test) {
 
   test.done();
 };
+
+exports.parensAfterDeclaration = function (test) {
+  TestRun(test)
+    .addError(1, 17, "Function declarations are not invocable. Wrap the whole function invocation in parens.")
+    .addError(1, 18, "Expected an assignment or function call and instead saw an expression.")
+    .test("function f () {}();");
+
+  TestRun(test)
+    .addError(1, 19, "Expected an assignment or function call and instead saw an expression.")
+    .test("function f () {}(0);");
+
+  TestRun(test)
+    .addError(1, 24, "Expected an assignment or function call and instead saw an expression.")
+    .test("function f () {}() => {};", {esversion: 6});
+
+  test.done();
+};
+
+exports.importMeta = function (test) {
+  TestRun(test)
+    .addError(1, 6, "Expected an identifier and instead saw 'import' (a reserved word).")
+    .test("void import;");
+
+  TestRun(test)
+    .addError(1, 6, "Expected an identifier and instead saw 'import' (a reserved word).")
+    .test(
+      "void import;",
+      { esversion: 11 }
+    );
+
+  TestRun(test)
+    .addError(1, 12, "'import.meta' is only available in ES11 (use 'esversion: 11').")
+    .addError(1, 12, "import.meta may only be used in module code.")
+    .test(
+      "void import.meta;",
+      { esversion: 10 }
+    );
+
+  TestRun(test)
+    .addError(1, 12, "import.meta may only be used in module code.")
+    .test(
+      "void import.meta;",
+      { esversion: 11 }
+    );
+
+  TestRun(test, "valid usage (expression position)")
+    .test(
+      "void import.meta;",
+      { esversion: 11, module: true }
+    );
+
+  TestRun(test, "valid usage (statement position)")
+    .addError(1, 8, "Expected an assignment or function call and instead saw an expression.")
+    .test(
+      "import.meta;",
+      { esversion: 11, module: true }
+    );
+
+  TestRun(test, "Other property name (expression position)")
+    .addError(1, 12, "Invalid meta property: 'import.target'.")
+    .test(
+      "void import.target;",
+      { esversion: 11, module: true }
+    );
+
+  TestRun(test, "Other property name (statement position)")
+    .addError(1, 7, "Invalid meta property: 'import.target'.")
+    .addError(1, 8, "Expected an assignment or function call and instead saw an expression.")
+    .test(
+      "import.target;",
+      { esversion: 11, module: true }
+    );
+
+  test.done();
+};
+
+exports.nullishCoalescing = {};
+
+exports.nullishCoalescing.positive = function(test) {
+  TestRun(test, "requires esversion: 11")
+    .addError(1, 3, "'nullish coalescing' is only available in ES11 (use 'esversion: 11').")
+    .test([
+      "0 ?? 0;"
+    ], { esversion: 10, expr: true });
+
+  TestRun(test, "does not stand alone")
+    .addError(1, 6, "Expected an assignment or function call and instead saw an expression.")
+    .test([
+      "0 ?? 0;"
+    ], { esversion: 11 });
+
+  TestRun(test, "precedence with bitwise OR")
+    .test([
+      "0 | 0 ?? 0;"
+    ], { esversion: 11, expr: true });
+
+  TestRun(test, "precedence with conditional expression")
+    .test([
+      "0 ?? 0 ? 0 ?? 0 : 0 ?? 0;"
+    ], { esversion: 11, expr: true });
+
+  TestRun(test, "precedence with expression")
+    .test([
+      "0 ?? 0, 0 ?? 0;"
+    ], { esversion: 11, expr: true });
+
+  TestRun(test, "covered")
+    .test([
+      "0 || (0 ?? 0);",
+      "(0 || 0) ?? 0;",
+      "(0 ?? 0) || 0;",
+      "0 ?? (0 || 0);",
+      "0 && (0 ?? 0);",
+      "(0 && 0) ?? 0;",
+      "(0 ?? 0) && 0;",
+      "0 ?? (0 && 0);"
+    ], { esversion: 11, expr: true });
+
+  test.done();
+};
+
+exports.nullishCoalescing.negative = function(test) {
+  TestRun(test, "precedence with logical OR")
+    .addError(1, 8, "Unexpected '??'.")
+    .test([
+      "0 || 0 ?? 0;"
+    ], { esversion: 11, expr: true });
+
+  TestRun(test, "precedence with logical OR")
+    .addError(1, 8, "Unexpected '||'.")
+    .test([
+      "0 ?? 0 || 0;"
+    ], { esversion: 11, expr: true });
+
+  TestRun(test, "precedence with logical AND")
+    .addError(1, 8, "Unexpected '??'.")
+    .test([
+      "0 && 0 ?? 0;"
+    ], { esversion: 11, expr: true });
+
+  TestRun(test, "precedence with logical AND")
+    .addError(1, 8, "Unexpected '&&'.")
+    .test([
+      "0 ?? 0 && 0;"
+    ], { esversion: 11, expr: true });
+
+  test.done();
+};
+
+exports.optionalChaining = function (test) {
+  TestRun(test, "prior language editions")
+    .addError(1, 5, "'Optional chaining' is only available in ES11 (use 'esversion: 11').")
+    .addError(1, 7, "Expected an assignment or function call and instead saw an expression.")
+    .test(
+      "true?.x;",
+      { esversion: 10 }
+    );
+
+  TestRun(test, "literal property name")
+    .addError(1, 7, "Expected an assignment or function call and instead saw an expression.")
+    .addError(2, 5, "Expected an assignment or function call and instead saw an expression.")
+    .addError(3, 7, "Expected an assignment or function call and instead saw an expression.")
+    .test([
+        "true?.x;",
+        "[]?.x;",
+        "({}?.x);"
+      ], { esversion: 11 }
+    );
+
+  TestRun(test, "literal property name restriction")
+    .addError(1, 40, "Expected an assignment or function call and instead saw an expression.")
+    .addError(1, 46, "Strict violation.")
+    .test(
+      "(function() { 'use strict'; arguments?.callee; })();",
+      { esversion: 11 }
+    );
+
+  TestRun(test, "dynamic property name")
+    .addError(1, 14, "Expected an assignment or function call and instead saw an expression.")
+    .addError(2, 11, "Expected an assignment or function call and instead saw an expression.")
+    .addError(2, 7, "['x'] is better written in dot notation.")
+    .test([
+        "true?.[void 0];",
+        "true?.['x'];"
+      ], { esversion: 11 }
+    );
+
+  TestRun(test, "arguments")
+    .addError(1, 10, "Expected an assignment or function call and instead saw an expression.")
+    .addError(2, 14, "Expected an assignment or function call and instead saw an expression.")
+    .addError(3, 20, "Expected an assignment or function call and instead saw an expression.")
+    .addError(4, 15, "Expected an assignment or function call and instead saw an expression.")
+    .test([
+        "true.x?.();",
+        "true.x?.(true);",
+        "true.x?.(true, true);",
+        "true.x?.(...[]);"
+      ], { esversion: 11 }
+    );
+
+  TestRun(test, "new")
+    .addError(1, 7, "Unexpected '?.'.")
+    .test(
+      "new {}?.constructor();",
+      { esversion: 11 }
+    );
+
+  TestRun(test, "template invocation - literal property name")
+    .addError(1, 15, "Expected an assignment or function call and instead saw an expression.")
+    .addError(1, 15, "Unexpected '`'.")
+    .test(
+      "true?.toString``;",
+      { esversion: 11 }
+    );
+
+  TestRun(test, "template invocation - dynamic property name")
+    .addError(1, 15, "Expected an assignment or function call and instead saw an expression.")
+    .addError(1, 15, "Unexpected '`'.")
+    .test(
+      "true?.[void 0]``;",
+      { esversion: 11 }
+    );
+
+  TestRun(test, "ternary")
+    .addError(1, 8, "A leading decimal point can be confused with a dot: '.1'.")
+    .addError(1, 11, "Expected an assignment or function call and instead saw an expression.")
+    .test(
+      "true?.1 : null;",
+      { esversion: 11 }
+    );
+
+  test.done();
+};