Repository: jshint/jshint
Pull request #3432 (2019-11-10 02:29:23)

Version 2.11.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!

We're expecting to introduce some fairly comprehensive refactorings in this
release. To mitigate the risk of regression, we'll publish a release candidate,
first.




Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 18236637..22dcd957 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,32 @@
+<a name="2.11.0"></a>
+# [2.11.0](https://github.com/jshint/jshint/compare/2.11.0-rc1...v2.11.0) (2020-01-13)
+
+This release was previously published using the "release candidate" pattern. No
+regressions were reported in the four weeks that followed, so the change set is
+being promoted to a true "minor" release.
+
+The release notes for version 2.11.0-rc1 completely describes the changes
+included in this version.
+
+<a name="2.11.0-rc1"></a>
+# [2.11.0-rc1](https://github.com/jshint/jshint/compare/2.10.3...v2.11.0-rc1) (2019-12-11)
+
+In addition to bug fixes and new features, this release candidate includes a
+few refactorings which are not expected to influence JSHint's behavior.
+
+### Bug Fixes
+
+* Expose new `typeof` value experimentally ([dcef79a](https://github.com/jshint/jshint/commit/dcef79a))
+* Improve parsing of `yield` ([6fdb4f6](https://github.com/jshint/jshint/commit/6fdb4f6))
+* Improve parsing of comma operator ([897e035](https://github.com/jshint/jshint/commit/897e035))
+* Support spaces in /*global ... */ ([e542f67](https://github.com/jshint/jshint/commit/e542f67))
+
+### Features
+
+* Add support for "bigint" typeof value ([ce0b7b3](https://github.com/jshint/jshint/commit/ce0b7b3))
+* Add support for BigInt literals ([c340e55](https://github.com/jshint/jshint/commit/c340e55))
+* Add support for ES2019 opt. catch param ([43b6354](https://github.com/jshint/jshint/commit/43b6354))
+
 <a name="2.10.3"></a>
 ## [2.10.3](https://github.com/jshint/jshint/compare/2.10.2...v2.10.3) (2019-11-04)
 
diff --git a/dist/jshint-rhino.js b/dist/jshint-rhino.js
index a86007e5..be529ddf 100755
--- a/dist/jshint-rhino.js
+++ b/dist/jshint-rhino.js
@@ -1,6 +1,6 @@
 #!/usr/bin/env rhino
 var window = {};
-/*! 2.10.3 */
+/*! 2.11.0 */
 var JSHINT;
 if (typeof window === 'undefined') window = {};
 (function () {
@@ -1026,7 +1026,7 @@ function hasOwnProperty(obj, prop) {
 }
 
 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"./support/isBuffer":7,"_process":10,"inherits":6}],9:[function(require,module,exports){
+},{"./support/isBuffer":7,"_process":11,"inherits":6}],9:[function(require,module,exports){
 // Copyright Joyent, Inc. and other Node contributors.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
@@ -1330,6 +1330,8 @@ function isUndefined(arg) {
 }
 
 },{}],10:[function(require,module,exports){
+arguments[4][6][0].apply(exports,arguments)
+},{"dup":6}],11:[function(require,module,exports){
 // shim for using process in browser
 
 var process = module.exports = {};
@@ -1389,13 +1391,11 @@ process.chdir = function (dir) {
 };
 process.umask = function() { return 0; };
 
-},{}],11:[function(require,module,exports){
-arguments[4][6][0].apply(exports,arguments)
-},{"dup":6}],12:[function(require,module,exports){
+},{}],12:[function(require,module,exports){
 arguments[4][7][0].apply(exports,arguments)
 },{"dup":7}],13:[function(require,module,exports){
 arguments[4][8][0].apply(exports,arguments)
-},{"./support/isBuffer":12,"_process":10,"dup":8,"inherits":11}],14:[function(require,module,exports){
+},{"./support/isBuffer":12,"_process":11,"dup":8,"inherits":10}],14:[function(require,module,exports){
 (function (global){
 /*global window, global*/
 var util = require("util")
@@ -1497,7 +1497,7 @@ function now() {
 /**
  * @license
  * Lodash <https://lodash.com/>
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
+ * Copyright JS Foundation and other contributors <https://js.foundation/>
  * Released under MIT license <https://lodash.com/license>
  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
@@ -1508,7 +1508,7 @@ function now() {
   var undefined;
 
   /** Used as the semantic version number. */
-  var VERSION = '4.17.15';
+  var VERSION = '4.17.11';
 
   /** Used as the size to enable large array optimizations. */
   var LARGE_ARRAY_SIZE = 200;
@@ -4167,10 +4167,16 @@ function now() {
         value.forEach(function(subValue) {
           result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
         });
-      } else if (isMap(value)) {
+
+        return result;
+      }
+
+      if (isMap(value)) {
         value.forEach(function(subValue, key) {
           result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
         });
+
+        return result;
       }
 
       var keysFunc = isFull
@@ -5094,8 +5100,8 @@ function now() {
         return;
       }
       baseFor(source, function(srcValue, key) {
-        stack || (stack = new Stack);
         if (isObject(srcValue)) {
+          stack || (stack = new Stack);
           baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
         }
         else {
@@ -6912,7 +6918,7 @@ function now() {
       return function(number, precision) {
         number = toNumber(number);
         precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
-        if (precision && nativeIsFinite(number)) {
+        if (precision) {
           // Shift with exponential notation to avoid floating-point issues.
           // See [MDN](https://mdn.io/round#Examples) for more details.
           var pair = (toString(number) + 'e').split('e'),
@@ -8095,7 +8101,7 @@ function now() {
     }
 
     /**
-     * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
+     * Gets the value at `key`, unless `key` is "__proto__".
      *
      * @private
      * @param {Object} object The object to query.
@@ -8103,10 +8109,6 @@ function now() {
      * @returns {*} Returns the property value.
      */
     function safeGet(object, key) {
-      if (key === 'constructor' && typeof object[key] === 'function') {
-        return;
-      }
-
       if (key == '__proto__') {
         return;
       }
@@ -11907,7 +11909,6 @@ function now() {
           }
           if (maxing) {
             // Handle invocations in a tight loop.
-            clearTimeout(timerId);
             timerId = setTimeout(timerExpired, wait);
             return invokeFunc(lastCallTime);
           }
@@ -16294,12 +16295,9 @@ function now() {
       , 'g');
 
       // Use a sourceURL for easier debugging.
-      // The sourceURL gets injected into the source that's eval-ed, so be careful
-      // with lookup (in case of e.g. prototype pollution), and strip newlines if any.
-      // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.
       var sourceURL = '//# sourceURL=' +
-        (hasOwnProperty.call(options, 'sourceURL')
-          ? (options.sourceURL + '').replace(/[\r\n]/g, ' ')
+        ('sourceURL' in options
+          ? options.sourceURL
           : ('lodash.templateSources[' + (++templateCounter) + ']')
         ) + '\n';
 
@@ -16332,9 +16330,7 @@ function now() {
 
       // If `variable` is not specified wrap a with-statement around the generated
       // code to add the data object to the top of the scope chain.
-      // Like with sourceURL, we take care to not check the option's prototype,
-      // as this configuration is a code injection vector.
-      var variable = hasOwnProperty.call(options, 'variable') && options.variable;
+      var variable = options.variable;
       if (!variable) {
         source = 'with (obj) {\n' + source + '\n}\n';
       }
@@ -18539,11 +18535,10 @@ function now() {
     baseForOwn(LazyWrapper.prototype, function(func, methodName) {
       var lodashFunc = lodash[methodName];
       if (lodashFunc) {
-        var key = lodashFunc.name + '';
-        if (!hasOwnProperty.call(realNames, key)) {
-          realNames[key] = [];
-        }
-        realNames[key].push({ 'name': methodName, 'func': lodashFunc });
+        var key = (lodashFunc.name + ''),
+            names = realNames[key] || (realNames[key] = []);
+
+        names.push({ 'name': methodName, 'func': lodashFunc });
       }
     });
 
@@ -19479,8 +19474,27 @@ Lexer.prototype = {
         index += 1;
       }
 
-      if (isAllowedDigit !== isDecimalDigit) {
-        if (!isLegacy && value.length <= 2) { // 0x
+      var isBigInt = this.peek(index) === 'n';
+
+      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; }
+            );
+          }
+
+          value += char;
+          index += 1;
+        } else if (!isLegacy && value.length <= 2) { // 0x
           return {
             type: Token.NumericLiteral,
             value: value,
@@ -22214,6 +22228,9 @@ exports.val = {
    *    9](https://www.ecma-international.org/ecma-262/9.0/index.html). Notable
    *    additions: asynchronous iteration, rest/spread properties, and various
    *    RegExp extensions
+   *  - `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.
    */
   esversion: 5
 };
@@ -22225,6 +22242,17 @@ 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
@@ -22319,7 +22347,12 @@ module.exports = {
    * Enabled when any exception thrown by the expression will be caught by a
    * TryStatement.
    */
-  tryClause: 32
+  tryClause: 32,
+
+  /**
+   * Enabled when parsing the body of a generator function.
+   */
+  yield: 64
 };
 
 },{}],22:[function(require,module,exports){
@@ -23489,6 +23522,15 @@ var state = {
     return this.option.moz;
   },
 
+  /**
+   * Determine if constructs introduced in ECMAScript 10 should be accepted.
+   *
+   * @returns {boolean}
+   */
+  inES10: function() {
+    return this.esVersion >= 10;
+  },
+
   /**
    * Determine if constructs introduced in ECMAScript 9 should be accepted.
    *
@@ -24741,6 +24783,10 @@ var JSHINT = (function() {
       return false;
     }
 
+    if (token.id === "yield" && (!(context & prodParams.yield))) {
+      return state.isStrict();
+    }
+
     return true;
   }
 
@@ -25033,10 +25079,9 @@ var JSHINT = (function() {
     }
 
     if (directiveToken.type === "globals") {
-      body.forEach(function(g, idx) {
-        g = g.split(":");
-        var key = g[0].trim();
-        var val = (g[1] || "").trim();
+      body.forEach(function(item, idx) {
+        var parts = item.split(":");
+        var key = parts[0].trim();
 
         if (key === "-" || !key.length) {
           // Ignore trailing comma
@@ -25049,12 +25094,11 @@ var JSHINT = (function() {
 
         if (key.charAt(0) === "-") {
           key = key.slice(1);
-          val = false;
 
           JSHINT.blacklist[key] = key;
           delete predefined[key];
         } else {
-          predef[key] = (val === "true");
+          predef[key] = parts.length > 1 && parts[1].trim() === "true";
         }
       });
 
@@ -25111,10 +25155,11 @@ var JSHINT = (function() {
 
     if (directiveToken.type === "jshint" || directiveToken.type === "jslint" ||
       directiveToken.type === "jshint.unstable") {
-      body.forEach(function(g) {
-        g = g.split(":");
-        var key = g[0].trim();
-        var val = (g[1] || "").trim();
+      body.forEach(function(item) {
+        var parts = item.split(":");
+        var key = parts[0].trim();
+        var val = parts.length > 1 ? parts[1].trim() : "";
+        var numberVal;
 
         if (!checkOption(key, directiveToken.type !== "jshint.unstable", directiveToken)) {
           return;
@@ -25123,14 +25168,15 @@ var JSHINT = (function() {
         if (numvals.indexOf(key) >= 0) {
           // GH988 - numeric options can be disabled by setting them to `false`
           if (val !== "false") {
-            val = +val;
+            numberVal = +val;
 
-            if (typeof val !== "number" || !isFinite(val) || val <= 0 || Math.floor(val) !== val) {
-              error("E032", directiveToken, g[1].trim());
+            if (typeof numberVal !== "number" || !isFinite(numberVal) ||
+              numberVal <= 0 || Math.floor(numberVal) !== numberVal) {
+              error("E032", directiveToken, val);
               return;
             }
 
-            state.option[key] = val;
+            state.option[key] = numberVal;
           } else {
             state.option[key] = key === "indent" ? 4 : false;
           }
@@ -25267,6 +25313,7 @@ var JSHINT = (function() {
           case "7":
           case "8":
           case "9":
+          case "10":
             state.option.moz = false;
             state.option.esversion = +val;
             break;
@@ -25274,6 +25321,7 @@ var JSHINT = (function() {
           case "2016":
           case "2017":
           case "2018":
+          case "2019":
             state.option.moz = false;
             // Translate specification publication year to version number.
             state.option.esversion = +val - 2009;
@@ -25304,7 +25352,6 @@ 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");
@@ -25453,13 +25500,21 @@ var JSHINT = (function() {
     if (next.id === "in" && context & prodParams.noin) {
       return true;
     }
+
     if (next.id === ";" || next.id === "}" || next.id === ":") {
       return true;
     }
-    if (next.infix === curr.infix || curr.ltBoundary === "after" ||
-      next.ltBoundary === "before") {
-      return curr.line !== startLine(next);
+
+    if (next.infix === curr.infix ||
+      // Infix operators which follow `yield` should only be consumed as part
+      // of the current expression if allowed by the syntactic grammar. In
+      // effect, this prevents automatic semicolon insertion when `yield` is
+      // followed by a newline and a comma operator (without enabling it when
+      // `yield` is followed by a newline and a `[` token).
+      (curr.id === "yield" && curr.rbp < next.rbp)) {
+      return !sameLine(curr, next);
     }
+
     return false;
   }
 
@@ -25566,44 +25621,52 @@ var JSHINT = (function() {
 
   // Functions for conformance of style.
 
-  function startLine(token) {
-    return token.startLine || token.line;
+  function sameLine(first, second) {
+    return first.line === (second.startLine || second.line);
   }
 
   function nobreaknonadjacent(left, right) {
-    if (!state.option.laxbreak && left.line !== startLine(right)) {
+    if (!state.option.laxbreak && !sameLine(left, right)) {
       warning("W014", right, right.value);
     }
   }
 
   function nolinebreak(t) {
     t = t;
-    if (t.line !== startLine(state.tokens.next)) {
+    if (!sameLine(t, state.tokens.next)) {
       warning("E022", t, t.value);
     }
   }
 
-  function nobreakcomma(left, right) {
-    if (left.line !== startLine(right)) {
+  /**
+   * Validate the comma token in the "current" position of the token stream.
+   *
+   * @param {object} [opts]
+   * @param {boolean} [opts.property] - flag indicating whether the current
+   *                                    comma token is situated directly within
+   *                                    an object initializer
+   * @param {boolean} [opts.allowTrailing] - flag indicating whether the
+   *                                         current comma token may appear
+   *                                         directly before a delimiter
+   *
+   * @returns {boolean} flag indicating the validity of the current comma
+   *                    token; `false` if the token directly causes a syntax
+   *                    error, `true` otherwise
+   */
+  function checkComma(opts) {
+    var prev = state.tokens.prev;
+    var curr = state.tokens.curr;
+    opts = opts || {};
+
+    if (!sameLine(prev, curr)) {
       if (!state.option.laxcomma) {
-        if (parseComma.first) {
-          warning("I001");
-          parseComma.first = false;
+        if (checkComma.first) {
+          warning("I001", curr);
+          checkComma.first = false;
         }
-        warning("W014", left, right.value);
+        warning("W014", prev, curr.value);
       }
     }
-  }
-
-  function parseComma(opts) {
-    opts = opts || {};
-
-    if (!opts.peek) {
-      nobreakcomma(state.tokens.curr, state.tokens.next);
-      advance(",");
-    } else {
-      nobreakcomma(state.tokens.prev, state.tokens.curr);
-    }
 
     if (state.tokens.next.identifier && !(opts.property && state.inES5())) {
       // Keywords that cannot follow a comma operator.
@@ -25800,7 +25863,7 @@ var JSHINT = (function() {
    *                     support cases where further refinement is necessary)
    */
   function type(s, f) {
-    var x = delim(s);
+    var x = symbol(s, 0);
     x.type = s;
     x.nud = f;
     return x;
@@ -25985,7 +26048,7 @@ var JSHINT = (function() {
     "undefined", "boolean", "number", "string", "function", "object",
   ];
   typeofValues.es3 = typeofValues.es3.concat(typeofValues.legacy);
-  typeofValues.es6 = typeofValues.es3.concat("symbol");
+  typeofValues.es6 = typeofValues.es3.concat("symbol", "bigint");
 
   /**
    * Validate comparisons between the result of a `typeof` expression and a
@@ -26011,8 +26074,17 @@ var JSHINT = (function() {
 
     values = state.inES6() ? typeofValues.es6 : typeofValues.es3;
 
-    if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)")
+    if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)") {
+      if (left.value === "bigint") {
+        if (!state.option.unstable.bigint) {
+          warning("W144", left, "BigInt", "bigint");
+        }
+
+        return false;
+      }
+
       return !_.includes(values, left.value);
+    }
 
     return false;
   }
@@ -26169,13 +26241,11 @@ var JSHINT = (function() {
    * @param {function} [f] - a function to be invoked that consumes the
    *                         right-hand side of the operator (see the `infix`
    *                         function)
-   * @param {number} p - the left-binding power of the token as used by the
-   *                     Pratt parsing semantics
    *
    * @returns {object} - the object describing the JSHint symbol (provided to
    *                     support cases where further refinement is necessary)
    */
-  function assignop(s, f, p) {
+  function assignop(s, f) {
     var x = infix(s, typeof f === "function" ? f : function(context, left, that) {
       that.left = left;
 
@@ -26184,10 +26254,11 @@ var JSHINT = (function() {
       that.right = expression(context, 10);
 
       return that;
-    }, p);
+    }, 20);
 
     x.exps = true;
     x.assign = true;
+
     return x;
   }
 
@@ -26228,7 +26299,8 @@ var JSHINT = (function() {
    *                     support cases where further refinement is necessary)
    */
   function bitwiseassignop(s) {
-    return assignop(s, function(context, left, that) {
+    symbol(s, 20).exps = true;
+    return infix(s, function(context, left, that) {
       if (state.option.bitwise) {
         warning("W016", that, that.id);
       }
@@ -26409,18 +26481,18 @@ var JSHINT = (function() {
       // don't complain about unclosed templates / strings
       if (state.tokens.next.isUnclosed) return advance();
 
-      var sameLine = startLine(state.tokens.next) === state.tokens.curr.line &&
-                     state.tokens.next.id !== "(end)";
+      var isSameLine = sameLine(state.tokens.curr, state.tokens.next) &&
+                       state.tokens.next.id !== "(end)";
       var blockEnd = checkPunctuator(state.tokens.next, "}");
 
-      if (sameLine && !blockEnd && !(stmt.id === "do" && state.inES6(true))) {
+      if (isSameLine && !blockEnd && !(stmt.id === "do" && state.inES6(true))) {
         errorAt("E058", state.tokens.curr.line, state.tokens.curr.character);
       } else if (!state.option.asi) {
 
         // If this is the last statement in a block that ends on the same line
         // *and* option lastsemic is on, ignore the warning.  Otherwise, issue
         // a warning about missing semicolon.
-        if (!(blockEnd && sameLine && state.option.lastsemic)) {
+        if (!(blockEnd && isSameLine && state.option.lastsemic)) {
           warningAt("W033", state.tokens.curr.line, state.tokens.curr.character);
         }
       }
@@ -26514,6 +26586,7 @@ var JSHINT = (function() {
       } else if (state.option.nonew && r && r.left && r.id === "(" && r.left.id === "new") {
         warning("W031", t);
       }
+
       parseFinalSemicolon(t);
     }
 
@@ -26809,11 +26882,11 @@ var JSHINT = (function() {
       // ...it should not be considered as a variable in the current scope. It
       // will be added to the scope of the new function when the next token is
       // parsed, so it can be safely ignored for now.
-      var isLoneArrowParam = state.tokens.next.id !== "=>";
+      var isLoneArrowParam = state.tokens.next.id === "=>";
 
       if (isReserved(context, this)) {
         warning("W024", this, v);
-      } else if (isLoneArrowParam && !state.funct["(comparray)"].check(v)) {
+      } else if (!isLoneArrowParam && !state.funct["(comparray)"].check(v)) {
         state.funct["(scope)"].block.use(v, state.tokens.curr);
       }
 
@@ -26904,15 +26977,15 @@ var JSHINT = (function() {
     return this;
   });
 
-  assignop("=", "assign", 20);
-  assignop("+=", "assignadd", 20);
-  assignop("-=", "assignsub", 20);
-  assignop("*=", "assignmult", 20);
-  assignop("/=", "assigndiv", 20).nud = function() {
+  assignop("=", "assign");
+  assignop("+=", "assignadd");
+  assignop("-=", "assignsub");
+  assignop("*=", "assignmult");
+  assignop("/=", "assigndiv").nud = function() {
     /* istanbul ignore next */
     error("E014");
   };
-  assignop("%=", "assignmod", 20);
+  assignop("%=", "assignmod");
   assignop("**=", function(context, left, that) {
     if (!state.inES7()) {
       warning("W119", that, "Exponentiation operator", "7");
@@ -26925,7 +26998,7 @@ var JSHINT = (function() {
     that.right = expression(context, 10);
 
     return that;
-  }, 20);
+  });
 
   bitwiseassignop("&=");
   bitwiseassignop("|=");
@@ -26934,26 +27007,18 @@ var JSHINT = (function() {
   bitwiseassignop(">>=");
   bitwiseassignop(">>>=");
   infix(",", function(context, left, that) {
-    var expr;
-    that.exprs = [left];
-
     if (state.option.nocomma) {
-      warning("W127");
+      warning("W127", that);
     }
 
-    if (!parseComma({ peek: true })) {
-      return that;
-    }
-    while (true) {
-      if (!(expr = expression(context, 10))) {
-        /* istanbul ignore next */
-        break;
-      }
-      that.exprs.push(expr);
-      if (state.tokens.next.value !== "," || !parseComma()) {
-        break;
-      }
+    that.left = left;
+
+    if (checkComma()) {
+      that.right = expression(context, 10);
+    } else {
+      that.right = null;
     }
+
     return that;
   }, 10, true);
 
@@ -27149,12 +27214,10 @@ var JSHINT = (function() {
   suffix("++");
   prefix("++", "preinc");
   state.syntax["++"].exps = true;
-  state.syntax["++"].ltBoundary = "before";
 
   suffix("--");
   prefix("--", "predec");
   state.syntax["--"].exps = true;
-  state.syntax["--"].ltBoundary = "before";
 
   prefix("delete", function(context) {
     this.arity = "unary";
@@ -27572,7 +27635,7 @@ var JSHINT = (function() {
     }
 
     if (state.option.asi && checkPunctuators(state.tokens.prev, [")", "]"]) &&
-      state.tokens.prev.line !== startLine(state.tokens.curr)) {
+      !sameLine(state.tokens.prev, state.tokens.curr)) {
       warning("W014", state.tokens.curr, state.tokens.curr.id);
     }
 
@@ -27603,7 +27666,8 @@ var JSHINT = (function() {
         if (state.tokens.next.id !== ",") {
           break;
         }
-        parseComma({ allowTrailing: true });
+        advance(",");
+        checkComma({ allowTrailing: true });
 
         if (state.tokens.next.id === ")") {
           if (!state.inES8()) {
@@ -27702,44 +27766,50 @@ var JSHINT = (function() {
       return pn;
     }
 
-    var exprs = [];
-
-    if (state.tokens.next.id !== ")") {
-      for (;;) {
-        exprs.push(expression(context, 10));
+    // The ECMA262 grammar requires an expression between the "opening
+    // parenthesis" and "close parenthesis" tokens of the grouping operator.
+    // However, the "ignore" directive is commonly used to inject values that
+    // are not included in the token stream. For example:
+    //
+    //     return (
+    //       /*jshint ignore:start */
+    //       <div></div>
+    //       /*jshint ignore:end */
+    //     );
+    //
+    // The "empty" grouping operator is permitted in order to tolerate this
+    // pattern.
+    if (state.tokens.next.id === ")") {
+      advance(")");
+      return;
+    }
 
-        if (state.tokens.next.id !== ",") {
-          break;
-        }
+    ret = expression(context, 0);
 
-        if (state.option.nocomma) {
-          warning("W127");
-        }
+    advance(")", this);
 
-        parseComma();
-      }
+    if (!ret) {
+      return;
     }
 
-    advance(")", this);
-    if (state.option.immed && exprs[0] && exprs[0].id === "function") {
+    ret.paren = true;
+
+    if (state.option.immed && ret && ret.id === "function") {
       if (state.tokens.next.id !== "(" &&
         state.tokens.next.id !== "." && state.tokens.next.id !== "[") {
         warning("W068", this);
       }
     }
 
-    if (!exprs.length) {
-      return;
-    }
-
-    if (exprs.length > 1) {
-      ret = Object.create(state.syntax[","]);
-      ret.exprs = exprs;
+    if (ret.id === ",") {
+      first = ret.left;
+      while (first.id === ",") {
+        first = first.left;
+      }
 
-      first = exprs[0];
-      last = exprs[exprs.length - 1];
+      last = ret.right;
     } else {
-      ret = first = last = exprs[0];
+      first = last = ret;
 
       if (!isNecessary) {
         // async functions are identified after parsing due to the complexity
@@ -27777,22 +27847,18 @@ var JSHINT = (function() {
       }
     }
 
-    if (ret) {
-      ret.paren = true;
-
-      // The operator may be necessary to override the default binding power of
-      // neighboring operators (whenever there is an operator in use within the
-      // first expression *or* the current group contains multiple expressions)
-      if (!isNecessary && (isOperator(first) || ret.exprs)) {
-        isNecessary =
-          (rbp > first.lbp) ||
-          (rbp > 0 && rbp === first.lbp) ||
-          (!isEndOfExpr() && last.rbp < state.tokens.next.lbp);
-      }
+    // The operator may be necessary to override the default binding power of
+    // neighboring operators (whenever there is an operator in use within the
+    // first expression *or* the current group contains multiple expressions)
+    if (!isNecessary && (isOperator(first) || first !== last)) {
+      isNecessary =
+        (rbp > first.lbp) ||
+        (rbp > 0 && rbp === first.lbp) ||
+        (!isEndOfExpr() && last.rbp < state.tokens.next.lbp);
+    }
 
-      if (!isNecessary) {
-        warning("W126", opening);
-      }
+    if (!isNecessary) {
+      warning("W126", opening);
     }
 
     return ret;
@@ -27804,7 +27870,7 @@ var JSHINT = (function() {
     var e, s, canUseDot;
 
     if (state.option.asi && checkPunctuators(state.tokens.prev, [")", "]"]) &&
-      state.tokens.prev.line !== startLine(state.tokens.curr)) {
+      !sameLine(state.tokens.prev, state.tokens.curr)) {
       warning("W014", state.tokens.curr, state.tokens.curr.id);
     }
 
@@ -27917,7 +27983,7 @@ var JSHINT = (function() {
         });
       return this;
     }
-    var b = state.tokens.curr.line !== startLine(state.tokens.next);
+    var b = !sameLine(state.tokens.curr, state.tokens.next);
     this.first = [];
     if (b) {
       indent += state.option.indent;
@@ -27952,7 +28018,8 @@ var JSHINT = (function() {
 
       this.first.push(expression(context, 10));
       if (state.tokens.next.id === ",") {
-        parseComma({ allowTrailing: true });
+        advance(",");
+        checkComma({ allowTrailing: true });
         if (state.tokens.next.id === "]" && !state.inES5()) {
           warning("W070", state.tokens.curr);
           break;
@@ -28111,7 +28178,8 @@ var JSHINT = (function() {
         if (pastRest) {
           warning("W131", state.tokens.next);
         }
-        parseComma({ allowTrailing: true });
+        advance(",");
+        checkComma({ allowTrailing: true });
       }
 
       if (state.tokens.next.id === ")") {
@@ -28161,7 +28229,7 @@ var JSHINT = (function() {
       "(context)"   : null,
       "(scope)"     : null,
       "(comparray)" : null,
-      "(generator)" : null,
+      "(yielded)"   : null,
       "(arrow)"     : null,
       "(async)"     : null,
       "(params)"    : null
@@ -28284,6 +28352,12 @@ var JSHINT = (function() {
     } else {
       context &= ~prodParams.async;
     }
+
+    if (isGenerator) {
+      context |= prodParams.yield;
+    } else if (!isArrow) {
+      context &= ~prodParams.yield;
+    }
     context &= ~prodParams.preAsync;
 
     state.option = Object.create(state.option);
@@ -28294,7 +28368,6 @@ var JSHINT = (function() {
       "(context)":   state.funct,
       "(arrow)":     isArrow,
       "(method)":    isMethod,
-      "(generator)": isGenerator,
       "(async)":     isAsync
     });
 
@@ -28336,6 +28409,8 @@ var JSHINT = (function() {
     }
 
     if (isArrow) {
+      context &= ~prodParams.yield;
+
       if (!state.inES6(true)) {
         warning("W119", state.tokens.curr, "arrow function syntax (=>)", "6");
       }
@@ -28347,8 +28422,7 @@ var JSHINT = (function() {
 
     block(context, false, true, true, isArrow);
 
-    if (!state.option.noyield && isGenerator &&
-        state.funct["(generator)"] !== "yielded") {
+    if (!state.option.noyield && isGenerator && !state.funct["(yielded)"]) {
       warning("W124", state.tokens.curr);
     }
 
@@ -28423,38 +28497,20 @@ var JSHINT = (function() {
     state.funct["(metrics)"].ComplexityCount += 1;
   }
 
-  /**
-   * Detect and warn about assignment that occurs within conditional clauses,
-   * e.g.
-   *
-   *     if (a = 1) { ... }
-   *
-   * This check is disabled in response to parenthesized expressions so that
-   * users may opt out of the warning on a case-by-case bases, e.g.
-   *
-   *     if ((a = 1)) { ... }
-   *
-   * @param {object} expr - the parsed expression within the conditional clause
-   */
-  function checkCondAssignment(expr) {
-    if (!expr || expr.paren || state.option.boss) {
+  // Parse assignments that were found instead of conditionals.
+  // For example: if (a = 1) { ... }
+
+  function checkCondAssignment(token) {
+    if (!token || token.paren) {
       return;
     }
 
-    var id = expr.id;
-
-    // If the expression is composed of multiple sub-expressions via a comma
-    // operator, then check the final sub-expression.
-    if (id === ",") {
-      expr = expr.exprs[expr.exprs.length - 1];
-      id = expr.id;
-
-      if (expr.paren) {
-        return;
-      }
+    if (token.id === ",") {
+      checkCondAssignment(token.right);
+      return;
     }
 
-    switch (id) {
+    switch (token.id) {
     case "=":
     case "+=":
     case "-=":
@@ -28464,7 +28520,9 @@ var JSHINT = (function() {
     case "|=":
     case "^=":
     case "/=":
-      warning("W084");
+      if (!state.option.boss) {
+        warning("W084", token);
+      }
     }
   }
 
@@ -28509,7 +28567,7 @@ var JSHINT = (function() {
       var props = Object.create(null); // All properties, including accessors
       var isAsyncMethod = false;
 
-      b = state.tokens.curr.line !== startLine(state.tokens.next);
+      b = !sameLine(state.tokens.curr, state.tokens.next);
       if (b) {
         indent += state.option.indent;
         if (state.tokens.next.from === indent + state.option.indent) {
@@ -28551,7 +28609,7 @@ var JSHINT = (function() {
           }
 
           if (state.tokens.next.id === "[") {
-            i = computedPropertyName();
+            i = computedPropertyName(context);
           } else {
             i = propertyName(context);
 
@@ -28644,7 +28702,8 @@ var JSHINT = (function() {
         countMember(i);
 
         if (state.tokens.next.id === ",") {
-          parseComma({ allowTrailing: true, property: true });
+          advance(",");
+          checkComma({ allowTrailing: true, property: true });
           if (state.tokens.next.id === ",") {
             /* istanbul ignore next */
             warning("W070", state.tokens.curr);
@@ -28979,7 +29038,8 @@ var JSHINT = (function() {
       }
 
       statement.hasComma = true;
-      parseComma();
+      advance(",");
+      checkComma();
     }
     if (letblock) {
       advance(")");
@@ -29151,7 +29211,8 @@ var JSHINT = (function() {
         break;
       }
       this.hasComma = true;
-      parseComma();
+      advance(",");
+      checkComma();
     }
 
     return this;
@@ -29253,6 +29314,10 @@ var JSHINT = (function() {
       type: generator ? "generator" : null
     });
 
+    if (generator && nameToken && nameToken.value === "yield") {
+      error("E024", nameToken, "yield");
+    }
+
     if (nameToken && (f["(name)"] === "arguments" || f["(name)"] === "eval") &&
       f["(isStrict)"]) {
       error("E008", nameToken);
@@ -29264,7 +29329,6 @@ var JSHINT = (function() {
   blockstmt("if", function(context) {
     var t = state.tokens.next;
     increaseComplexityCount();
-    state.condition = true;
     advance("(");
     var expr = expression(context, 0);
 
@@ -29288,7 +29352,6 @@ var JSHINT = (function() {
     }
 
     advance(")", t);
-    state.condition = false;
     var s = block(context, true, true);
 
     // When the if is within a for-in loop and the condition has a negative form,
@@ -29312,13 +29375,11 @@ var JSHINT = (function() {
 
   blockstmt("try", function(context) {
     var b;
+    var hasParameter = false;
 
-    function doCatch() {
-      advance("catch");
+    function catchParameter() {
       advance("(");
 
-      state.funct["(scope)"].stack("catchparams");
-
       if (checkPunctuators(state.tokens.next, ["[", "{"])) {
         var tokens = destructuringPattern(context);
         _.each(tokens, function(token) {
@@ -29343,9 +29404,6 @@ var JSHINT = (function() {
       }
 
       advance(")");
-
-      block(context, false);
-      state.funct["(scope)"].unstack();
     }
 
     block(context | prodParams.tryClause, true);
@@ -29355,7 +29413,20 @@ var JSHINT = (function() {
       if (b && (!state.inMoz())) {
         warning("W118", state.tokens.next, "multiple catch blocks");
       }
-      doCatch();
+      advance("catch");
+      if (state.tokens.next.id !== "{") {
+        state.funct["(scope)"].stack("catchparams");
+        hasParameter = true;
+        catchParameter();
+      } else if (!state.inES10()) {
+        warning("W119", state.tokens.curr, "optional catch binding", "10");
+      }
+      block(context, false);
+
+      if (hasParameter) {
+        state.funct["(scope)"].unstack();
+        hasParameter = false;
+      }
       b = true;
     }
 
@@ -29779,7 +29850,8 @@ var JSHINT = (function() {
           if (state.tokens.next.id !== ",") {
             break;
           }
-          parseComma();
+          advance(",");
+          checkComma();
         }
       }
       advance(")", t);
@@ -29804,7 +29876,7 @@ var JSHINT = (function() {
       nolinebreak(this);
 
     if (state.tokens.next.identifier &&
-        state.tokens.curr.line === startLine(state.tokens.next)) {
+        sameLine(state.tokens.curr, state.tokens.next)) {
       if (!state.funct["(scope)"].funct.hasLabel(v)) {
         warning("W090", state.tokens.next, v);
       }
@@ -29832,7 +29904,7 @@ var JSHINT = (function() {
       nolinebreak(this);
 
     if (state.tokens.next.identifier) {
-      if (state.tokens.curr.line === startLine(state.tokens.next)) {
+      if (sameLine(state.tokens.curr, state.tokens.next)) {
         if (!state.funct["(scope)"].funct.hasLabel(v)) {
           warning("W090", state.tokens.next, v);
         }
@@ -29848,14 +29920,14 @@ var JSHINT = (function() {
 
 
   stmt("return", function(context) {
-    if (this.line === startLine(state.tokens.next)) {
+    if (sameLine(this, state.tokens.next)) {
       if (state.tokens.next.id !== ";" && !state.tokens.next.reach) {
         this.first = expression(context, 0);
 
         if (this.first &&
             this.first.type === "(punctuator)" && this.first.value === "=" &&
             !this.first.paren && !state.option.boss) {
-          warningAt("W093", this.first.line, this.first.character);
+          warning("W093", this.first);
         }
 
         if (state.option.noreturnawait && context & prodParams.async &&
@@ -29950,14 +30022,19 @@ var JSHINT = (function() {
     return state.syntax["(identifier)"].nud.apply(this, arguments);
   })));
 
-  (function(x) {
-    x.exps = true;
-    x.lbp = x.rbp = 25;
-    x.ltBoundary = "after";
-  }(prefix("yield", function(context) {
+  (function(yieldSymbol) {
+    yieldSymbol.rbp = yieldSymbol.lbp = 25;
+    yieldSymbol.exps = true;
+  })(prefix("yield", function(context) {
     if (state.inMoz()) {
       return mozYield.call(this, context);
     }
+
+    if (!(context & prodParams.yield)) {
+      this.exps = false;
+      return state.syntax["(identifier)"].nud.apply(this, arguments);
+    }
+
     var prev = state.tokens.prev;
 
     // If the parameters of the current function scope have not been defined,
@@ -29971,22 +30048,17 @@ var JSHINT = (function() {
       error("E061", this);
     }
 
-    if (state.inES6(true) && !state.funct["(generator)"]) {
-      // If it's a yield within a catch clause inside a generator then that's ok
-      if (!("(catch)" === state.funct["(name)"] && state.funct["(context)"]["(generator)"])) {
-        error("E046", state.tokens.curr, "yield");
-      }
-    } else if (!state.inES6()) {
+    if (!state.inES6()) {
       warning("W104", state.tokens.curr, "yield", "6");
     }
-    state.funct["(generator)"] = "yielded";
+    state.funct["(yielded)"] = true;
 
     if (state.tokens.next.value === "*") {
       advance("*");
     }
 
     // Parse operand
-    if (!isEndOfExpr() && state.tokens.next.id !== ",") {
+    if (state.tokens.curr.value === "*" || sameLine(state.tokens.curr, state.tokens.next)) {
       if (state.tokens.next.nud) {
 
         nobreaknonadjacent(state.tokens.curr, state.tokens.next);
@@ -29994,7 +30066,7 @@ var JSHINT = (function() {
 
         if (this.first.type === "(punctuator)" && this.first.value === "=" &&
             !this.first.paren && !state.option.boss) {
-          warningAt("W093", this.first.line, this.first.character);
+          warning("W093", this.first);
         }
       } else if (state.tokens.next.led) {
         if (state.tokens.next.id !== ",") {
@@ -30004,7 +30076,7 @@ var JSHINT = (function() {
     }
 
     return this;
-  })));
+  }));
 
   /**
    * Parsing logic for non-standard Mozilla implementation of `yield`
@@ -30012,13 +30084,10 @@ var JSHINT = (function() {
    */
   var mozYield = function(context) {
     var prev = state.tokens.prev;
-    if (state.inES6(true) && !state.funct["(generator)"]) {
-      // If it's a yield within a catch clause inside a generator then that's ok
-      if (!("(catch)" === state.funct["(name)"] && state.funct["(context)"]["(generator)"])) {
-        error("E046", state.tokens.curr, "yield");
-      }
+    if (state.inES6(true) && !(context & prodParams.yield)) {
+      error("E046", state.tokens.curr, "yield");
     }
-    state.funct["(generator)"] = "yielded";
+    state.funct["(yielded)"] = true;
     var delegatingYield = false;
 
     if (state.tokens.next.value === "*") {
@@ -30026,7 +30095,7 @@ var JSHINT = (function() {
       advance("*");
     }
 
-    if (this.line === startLine(state.tokens.next)) {
+    if (sameLine(this, state.tokens.next)) {
       if (delegatingYield ||
           (state.tokens.next.id !== ";" && !state.option.asi &&
            !state.tokens.next.reach && state.tokens.next.nud)) {
@@ -30036,12 +30105,11 @@ var JSHINT = (function() {
 
         if (this.first.type === "(punctuator)" && this.first.value === "=" &&
             !this.first.paren && !state.option.boss) {
-          warningAt("W093", this.first.line, this.first.character);
+          warning("W093", this.first);
         }
       }
-
       if (state.tokens.next.id !== ")" &&
-          (prev.lbp > 30 || (!prev.assign && !isEndOfExpr()) || prev.id === "yield")) {
+          (prev.lbp > 30 || (!prev.assign && !isEndOfExpr()))) {
         error("E050", this);
       }
     } else if (!state.option.asi) {
@@ -31028,7 +31096,7 @@ var JSHINT = (function() {
       combine(predefined, g || {});
 
       //reset values
-      parseComma.first = true;
+      checkComma.first = true;
 
       advance();
       switch (state.tokens.next.id) {
diff --git a/dist/jshint.js b/dist/jshint.js
index 28960745..6986285c 100644
--- a/dist/jshint.js
+++ b/dist/jshint.js
@@ -1,4 +1,4 @@
-/*! 2.10.3 */
+/*! 2.11.0 */
 var JSHINT;
 if (typeof window === 'undefined') window = {};
 (function () {
@@ -1024,7 +1024,7 @@ function hasOwnProperty(obj, prop) {
 }
 
 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"./support/isBuffer":7,"_process":10,"inherits":6}],9:[function(require,module,exports){
+},{"./support/isBuffer":7,"_process":11,"inherits":6}],9:[function(require,module,exports){
 // Copyright Joyent, Inc. and other Node contributors.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
@@ -1328,6 +1328,8 @@ function isUndefined(arg) {
 }
 
 },{}],10:[function(require,module,exports){
+arguments[4][6][0].apply(exports,arguments)
+},{"dup":6}],11:[function(require,module,exports){
 // shim for using process in browser
 
 var process = module.exports = {};
@@ -1387,13 +1389,11 @@ process.chdir = function (dir) {
 };
 process.umask = function() { return 0; };
 
-},{}],11:[function(require,module,exports){
-arguments[4][6][0].apply(exports,arguments)
-},{"dup":6}],12:[function(require,module,exports){
+},{}],12:[function(require,module,exports){
 arguments[4][7][0].apply(exports,arguments)
 },{"dup":7}],13:[function(require,module,exports){
 arguments[4][8][0].apply(exports,arguments)
-},{"./support/isBuffer":12,"_process":10,"dup":8,"inherits":11}],14:[function(require,module,exports){
+},{"./support/isBuffer":12,"_process":11,"dup":8,"inherits":10}],14:[function(require,module,exports){
 (function (global){
 /*global window, global*/
 var util = require("util")
@@ -1495,7 +1495,7 @@ function now() {
 /**
  * @license
  * Lodash <https://lodash.com/>
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
+ * Copyright JS Foundation and other contributors <https://js.foundation/>
  * Released under MIT license <https://lodash.com/license>
  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
@@ -1506,7 +1506,7 @@ function now() {
   var undefined;
 
   /** Used as the semantic version number. */
-  var VERSION = '4.17.15';
+  var VERSION = '4.17.11';
 
   /** Used as the size to enable large array optimizations. */
   var LARGE_ARRAY_SIZE = 200;
@@ -4165,10 +4165,16 @@ function now() {
         value.forEach(function(subValue) {
           result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
         });
-      } else if (isMap(value)) {
+
+        return result;
+      }
+
+      if (isMap(value)) {
         value.forEach(function(subValue, key) {
           result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
         });
+
+        return result;
       }
 
       var keysFunc = isFull
@@ -5092,8 +5098,8 @@ function now() {
         return;
       }
       baseFor(source, function(srcValue, key) {
-        stack || (stack = new Stack);
         if (isObject(srcValue)) {
+          stack || (stack = new Stack);
           baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
         }
         else {
@@ -6910,7 +6916,7 @@ function now() {
       return function(number, precision) {
         number = toNumber(number);
         precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
-        if (precision && nativeIsFinite(number)) {
+        if (precision) {
           // Shift with exponential notation to avoid floating-point issues.
           // See [MDN](https://mdn.io/round#Examples) for more details.
           var pair = (toString(number) + 'e').split('e'),
@@ -8093,7 +8099,7 @@ function now() {
     }
 
     /**
-     * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
+     * Gets the value at `key`, unless `key` is "__proto__".
      *
      * @private
      * @param {Object} object The object to query.
@@ -8101,10 +8107,6 @@ function now() {
      * @returns {*} Returns the property value.
      */
     function safeGet(object, key) {
-      if (key === 'constructor' && typeof object[key] === 'function') {
-        return;
-      }
-
       if (key == '__proto__') {
         return;
       }
@@ -11905,7 +11907,6 @@ function now() {
           }
           if (maxing) {
             // Handle invocations in a tight loop.
-            clearTimeout(timerId);
             timerId = setTimeout(timerExpired, wait);
             return invokeFunc(lastCallTime);
           }
@@ -16292,12 +16293,9 @@ function now() {
       , 'g');
 
       // Use a sourceURL for easier debugging.
-      // The sourceURL gets injected into the source that's eval-ed, so be careful
-      // with lookup (in case of e.g. prototype pollution), and strip newlines if any.
-      // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.
       var sourceURL = '//# sourceURL=' +
-        (hasOwnProperty.call(options, 'sourceURL')
-          ? (options.sourceURL + '').replace(/[\r\n]/g, ' ')
+        ('sourceURL' in options
+          ? options.sourceURL
           : ('lodash.templateSources[' + (++templateCounter) + ']')
         ) + '\n';
 
@@ -16330,9 +16328,7 @@ function now() {
 
       // If `variable` is not specified wrap a with-statement around the generated
       // code to add the data object to the top of the scope chain.
-      // Like with sourceURL, we take care to not check the option's prototype,
-      // as this configuration is a code injection vector.
-      var variable = hasOwnProperty.call(options, 'variable') && options.variable;
+      var variable = options.variable;
       if (!variable) {
         source = 'with (obj) {\n' + source + '\n}\n';
       }
@@ -18537,11 +18533,10 @@ function now() {
     baseForOwn(LazyWrapper.prototype, function(func, methodName) {
       var lodashFunc = lodash[methodName];
       if (lodashFunc) {
-        var key = lodashFunc.name + '';
-        if (!hasOwnProperty.call(realNames, key)) {
-          realNames[key] = [];
-        }
-        realNames[key].push({ 'name': methodName, 'func': lodashFunc });
+        var key = (lodashFunc.name + ''),
+            names = realNames[key] || (realNames[key] = []);
+
+        names.push({ 'name': methodName, 'func': lodashFunc });
       }
     });
 
@@ -19477,8 +19472,27 @@ Lexer.prototype = {
         index += 1;
       }
 
-      if (isAllowedDigit !== isDecimalDigit) {
-        if (!isLegacy && value.length <= 2) { // 0x
+      var isBigInt = this.peek(index) === 'n';
+
+      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; }
+            );
+          }
+
+          value += char;
+          index += 1;
+        } else if (!isLegacy && value.length <= 2) { // 0x
           return {
             type: Token.NumericLiteral,
             value: value,
@@ -22212,6 +22226,9 @@ exports.val = {
    *    9](https://www.ecma-international.org/ecma-262/9.0/index.html). Notable
    *    additions: asynchronous iteration, rest/spread properties, and various
    *    RegExp extensions
+   *  - `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.
    */
   esversion: 5
 };
@@ -22223,6 +22240,17 @@ 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
@@ -22317,7 +22345,12 @@ module.exports = {
    * Enabled when any exception thrown by the expression will be caught by a
    * TryStatement.
    */
-  tryClause: 32
+  tryClause: 32,
+
+  /**
+   * Enabled when parsing the body of a generator function.
+   */
+  yield: 64
 };
 
 },{}],22:[function(require,module,exports){
@@ -23487,6 +23520,15 @@ var state = {
     return this.option.moz;
   },
 
+  /**
+   * Determine if constructs introduced in ECMAScript 10 should be accepted.
+   *
+   * @returns {boolean}
+   */
+  inES10: function() {
+    return this.esVersion >= 10;
+  },
+
   /**
    * Determine if constructs introduced in ECMAScript 9 should be accepted.
    *
@@ -24739,6 +24781,10 @@ var JSHINT = (function() {
       return false;
     }
 
+    if (token.id === "yield" && (!(context & prodParams.yield))) {
+      return state.isStrict();
+    }
+
     return true;
   }
 
@@ -25031,10 +25077,9 @@ var JSHINT = (function() {
     }
 
     if (directiveToken.type === "globals") {
-      body.forEach(function(g, idx) {
-        g = g.split(":");
-        var key = g[0].trim();
-        var val = (g[1] || "").trim();
+      body.forEach(function(item, idx) {
+        var parts = item.split(":");
+        var key = parts[0].trim();
 
         if (key === "-" || !key.length) {
           // Ignore trailing comma
@@ -25047,12 +25092,11 @@ var JSHINT = (function() {
 
         if (key.charAt(0) === "-") {
           key = key.slice(1);
-          val = false;
 
           JSHINT.blacklist[key] = key;
           delete predefined[key];
         } else {
-          predef[key] = (val === "true");
+          predef[key] = parts.length > 1 && parts[1].trim() === "true";
         }
       });
 
@@ -25109,10 +25153,11 @@ var JSHINT = (function() {
 
     if (directiveToken.type === "jshint" || directiveToken.type === "jslint" ||
       directiveToken.type === "jshint.unstable") {
-      body.forEach(function(g) {
-        g = g.split(":");
-        var key = g[0].trim();
-        var val = (g[1] || "").trim();
+      body.forEach(function(item) {
+        var parts = item.split(":");
+        var key = parts[0].trim();
+        var val = parts.length > 1 ? parts[1].trim() : "";
+        var numberVal;
 
         if (!checkOption(key, directiveToken.type !== "jshint.unstable", directiveToken)) {
           return;
@@ -25121,14 +25166,15 @@ var JSHINT = (function() {
         if (numvals.indexOf(key) >= 0) {
           // GH988 - numeric options can be disabled by setting them to `false`
           if (val !== "false") {
-            val = +val;
+            numberVal = +val;
 
-            if (typeof val !== "number" || !isFinite(val) || val <= 0 || Math.floor(val) !== val) {
-              error("E032", directiveToken, g[1].trim());
+            if (typeof numberVal !== "number" || !isFinite(numberVal) ||
+              numberVal <= 0 || Math.floor(numberVal) !== numberVal) {
+              error("E032", directiveToken, val);
               return;
             }
 
-            state.option[key] = val;
+            state.option[key] = numberVal;
           } else {
             state.option[key] = key === "indent" ? 4 : false;
           }
@@ -25265,6 +25311,7 @@ var JSHINT = (function() {
           case "7":
           case "8":
           case "9":
+          case "10":
             state.option.moz = false;
             state.option.esversion = +val;
             break;
@@ -25272,6 +25319,7 @@ var JSHINT = (function() {
           case "2016":
           case "2017":
           case "2018":
+          case "2019":
             state.option.moz = false;
             // Translate specification publication year to version number.
             state.option.esversion = +val - 2009;
@@ -25302,7 +25350,6 @@ 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");
@@ -25451,13 +25498,21 @@ var JSHINT = (function() {
     if (next.id === "in" && context & prodParams.noin) {
       return true;
     }
+
     if (next.id === ";" || next.id === "}" || next.id === ":") {
       return true;
     }
-    if (next.infix === curr.infix || curr.ltBoundary === "after" ||
-      next.ltBoundary === "before") {
-      return curr.line !== startLine(next);
+
+    if (next.infix === curr.infix ||
+      // Infix operators which follow `yield` should only be consumed as part
+      // of the current expression if allowed by the syntactic grammar. In
+      // effect, this prevents automatic semicolon insertion when `yield` is
+      // followed by a newline and a comma operator (without enabling it when
+      // `yield` is followed by a newline and a `[` token).
+      (curr.id === "yield" && curr.rbp < next.rbp)) {
+      return !sameLine(curr, next);
     }
+
     return false;
   }
 
@@ -25564,44 +25619,52 @@ var JSHINT = (function() {
 
   // Functions for conformance of style.
 
-  function startLine(token) {
-    return token.startLine || token.line;
+  function sameLine(first, second) {
+    return first.line === (second.startLine || second.line);
   }
 
   function nobreaknonadjacent(left, right) {
-    if (!state.option.laxbreak && left.line !== startLine(right)) {
+    if (!state.option.laxbreak && !sameLine(left, right)) {
       warning("W014", right, right.value);
     }
   }
 
   function nolinebreak(t) {
     t = t;
-    if (t.line !== startLine(state.tokens.next)) {
+    if (!sameLine(t, state.tokens.next)) {
       warning("E022", t, t.value);
     }
   }
 
-  function nobreakcomma(left, right) {
-    if (left.line !== startLine(right)) {
+  /**
+   * Validate the comma token in the "current" position of the token stream.
+   *
+   * @param {object} [opts]
+   * @param {boolean} [opts.property] - flag indicating whether the current
+   *                                    comma token is situated directly within
+   *                                    an object initializer
+   * @param {boolean} [opts.allowTrailing] - flag indicating whether the
+   *                                         current comma token may appear
+   *                                         directly before a delimiter
+   *
+   * @returns {boolean} flag indicating the validity of the current comma
+   *                    token; `false` if the token directly causes a syntax
+   *                    error, `true` otherwise
+   */
+  function checkComma(opts) {
+    var prev = state.tokens.prev;
+    var curr = state.tokens.curr;
+    opts = opts || {};
+
+    if (!sameLine(prev, curr)) {
       if (!state.option.laxcomma) {
-        if (parseComma.first) {
-          warning("I001");
-          parseComma.first = false;
+        if (checkComma.first) {
+          warning("I001", curr);
+          checkComma.first = false;
         }
-        warning("W014", left, right.value);
+        warning("W014", prev, curr.value);
       }
     }
-  }
-
-  function parseComma(opts) {
-    opts = opts || {};
-
-    if (!opts.peek) {
-      nobreakcomma(state.tokens.curr, state.tokens.next);
-      advance(",");
-    } else {
-      nobreakcomma(state.tokens.prev, state.tokens.curr);
-    }
 
     if (state.tokens.next.identifier && !(opts.property && state.inES5())) {
       // Keywords that cannot follow a comma operator.
@@ -25798,7 +25861,7 @@ var JSHINT = (function() {
    *                     support cases where further refinement is necessary)
    */
   function type(s, f) {
-    var x = delim(s);
+    var x = symbol(s, 0);
     x.type = s;
     x.nud = f;
     return x;
@@ -25983,7 +26046,7 @@ var JSHINT = (function() {
     "undefined", "boolean", "number", "string", "function", "object",
   ];
   typeofValues.es3 = typeofValues.es3.concat(typeofValues.legacy);
-  typeofValues.es6 = typeofValues.es3.concat("symbol");
+  typeofValues.es6 = typeofValues.es3.concat("symbol", "bigint");
 
   /**
    * Validate comparisons between the result of a `typeof` expression and a
@@ -26009,8 +26072,17 @@ var JSHINT = (function() {
 
     values = state.inES6() ? typeofValues.es6 : typeofValues.es3;
 
-    if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)")
+    if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)") {
+      if (left.value === "bigint") {
+        if (!state.option.unstable.bigint) {
+          warning("W144", left, "BigInt", "bigint");
+        }
+
+        return false;
+      }
+
       return !_.includes(values, left.value);
+    }
 
     return false;
   }
@@ -26167,13 +26239,11 @@ var JSHINT = (function() {
    * @param {function} [f] - a function to be invoked that consumes the
    *                         right-hand side of the operator (see the `infix`
    *                         function)
-   * @param {number} p - the left-binding power of the token as used by the
-   *                     Pratt parsing semantics
    *
    * @returns {object} - the object describing the JSHint symbol (provided to
    *                     support cases where further refinement is necessary)
    */
-  function assignop(s, f, p) {
+  function assignop(s, f) {
     var x = infix(s, typeof f === "function" ? f : function(context, left, that) {
       that.left = left;
 
@@ -26182,10 +26252,11 @@ var JSHINT = (function() {
       that.right = expression(context, 10);
 
       return that;
-    }, p);
+    }, 20);
 
     x.exps = true;
     x.assign = true;
+
     return x;
   }
 
@@ -26226,7 +26297,8 @@ var JSHINT = (function() {
    *                     support cases where further refinement is necessary)
    */
   function bitwiseassignop(s) {
-    return assignop(s, function(context, left, that) {
+    symbol(s, 20).exps = true;
+    return infix(s, function(context, left, that) {
       if (state.option.bitwise) {
         warning("W016", that, that.id);
       }
@@ -26407,18 +26479,18 @@ var JSHINT = (function() {
       // don't complain about unclosed templates / strings
       if (state.tokens.next.isUnclosed) return advance();
 
-      var sameLine = startLine(state.tokens.next) === state.tokens.curr.line &&
-                     state.tokens.next.id !== "(end)";
+      var isSameLine = sameLine(state.tokens.curr, state.tokens.next) &&
+                       state.tokens.next.id !== "(end)";
       var blockEnd = checkPunctuator(state.tokens.next, "}");
 
-      if (sameLine && !blockEnd && !(stmt.id === "do" && state.inES6(true))) {
+      if (isSameLine && !blockEnd && !(stmt.id === "do" && state.inES6(true))) {
         errorAt("E058", state.tokens.curr.line, state.tokens.curr.character);
       } else if (!state.option.asi) {
 
         // If this is the last statement in a block that ends on the same line
         // *and* option lastsemic is on, ignore the warning.  Otherwise, issue
         // a warning about missing semicolon.
-        if (!(blockEnd && sameLine && state.option.lastsemic)) {
+        if (!(blockEnd && isSameLine && state.option.lastsemic)) {
           warningAt("W033", state.tokens.curr.line, state.tokens.curr.character);
         }
       }
@@ -26512,6 +26584,7 @@ var JSHINT = (function() {
       } else if (state.option.nonew && r && r.left && r.id === "(" && r.left.id === "new") {
         warning("W031", t);
       }
+
       parseFinalSemicolon(t);
     }
 
@@ -26807,11 +26880,11 @@ var JSHINT = (function() {
       // ...it should not be considered as a variable in the current scope. It
       // will be added to the scope of the new function when the next token is
       // parsed, so it can be safely ignored for now.
-      var isLoneArrowParam = state.tokens.next.id !== "=>";
+      var isLoneArrowParam = state.tokens.next.id === "=>";
 
       if (isReserved(context, this)) {
         warning("W024", this, v);
-      } else if (isLoneArrowParam && !state.funct["(comparray)"].check(v)) {
+      } else if (!isLoneArrowParam && !state.funct["(comparray)"].check(v)) {
         state.funct["(scope)"].block.use(v, state.tokens.curr);
       }
 
@@ -26902,15 +26975,15 @@ var JSHINT = (function() {
     return this;
   });
 
-  assignop("=", "assign", 20);
-  assignop("+=", "assignadd", 20);
-  assignop("-=", "assignsub", 20);
-  assignop("*=", "assignmult", 20);
-  assignop("/=", "assigndiv", 20).nud = function() {
+  assignop("=", "assign");
+  assignop("+=", "assignadd");
+  assignop("-=", "assignsub");
+  assignop("*=", "assignmult");
+  assignop("/=", "assigndiv").nud = function() {
     /* istanbul ignore next */
     error("E014");
   };
-  assignop("%=", "assignmod", 20);
+  assignop("%=", "assignmod");
   assignop("**=", function(context, left, that) {
     if (!state.inES7()) {
       warning("W119", that, "Exponentiation operator", "7");
@@ -26923,7 +26996,7 @@ var JSHINT = (function() {
     that.right = expression(context, 10);
 
     return that;
-  }, 20);
+  });
 
   bitwiseassignop("&=");
   bitwiseassignop("|=");
@@ -26932,26 +27005,18 @@ var JSHINT = (function() {
   bitwiseassignop(">>=");
   bitwiseassignop(">>>=");
   infix(",", function(context, left, that) {
-    var expr;
-    that.exprs = [left];
-
     if (state.option.nocomma) {
-      warning("W127");
+      warning("W127", that);
     }
 
-    if (!parseComma({ peek: true })) {
-      return that;
-    }
-    while (true) {
-      if (!(expr = expression(context, 10))) {
-        /* istanbul ignore next */
-        break;
-      }
-      that.exprs.push(expr);
-      if (state.tokens.next.value !== "," || !parseComma()) {
-        break;
-      }
+    that.left = left;
+
+    if (checkComma()) {
+      that.right = expression(context, 10);
+    } else {
+      that.right = null;
     }
+
     return that;
   }, 10, true);
 
@@ -27147,12 +27212,10 @@ var JSHINT = (function() {
   suffix("++");
   prefix("++", "preinc");
   state.syntax["++"].exps = true;
-  state.syntax["++"].ltBoundary = "before";
 
   suffix("--");
   prefix("--", "predec");
   state.syntax["--"].exps = true;
-  state.syntax["--"].ltBoundary = "before";
 
   prefix("delete", function(context) {
     this.arity = "unary";
@@ -27570,7 +27633,7 @@ var JSHINT = (function() {
     }
 
     if (state.option.asi && checkPunctuators(state.tokens.prev, [")", "]"]) &&
-      state.tokens.prev.line !== startLine(state.tokens.curr)) {
+      !sameLine(state.tokens.prev, state.tokens.curr)) {
       warning("W014", state.tokens.curr, state.tokens.curr.id);
     }
 
@@ -27601,7 +27664,8 @@ var JSHINT = (function() {
         if (state.tokens.next.id !== ",") {
           break;
         }
-        parseComma({ allowTrailing: true });
+        advance(",");
+        checkComma({ allowTrailing: true });
 
         if (state.tokens.next.id === ")") {
           if (!state.inES8()) {
@@ -27700,44 +27764,50 @@ var JSHINT = (function() {
       return pn;
     }
 
-    var exprs = [];
-
-    if (state.tokens.next.id !== ")") {
-      for (;;) {
-        exprs.push(expression(context, 10));
+    // The ECMA262 grammar requires an expression between the "opening
+    // parenthesis" and "close parenthesis" tokens of the grouping operator.
+    // However, the "ignore" directive is commonly used to inject values that
+    // are not included in the token stream. For example:
+    //
+    //     return (
+    //       /*jshint ignore:start */
+    //       <div></div>
+    //       /*jshint ignore:end */
+    //     );
+    //
+    // The "empty" grouping operator is permitted in order to tolerate this
+    // pattern.
+    if (state.tokens.next.id === ")") {
+      advance(")");
+      return;
+    }
 
-        if (state.tokens.next.id !== ",") {
-          break;
-        }
+    ret = expression(context, 0);
 
-        if (state.option.nocomma) {
-          warning("W127");
-        }
+    advance(")", this);
 
-        parseComma();
-      }
+    if (!ret) {
+      return;
     }
 
-    advance(")", this);
-    if (state.option.immed && exprs[0] && exprs[0].id === "function") {
+    ret.paren = true;
+
+    if (state.option.immed && ret && ret.id === "function") {
       if (state.tokens.next.id !== "(" &&
         state.tokens.next.id !== "." && state.tokens.next.id !== "[") {
         warning("W068", this);
       }
     }
 
-    if (!exprs.length) {
-      return;
-    }
-
-    if (exprs.length > 1) {
-      ret = Object.create(state.syntax[","]);
-      ret.exprs = exprs;
+    if (ret.id === ",") {
+      first = ret.left;
+      while (first.id === ",") {
+        first = first.left;
+      }
 
-      first = exprs[0];
-      last = exprs[exprs.length - 1];
+      last = ret.right;
     } else {
-      ret = first = last = exprs[0];
+      first = last = ret;
 
       if (!isNecessary) {
         // async functions are identified after parsing due to the complexity
@@ -27775,22 +27845,18 @@ var JSHINT = (function() {
       }
     }
 
-    if (ret) {
-      ret.paren = true;
-
-      // The operator may be necessary to override the default binding power of
-      // neighboring operators (whenever there is an operator in use within the
-      // first expression *or* the current group contains multiple expressions)
-      if (!isNecessary && (isOperator(first) || ret.exprs)) {
-        isNecessary =
-          (rbp > first.lbp) ||
-          (rbp > 0 && rbp === first.lbp) ||
-          (!isEndOfExpr() && last.rbp < state.tokens.next.lbp);
-      }
+    // The operator may be necessary to override the default binding power of
+    // neighboring operators (whenever there is an operator in use within the
+    // first expression *or* the current group contains multiple expressions)
+    if (!isNecessary && (isOperator(first) || first !== last)) {
+      isNecessary =
+        (rbp > first.lbp) ||
+        (rbp > 0 && rbp === first.lbp) ||
+        (!isEndOfExpr() && last.rbp < state.tokens.next.lbp);
+    }
 
-      if (!isNecessary) {
-        warning("W126", opening);
-      }
+    if (!isNecessary) {
+      warning("W126", opening);
     }
 
     return ret;
@@ -27802,7 +27868,7 @@ var JSHINT = (function() {
     var e, s, canUseDot;
 
     if (state.option.asi && checkPunctuators(state.tokens.prev, [")", "]"]) &&
-      state.tokens.prev.line !== startLine(state.tokens.curr)) {
+      !sameLine(state.tokens.prev, state.tokens.curr)) {
       warning("W014", state.tokens.curr, state.tokens.curr.id);
     }
 
@@ -27915,7 +27981,7 @@ var JSHINT = (function() {
         });
       return this;
     }
-    var b = state.tokens.curr.line !== startLine(state.tokens.next);
+    var b = !sameLine(state.tokens.curr, state.tokens.next);
     this.first = [];
     if (b) {
       indent += state.option.indent;
@@ -27950,7 +28016,8 @@ var JSHINT = (function() {
 
       this.first.push(expression(context, 10));
       if (state.tokens.next.id === ",") {
-        parseComma({ allowTrailing: true });
+        advance(",");
+        checkComma({ allowTrailing: true });
         if (state.tokens.next.id === "]" && !state.inES5()) {
           warning("W070", state.tokens.curr);
           break;
@@ -28109,7 +28176,8 @@ var JSHINT = (function() {
         if (pastRest) {
           warning("W131", state.tokens.next);
         }
-        parseComma({ allowTrailing: true });
+        advance(",");
+        checkComma({ allowTrailing: true });
       }
 
       if (state.tokens.next.id === ")") {
@@ -28159,7 +28227,7 @@ var JSHINT = (function() {
       "(context)"   : null,
       "(scope)"     : null,
       "(comparray)" : null,
-      "(generator)" : null,
+      "(yielded)"   : null,
       "(arrow)"     : null,
       "(async)"     : null,
       "(params)"    : null
@@ -28282,6 +28350,12 @@ var JSHINT = (function() {
     } else {
       context &= ~prodParams.async;
     }
+
+    if (isGenerator) {
+      context |= prodParams.yield;
+    } else if (!isArrow) {
+      context &= ~prodParams.yield;
+    }
     context &= ~prodParams.preAsync;
 
     state.option = Object.create(state.option);
@@ -28292,7 +28366,6 @@ var JSHINT = (function() {
       "(context)":   state.funct,
       "(arrow)":     isArrow,
       "(method)":    isMethod,
-      "(generator)": isGenerator,
       "(async)":     isAsync
     });
 
@@ -28334,6 +28407,8 @@ var JSHINT = (function() {
     }
 
     if (isArrow) {
+      context &= ~prodParams.yield;
+
       if (!state.inES6(true)) {
         warning("W119", state.tokens.curr, "arrow function syntax (=>)", "6");
       }
@@ -28345,8 +28420,7 @@ var JSHINT = (function() {
 
     block(context, false, true, true, isArrow);
 
-    if (!state.option.noyield && isGenerator &&
-        state.funct["(generator)"] !== "yielded") {
+    if (!state.option.noyield && isGenerator && !state.funct["(yielded)"]) {
       warning("W124", state.tokens.curr);
     }
 
@@ -28421,38 +28495,20 @@ var JSHINT = (function() {
     state.funct["(metrics)"].ComplexityCount += 1;
   }
 
-  /**
-   * Detect and warn about assignment that occurs within conditional clauses,
-   * e.g.
-   *
-   *     if (a = 1) { ... }
-   *
-   * This check is disabled in response to parenthesized expressions so that
-   * users may opt out of the warning on a case-by-case bases, e.g.
-   *
-   *     if ((a = 1)) { ... }
-   *
-   * @param {object} expr - the parsed expression within the conditional clause
-   */
-  function checkCondAssignment(expr) {
-    if (!expr || expr.paren || state.option.boss) {
+  // Parse assignments that were found instead of conditionals.
+  // For example: if (a = 1) { ... }
+
+  function checkCondAssignment(token) {
+    if (!token || token.paren) {
       return;
     }
 
-    var id = expr.id;
-
-    // If the expression is composed of multiple sub-expressions via a comma
-    // operator, then check the final sub-expression.
-    if (id === ",") {
-      expr = expr.exprs[expr.exprs.length - 1];
-      id = expr.id;
-
-      if (expr.paren) {
-        return;
-      }
+    if (token.id === ",") {
+      checkCondAssignment(token.right);
+      return;
     }
 
-    switch (id) {
+    switch (token.id) {
     case "=":
     case "+=":
     case "-=":
@@ -28462,7 +28518,9 @@ var JSHINT = (function() {
     case "|=":
     case "^=":
     case "/=":
-      warning("W084");
+      if (!state.option.boss) {
+        warning("W084", token);
+      }
     }
   }
 
@@ -28507,7 +28565,7 @@ var JSHINT = (function() {
       var props = Object.create(null); // All properties, including accessors
       var isAsyncMethod = false;
 
-      b = state.tokens.curr.line !== startLine(state.tokens.next);
+      b = !sameLine(state.tokens.curr, state.tokens.next);
       if (b) {
         indent += state.option.indent;
         if (state.tokens.next.from === indent + state.option.indent) {
@@ -28549,7 +28607,7 @@ var JSHINT = (function() {
           }
 
           if (state.tokens.next.id === "[") {
-            i = computedPropertyName();
+            i = computedPropertyName(context);
           } else {
             i = propertyName(context);
 
@@ -28642,7 +28700,8 @@ var JSHINT = (function() {
         countMember(i);
 
         if (state.tokens.next.id === ",") {
-          parseComma({ allowTrailing: true, property: true });
+          advance(",");
+          checkComma({ allowTrailing: true, property: true });
           if (state.tokens.next.id === ",") {
             /* istanbul ignore next */
             warning("W070", state.tokens.curr);
@@ -28977,7 +29036,8 @@ var JSHINT = (function() {
       }
 
       statement.hasComma = true;
-      parseComma();
+      advance(",");
+      checkComma();
     }
     if (letblock) {
       advance(")");
@@ -29149,7 +29209,8 @@ var JSHINT = (function() {
         break;
       }
       this.hasComma = true;
-      parseComma();
+      advance(",");
+      checkComma();
     }
 
     return this;
@@ -29251,6 +29312,10 @@ var JSHINT = (function() {
       type: generator ? "generator" : null
     });
 
+    if (generator && nameToken && nameToken.value === "yield") {
+      error("E024", nameToken, "yield");
+    }
+
     if (nameToken && (f["(name)"] === "arguments" || f["(name)"] === "eval") &&
       f["(isStrict)"]) {
       error("E008", nameToken);
@@ -29262,7 +29327,6 @@ var JSHINT = (function() {
   blockstmt("if", function(context) {
     var t = state.tokens.next;
     increaseComplexityCount();
-    state.condition = true;
     advance("(");
     var expr = expression(context, 0);
 
@@ -29286,7 +29350,6 @@ var JSHINT = (function() {
     }
 
     advance(")", t);
-    state.condition = false;
     var s = block(context, true, true);
 
     // When the if is within a for-in loop and the condition has a negative form,
@@ -29310,13 +29373,11 @@ var JSHINT = (function() {
 
   blockstmt("try", function(context) {
     var b;
+    var hasParameter = false;
 
-    function doCatch() {
-      advance("catch");
+    function catchParameter() {
       advance("(");
 
-      state.funct["(scope)"].stack("catchparams");
-
       if (checkPunctuators(state.tokens.next, ["[", "{"])) {
         var tokens = destructuringPattern(context);
         _.each(tokens, function(token) {
@@ -29341,9 +29402,6 @@ var JSHINT = (function() {
       }
 
       advance(")");
-
-      block(context, false);
-      state.funct["(scope)"].unstack();
     }
 
     block(context | prodParams.tryClause, true);
@@ -29353,7 +29411,20 @@ var JSHINT = (function() {
       if (b && (!state.inMoz())) {
         warning("W118", state.tokens.next, "multiple catch blocks");
       }
-      doCatch();
+      advance("catch");
+      if (state.tokens.next.id !== "{") {
+        state.funct["(scope)"].stack("catchparams");
+        hasParameter = true;
+        catchParameter();
+      } else if (!state.inES10()) {
+        warning("W119", state.tokens.curr, "optional catch binding", "10");
+      }
+      block(context, false);
+
+      if (hasParameter) {
+        state.funct["(scope)"].unstack();
+        hasParameter = false;
+      }
       b = true;
     }
 
@@ -29777,7 +29848,8 @@ var JSHINT = (function() {
           if (state.tokens.next.id !== ",") {
             break;
           }
-          parseComma();
+          advance(",");
+          checkComma();
         }
       }
       advance(")", t);
@@ -29802,7 +29874,7 @@ var JSHINT = (function() {
       nolinebreak(this);
 
     if (state.tokens.next.identifier &&
-        state.tokens.curr.line === startLine(state.tokens.next)) {
+        sameLine(state.tokens.curr, state.tokens.next)) {
       if (!state.funct["(scope)"].funct.hasLabel(v)) {
         warning("W090", state.tokens.next, v);
       }
@@ -29830,7 +29902,7 @@ var JSHINT = (function() {
       nolinebreak(this);
 
     if (state.tokens.next.identifier) {
-      if (state.tokens.curr.line === startLine(state.tokens.next)) {
+      if (sameLine(state.tokens.curr, state.tokens.next)) {
         if (!state.funct["(scope)"].funct.hasLabel(v)) {
           warning("W090", state.tokens.next, v);
         }
@@ -29846,14 +29918,14 @@ var JSHINT = (function() {
 
 
   stmt("return", function(context) {
-    if (this.line === startLine(state.tokens.next)) {
+    if (sameLine(this, state.tokens.next)) {
       if (state.tokens.next.id !== ";" && !state.tokens.next.reach) {
         this.first = expression(context, 0);
 
         if (this.first &&
             this.first.type === "(punctuator)" && this.first.value === "=" &&
             !this.first.paren && !state.option.boss) {
-          warningAt("W093", this.first.line, this.first.character);
+          warning("W093", this.first);
         }
 
         if (state.option.noreturnawait && context & prodParams.async &&
@@ -29948,14 +30020,19 @@ var JSHINT = (function() {
     return state.syntax["(identifier)"].nud.apply(this, arguments);
   })));
 
-  (function(x) {
-    x.exps = true;
-    x.lbp = x.rbp = 25;
-    x.ltBoundary = "after";
-  }(prefix("yield", function(context) {
+  (function(yieldSymbol) {
+    yieldSymbol.rbp = yieldSymbol.lbp = 25;
+    yieldSymbol.exps = true;
+  })(prefix("yield", function(context) {
     if (state.inMoz()) {
       return mozYield.call(this, context);
     }
+
+    if (!(context & prodParams.yield)) {
+      this.exps = false;
+      return state.syntax["(identifier)"].nud.apply(this, arguments);
+    }
+
     var prev = state.tokens.prev;
 
     // If the parameters of the current function scope have not been defined,
@@ -29969,22 +30046,17 @@ var JSHINT = (function() {
       error("E061", this);
     }
 
-    if (state.inES6(true) && !state.funct["(generator)"]) {
-      // If it's a yield within a catch clause inside a generator then that's ok
-      if (!("(catch)" === state.funct["(name)"] && state.funct["(context)"]["(generator)"])) {
-        error("E046", state.tokens.curr, "yield");
-      }
-    } else if (!state.inES6()) {
+    if (!state.inES6()) {
       warning("W104", state.tokens.curr, "yield", "6");
     }
-    state.funct["(generator)"] = "yielded";
+    state.funct["(yielded)"] = true;
 
     if (state.tokens.next.value === "*") {
       advance("*");
     }
 
     // Parse operand
-    if (!isEndOfExpr() && state.tokens.next.id !== ",") {
+    if (state.tokens.curr.value === "*" || sameLine(state.tokens.curr, state.tokens.next)) {
       if (state.tokens.next.nud) {
 
         nobreaknonadjacent(state.tokens.curr, state.tokens.next);
@@ -29992,7 +30064,7 @@ var JSHINT = (function() {
 
         if (this.first.type === "(punctuator)" && this.first.value === "=" &&
             !this.first.paren && !state.option.boss) {
-          warningAt("W093", this.first.line, this.first.character);
+          warning("W093", this.first);
         }
       } else if (state.tokens.next.led) {
         if (state.tokens.next.id !== ",") {
@@ -30002,7 +30074,7 @@ var JSHINT = (function() {
     }
 
     return this;
-  })));
+  }));
 
   /**
    * Parsing logic for non-standard Mozilla implementation of `yield`
@@ -30010,13 +30082,10 @@ var JSHINT = (function() {
    */
   var mozYield = function(context) {
     var prev = state.tokens.prev;
-    if (state.inES6(true) && !state.funct["(generator)"]) {
-      // If it's a yield within a catch clause inside a generator then that's ok
-      if (!("(catch)" === state.funct["(name)"] && state.funct["(context)"]["(generator)"])) {
-        error("E046", state.tokens.curr, "yield");
-      }
+    if (state.inES6(true) && !(context & prodParams.yield)) {
+      error("E046", state.tokens.curr, "yield");
     }
-    state.funct["(generator)"] = "yielded";
+    state.funct["(yielded)"] = true;
     var delegatingYield = false;
 
     if (state.tokens.next.value === "*") {
@@ -30024,7 +30093,7 @@ var JSHINT = (function() {
       advance("*");
     }
 
-    if (this.line === startLine(state.tokens.next)) {
+    if (sameLine(this, state.tokens.next)) {
       if (delegatingYield ||
           (state.tokens.next.id !== ";" && !state.option.asi &&
            !state.tokens.next.reach && state.tokens.next.nud)) {
@@ -30034,12 +30103,11 @@ var JSHINT = (function() {
 
         if (this.first.type === "(punctuator)" && this.first.value === "=" &&
             !this.first.paren && !state.option.boss) {
-          warningAt("W093", this.first.line, this.first.character);
+          warning("W093", this.first);
         }
       }
-
       if (state.tokens.next.id !== ")" &&
-          (prev.lbp > 30 || (!prev.assign && !isEndOfExpr()) || prev.id === "yield")) {
+          (prev.lbp > 30 || (!prev.assign && !isEndOfExpr()))) {
         error("E050", this);
       }
     } else if (!state.option.asi) {
@@ -31026,7 +31094,7 @@ var JSHINT = (function() {
       combine(predefined, g || {});
 
       //reset values
-      parseComma.first = true;
+      checkComma.first = true;
 
       advance();
       switch (state.tokens.next.id) {
diff --git a/package.json b/package.json
index f8aab3dc..cf4b91e1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "jshint",
-  "version": "2.10.3",
+  "version": "2.11.0",
   "homepage": "http://jshint.com/",
   "description": "Static analysis tool for JavaScript",
   "author": {
@@ -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",
+    "coverage": "istanbul -- cover ./node_modules/nodeunit/bin/nodeunit tests/unit tests/unit/unstable",
     "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",
+    "test-unit": "nodeunit tests/unit tests/unit/unstable",
     "test": "npm run test-node && npm run test-browser"
   },
   "main": "./src/jshint.js",
diff --git a/src/jshint.js b/src/jshint.js
index 17224bc8..66193ba2 100644
--- a/src/jshint.js
+++ b/src/jshint.js
@@ -179,6 +179,10 @@ var JSHINT = (function() {
       return false;
     }
 
+    if (token.id === "yield" && (!(context & prodParams.yield))) {
+      return state.isStrict();
+    }
+
     return true;
   }
 
@@ -471,10 +475,9 @@ var JSHINT = (function() {
     }
 
     if (directiveToken.type === "globals") {
-      body.forEach(function(g, idx) {
-        g = g.split(":");
-        var key = g[0].trim();
-        var val = (g[1] || "").trim();
+      body.forEach(function(item, idx) {
+        var parts = item.split(":");
+        var key = parts[0].trim();
 
         if (key === "-" || !key.length) {
           // Ignore trailing comma
@@ -487,12 +490,11 @@ var JSHINT = (function() {
 
         if (key.charAt(0) === "-") {
           key = key.slice(1);
-          val = false;
 
           JSHINT.blacklist[key] = key;
           delete predefined[key];
         } else {
-          predef[key] = (val === "true");
+          predef[key] = parts.length > 1 && parts[1].trim() === "true";
         }
       });
 
@@ -549,10 +551,11 @@ var JSHINT = (function() {
 
     if (directiveToken.type === "jshint" || directiveToken.type === "jslint" ||
       directiveToken.type === "jshint.unstable") {
-      body.forEach(function(g) {
-        g = g.split(":");
-        var key = g[0].trim();
-        var val = (g[1] || "").trim();
+      body.forEach(function(item) {
+        var parts = item.split(":");
+        var key = parts[0].trim();
+        var val = parts.length > 1 ? parts[1].trim() : "";
+        var numberVal;
 
         if (!checkOption(key, directiveToken.type !== "jshint.unstable", directiveToken)) {
           return;
@@ -561,14 +564,15 @@ var JSHINT = (function() {
         if (numvals.indexOf(key) >= 0) {
           // GH988 - numeric options can be disabled by setting them to `false`
           if (val !== "false") {
-            val = +val;
+            numberVal = +val;
 
-            if (typeof val !== "number" || !isFinite(val) || val <= 0 || Math.floor(val) !== val) {
-              error("E032", directiveToken, g[1].trim());
+            if (typeof numberVal !== "number" || !isFinite(numberVal) ||
+              numberVal <= 0 || Math.floor(numberVal) !== numberVal) {
+              error("E032", directiveToken, val);
               return;
             }
 
-            state.option[key] = val;
+            state.option[key] = numberVal;
           } else {
             state.option[key] = key === "indent" ? 4 : false;
           }
@@ -705,6 +709,7 @@ var JSHINT = (function() {
           case "7":
           case "8":
           case "9":
+          case "10":
             state.option.moz = false;
             state.option.esversion = +val;
             break;
@@ -712,6 +717,7 @@ var JSHINT = (function() {
           case "2016":
           case "2017":
           case "2018":
+          case "2019":
             state.option.moz = false;
             // Translate specification publication year to version number.
             state.option.esversion = +val - 2009;
@@ -742,7 +748,6 @@ 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");
@@ -891,13 +896,21 @@ var JSHINT = (function() {
     if (next.id === "in" && context & prodParams.noin) {
       return true;
     }
+
     if (next.id === ";" || next.id === "}" || next.id === ":") {
       return true;
     }
-    if (next.infix === curr.infix || curr.ltBoundary === "after" ||
-      next.ltBoundary === "before") {
-      return curr.line !== startLine(next);
+
+    if (next.infix === curr.infix ||
+      // Infix operators which follow `yield` should only be consumed as part
+      // of the current expression if allowed by the syntactic grammar. In
+      // effect, this prevents automatic semicolon insertion when `yield` is
+      // followed by a newline and a comma operator (without enabling it when
+      // `yield` is followed by a newline and a `[` token).
+      (curr.id === "yield" && curr.rbp < next.rbp)) {
+      return !sameLine(curr, next);
     }
+
     return false;
   }
 
@@ -1004,44 +1017,52 @@ var JSHINT = (function() {
 
   // Functions for conformance of style.
 
-  function startLine(token) {
-    return token.startLine || token.line;
+  function sameLine(first, second) {
+    return first.line === (second.startLine || second.line);
   }
 
   function nobreaknonadjacent(left, right) {
-    if (!state.option.laxbreak && left.line !== startLine(right)) {
+    if (!state.option.laxbreak && !sameLine(left, right)) {
       warning("W014", right, right.value);
     }
   }
 
   function nolinebreak(t) {
     t = t;
-    if (t.line !== startLine(state.tokens.next)) {
+    if (!sameLine(t, state.tokens.next)) {
       warning("E022", t, t.value);
     }
   }
 
-  function nobreakcomma(left, right) {
-    if (left.line !== startLine(right)) {
+  /**
+   * Validate the comma token in the "current" position of the token stream.
+   *
+   * @param {object} [opts]
+   * @param {boolean} [opts.property] - flag indicating whether the current
+   *                                    comma token is situated directly within
+   *                                    an object initializer
+   * @param {boolean} [opts.allowTrailing] - flag indicating whether the
+   *                                         current comma token may appear
+   *                                         directly before a delimiter
+   *
+   * @returns {boolean} flag indicating the validity of the current comma
+   *                    token; `false` if the token directly causes a syntax
+   *                    error, `true` otherwise
+   */
+  function checkComma(opts) {
+    var prev = state.tokens.prev;
+    var curr = state.tokens.curr;
+    opts = opts || {};
+
+    if (!sameLine(prev, curr)) {
       if (!state.option.laxcomma) {
-        if (parseComma.first) {
-          warning("I001");
-          parseComma.first = false;
+        if (checkComma.first) {
+          warning("I001", curr);
+          checkComma.first = false;
         }
-        warning("W014", left, right.value);
+        warning("W014", prev, curr.value);
       }
     }
-  }
-
-  function parseComma(opts) {
-    opts = opts || {};
-
-    if (!opts.peek) {
-      nobreakcomma(state.tokens.curr, state.tokens.next);
-      advance(",");
-    } else {
-      nobreakcomma(state.tokens.prev, state.tokens.curr);
-    }
 
     if (state.tokens.next.identifier && !(opts.property && state.inES5())) {
       // Keywords that cannot follow a comma operator.
@@ -1238,7 +1259,7 @@ var JSHINT = (function() {
    *                     support cases where further refinement is necessary)
    */
   function type(s, f) {
-    var x = delim(s);
+    var x = symbol(s, 0);
     x.type = s;
     x.nud = f;
     return x;
@@ -1423,7 +1444,7 @@ var JSHINT = (function() {
     "undefined", "boolean", "number", "string", "function", "object",
   ];
   typeofValues.es3 = typeofValues.es3.concat(typeofValues.legacy);
-  typeofValues.es6 = typeofValues.es3.concat("symbol");
+  typeofValues.es6 = typeofValues.es3.concat("symbol", "bigint");
 
   /**
    * Validate comparisons between the result of a `typeof` expression and a
@@ -1449,8 +1470,17 @@ var JSHINT = (function() {
 
     values = state.inES6() ? typeofValues.es6 : typeofValues.es3;
 
-    if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)")
+    if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)") {
+      if (left.value === "bigint") {
+        if (!state.option.unstable.bigint) {
+          warning("W144", left, "BigInt", "bigint");
+        }
+
+        return false;
+      }
+
       return !_.includes(values, left.value);
+    }
 
     return false;
   }
@@ -1607,13 +1637,11 @@ var JSHINT = (function() {
    * @param {function} [f] - a function to be invoked that consumes the
    *                         right-hand side of the operator (see the `infix`
    *                         function)
-   * @param {number} p - the left-binding power of the token as used by the
-   *                     Pratt parsing semantics
    *
    * @returns {object} - the object describing the JSHint symbol (provided to
    *                     support cases where further refinement is necessary)
    */
-  function assignop(s, f, p) {
+  function assignop(s, f) {
     var x = infix(s, typeof f === "function" ? f : function(context, left, that) {
       that.left = left;
 
@@ -1622,10 +1650,11 @@ var JSHINT = (function() {
       that.right = expression(context, 10);
 
       return that;
-    }, p);
+    }, 20);
 
     x.exps = true;
     x.assign = true;
+
     return x;
   }
 
@@ -1666,7 +1695,8 @@ var JSHINT = (function() {
    *                     support cases where further refinement is necessary)
    */
   function bitwiseassignop(s) {
-    return assignop(s, function(context, left, that) {
+    symbol(s, 20).exps = true;
+    return infix(s, function(context, left, that) {
       if (state.option.bitwise) {
         warning("W016", that, that.id);
       }
@@ -1847,18 +1877,18 @@ var JSHINT = (function() {
       // don't complain about unclosed templates / strings
       if (state.tokens.next.isUnclosed) return advance();
 
-      var sameLine = startLine(state.tokens.next) === state.tokens.curr.line &&
-                     state.tokens.next.id !== "(end)";
+      var isSameLine = sameLine(state.tokens.curr, state.tokens.next) &&
+                       state.tokens.next.id !== "(end)";
       var blockEnd = checkPunctuator(state.tokens.next, "}");
 
-      if (sameLine && !blockEnd && !(stmt.id === "do" && state.inES6(true))) {
+      if (isSameLine && !blockEnd && !(stmt.id === "do" && state.inES6(true))) {
         errorAt("E058", state.tokens.curr.line, state.tokens.curr.character);
       } else if (!state.option.asi) {
 
         // If this is the last statement in a block that ends on the same line
         // *and* option lastsemic is on, ignore the warning.  Otherwise, issue
         // a warning about missing semicolon.
-        if (!(blockEnd && sameLine && state.option.lastsemic)) {
+        if (!(blockEnd && isSameLine && state.option.lastsemic)) {
           warningAt("W033", state.tokens.curr.line, state.tokens.curr.character);
         }
       }
@@ -1952,6 +1982,7 @@ var JSHINT = (function() {
       } else if (state.option.nonew && r && r.left && r.id === "(" && r.left.id === "new") {
         warning("W031", t);
       }
+
       parseFinalSemicolon(t);
     }
 
@@ -2342,15 +2373,15 @@ var JSHINT = (function() {
     return this;
   });
 
-  assignop("=", "assign", 20);
-  assignop("+=", "assignadd", 20);
-  assignop("-=", "assignsub", 20);
-  assignop("*=", "assignmult", 20);
-  assignop("/=", "assigndiv", 20).nud = function() {
+  assignop("=", "assign");
+  assignop("+=", "assignadd");
+  assignop("-=", "assignsub");
+  assignop("*=", "assignmult");
+  assignop("/=", "assigndiv").nud = function() {
     /* istanbul ignore next */
     error("E014");
   };
-  assignop("%=", "assignmod", 20);
+  assignop("%=", "assignmod");
   assignop("**=", function(context, left, that) {
     if (!state.inES7()) {
       warning("W119", that, "Exponentiation operator", "7");
@@ -2363,7 +2394,7 @@ var JSHINT = (function() {
     that.right = expression(context, 10);
 
     return that;
-  }, 20);
+  });
 
   bitwiseassignop("&=");
   bitwiseassignop("|=");
@@ -2372,26 +2403,18 @@ var JSHINT = (function() {
   bitwiseassignop(">>=");
   bitwiseassignop(">>>=");
   infix(",", function(context, left, that) {
-    var expr;
-    that.exprs = [left];
-
     if (state.option.nocomma) {
-      warning("W127");
+      warning("W127", that);
     }
 
-    if (!parseComma({ peek: true })) {
-      return that;
-    }
-    while (true) {
-      if (!(expr = expression(context, 10))) {
-        /* istanbul ignore next */
-        break;
-      }
-      that.exprs.push(expr);
-      if (state.tokens.next.value !== "," || !parseComma()) {
-        break;
-      }
+    that.left = left;
+
+    if (checkComma()) {
+      that.right = expression(context, 10);
+    } else {
+      that.right = null;
     }
+
     return that;
   }, 10, true);
 
@@ -2587,12 +2610,10 @@ var JSHINT = (function() {
   suffix("++");
   prefix("++", "preinc");
   state.syntax["++"].exps = true;
-  state.syntax["++"].ltBoundary = "before";
 
   suffix("--");
   prefix("--", "predec");
   state.syntax["--"].exps = true;
-  state.syntax["--"].ltBoundary = "before";
 
   prefix("delete", function(context) {
     this.arity = "unary";
@@ -3010,7 +3031,7 @@ var JSHINT = (function() {
     }
 
     if (state.option.asi && checkPunctuators(state.tokens.prev, [")", "]"]) &&
-      state.tokens.prev.line !== startLine(state.tokens.curr)) {
+      !sameLine(state.tokens.prev, state.tokens.curr)) {
       warning("W014", state.tokens.curr, state.tokens.curr.id);
     }
 
@@ -3041,7 +3062,8 @@ var JSHINT = (function() {
         if (state.tokens.next.id !== ",") {
           break;
         }
-        parseComma({ allowTrailing: true });
+        advance(",");
+        checkComma({ allowTrailing: true });
 
         if (state.tokens.next.id === ")") {
           if (!state.inES8()) {
@@ -3140,44 +3162,50 @@ var JSHINT = (function() {
       return pn;
     }
 
-    var exprs = [];
-
-    if (state.tokens.next.id !== ")") {
-      for (;;) {
-        exprs.push(expression(context, 10));
+    // The ECMA262 grammar requires an expression between the "opening
+    // parenthesis" and "close parenthesis" tokens of the grouping operator.
+    // However, the "ignore" directive is commonly used to inject values that
+    // are not included in the token stream. For example:
+    //
+    //     return (
+    //       /*jshint ignore:start */
+    //       <div></div>
+    //       /*jshint ignore:end */
+    //     );
+    //
+    // The "empty" grouping operator is permitted in order to tolerate this
+    // pattern.
+    if (state.tokens.next.id === ")") {
+      advance(")");
+      return;
+    }
 
-        if (state.tokens.next.id !== ",") {
-          break;
-        }
+    ret = expression(context, 0);
 
-        if (state.option.nocomma) {
-          warning("W127");
-        }
+    advance(")", this);
 
-        parseComma();
-      }
+    if (!ret) {
+      return;
     }
 
-    advance(")", this);
-    if (state.option.immed && exprs[0] && exprs[0].id === "function") {
+    ret.paren = true;
+
+    if (state.option.immed && ret && ret.id === "function") {
       if (state.tokens.next.id !== "(" &&
         state.tokens.next.id !== "." && state.tokens.next.id !== "[") {
         warning("W068", this);
       }
     }
 
-    if (!exprs.length) {
-      return;
-    }
-
-    if (exprs.length > 1) {
-      ret = Object.create(state.syntax[","]);
-      ret.exprs = exprs;
+    if (ret.id === ",") {
+      first = ret.left;
+      while (first.id === ",") {
+        first = first.left;
+      }
 
-      first = exprs[0];
-      last = exprs[exprs.length - 1];
+      last = ret.right;
     } else {
-      ret = first = last = exprs[0];
+      first = last = ret;
 
       if (!isNecessary) {
         // async functions are identified after parsing due to the complexity
@@ -3215,22 +3243,18 @@ var JSHINT = (function() {
       }
     }
 
-    if (ret) {
-      ret.paren = true;
-
-      // The operator may be necessary to override the default binding power of
-      // neighboring operators (whenever there is an operator in use within the
-      // first expression *or* the current group contains multiple expressions)
-      if (!isNecessary && (isOperator(first) || ret.exprs)) {
-        isNecessary =
-          (rbp > first.lbp) ||
-          (rbp > 0 && rbp === first.lbp) ||
-          (!isEndOfExpr() && last.rbp < state.tokens.next.lbp);
-      }
+    // The operator may be necessary to override the default binding power of
+    // neighboring operators (whenever there is an operator in use within the
+    // first expression *or* the current group contains multiple expressions)
+    if (!isNecessary && (isOperator(first) || first !== last)) {
+      isNecessary =
+        (rbp > first.lbp) ||
+        (rbp > 0 && rbp === first.lbp) ||
+        (!isEndOfExpr() && last.rbp < state.tokens.next.lbp);
+    }
 
-      if (!isNecessary) {
-        warning("W126", opening);
-      }
+    if (!isNecessary) {
+      warning("W126", opening);
     }
 
     return ret;
@@ -3242,7 +3266,7 @@ var JSHINT = (function() {
     var e, s, canUseDot;
 
     if (state.option.asi && checkPunctuators(state.tokens.prev, [")", "]"]) &&
-      state.tokens.prev.line !== startLine(state.tokens.curr)) {
+      !sameLine(state.tokens.prev, state.tokens.curr)) {
       warning("W014", state.tokens.curr, state.tokens.curr.id);
     }
 
@@ -3355,7 +3379,7 @@ var JSHINT = (function() {
         });
       return this;
     }
-    var b = state.tokens.curr.line !== startLine(state.tokens.next);
+    var b = !sameLine(state.tokens.curr, state.tokens.next);
     this.first = [];
     if (b) {
       indent += state.option.indent;
@@ -3390,7 +3414,8 @@ var JSHINT = (function() {
 
       this.first.push(expression(context, 10));
       if (state.tokens.next.id === ",") {
-        parseComma({ allowTrailing: true });
+        advance(",");
+        checkComma({ allowTrailing: true });
         if (state.tokens.next.id === "]" && !state.inES5()) {
           warning("W070", state.tokens.curr);
           break;
@@ -3549,7 +3574,8 @@ var JSHINT = (function() {
         if (pastRest) {
           warning("W131", state.tokens.next);
         }
-        parseComma({ allowTrailing: true });
+        advance(",");
+        checkComma({ allowTrailing: true });
       }
 
       if (state.tokens.next.id === ")") {
@@ -3599,7 +3625,7 @@ var JSHINT = (function() {
       "(context)"   : null,
       "(scope)"     : null,
       "(comparray)" : null,
-      "(generator)" : null,
+      "(yielded)"   : null,
       "(arrow)"     : null,
       "(async)"     : null,
       "(params)"    : null
@@ -3722,6 +3748,12 @@ var JSHINT = (function() {
     } else {
       context &= ~prodParams.async;
     }
+
+    if (isGenerator) {
+      context |= prodParams.yield;
+    } else if (!isArrow) {
+      context &= ~prodParams.yield;
+    }
     context &= ~prodParams.preAsync;
 
     state.option = Object.create(state.option);
@@ -3732,7 +3764,6 @@ var JSHINT = (function() {
       "(context)":   state.funct,
       "(arrow)":     isArrow,
       "(method)":    isMethod,
-      "(generator)": isGenerator,
       "(async)":     isAsync
     });
 
@@ -3774,6 +3805,8 @@ var JSHINT = (function() {
     }
 
     if (isArrow) {
+      context &= ~prodParams.yield;
+
       if (!state.inES6(true)) {
         warning("W119", state.tokens.curr, "arrow function syntax (=>)", "6");
       }
@@ -3785,8 +3818,7 @@ var JSHINT = (function() {
 
     block(context, false, true, true, isArrow);
 
-    if (!state.option.noyield && isGenerator &&
-        state.funct["(generator)"] !== "yielded") {
+    if (!state.option.noyield && isGenerator && !state.funct["(yielded)"]) {
       warning("W124", state.tokens.curr);
     }
 
@@ -3861,38 +3893,20 @@ var JSHINT = (function() {
     state.funct["(metrics)"].ComplexityCount += 1;
   }
 
-  /**
-   * Detect and warn about assignment that occurs within conditional clauses,
-   * e.g.
-   *
-   *     if (a = 1) { ... }
-   *
-   * This check is disabled in response to parenthesized expressions so that
-   * users may opt out of the warning on a case-by-case bases, e.g.
-   *
-   *     if ((a = 1)) { ... }
-   *
-   * @param {object} expr - the parsed expression within the conditional clause
-   */
-  function checkCondAssignment(expr) {
-    if (!expr || expr.paren || state.option.boss) {
+  // Parse assignments that were found instead of conditionals.
+  // For example: if (a = 1) { ... }
+
+  function checkCondAssignment(token) {
+    if (!token || token.paren) {
       return;
     }
 
-    var id = expr.id;
-
-    // If the expression is composed of multiple sub-expressions via a comma
-    // operator, then check the final sub-expression.
-    if (id === ",") {
-      expr = expr.exprs[expr.exprs.length - 1];
-      id = expr.id;
-
-      if (expr.paren) {
-        return;
-      }
+    if (token.id === ",") {
+      checkCondAssignment(token.right);
+      return;
     }
 
-    switch (id) {
+    switch (token.id) {
     case "=":
     case "+=":
     case "-=":
@@ -3902,7 +3916,9 @@ var JSHINT = (function() {
     case "|=":
     case "^=":
     case "/=":
-      warning("W084");
+      if (!state.option.boss) {
+        warning("W084", token);
+      }
     }
   }
 
@@ -3947,7 +3963,7 @@ var JSHINT = (function() {
       var props = Object.create(null); // All properties, including accessors
       var isAsyncMethod = false;
 
-      b = state.tokens.curr.line !== startLine(state.tokens.next);
+      b = !sameLine(state.tokens.curr, state.tokens.next);
       if (b) {
         indent += state.option.indent;
         if (state.tokens.next.from === indent + state.option.indent) {
@@ -3989,7 +4005,7 @@ var JSHINT = (function() {
           }
 
           if (state.tokens.next.id === "[") {
-            i = computedPropertyName();
+            i = computedPropertyName(context);
           } else {
             i = propertyName(context);
 
@@ -4082,7 +4098,8 @@ var JSHINT = (function() {
         countMember(i);
 
         if (state.tokens.next.id === ",") {
-          parseComma({ allowTrailing: true, property: true });
+          advance(",");
+          checkComma({ allowTrailing: true, property: true });
           if (state.tokens.next.id === ",") {
             /* istanbul ignore next */
             warning("W070", state.tokens.curr);
@@ -4417,7 +4434,8 @@ var JSHINT = (function() {
       }
 
       statement.hasComma = true;
-      parseComma();
+      advance(",");
+      checkComma();
     }
     if (letblock) {
       advance(")");
@@ -4589,7 +4607,8 @@ var JSHINT = (function() {
         break;
       }
       this.hasComma = true;
-      parseComma();
+      advance(",");
+      checkComma();
     }
 
     return this;
@@ -4691,6 +4710,10 @@ var JSHINT = (function() {
       type: generator ? "generator" : null
     });
 
+    if (generator && nameToken && nameToken.value === "yield") {
+      error("E024", nameToken, "yield");
+    }
+
     if (nameToken && (f["(name)"] === "arguments" || f["(name)"] === "eval") &&
       f["(isStrict)"]) {
       error("E008", nameToken);
@@ -4702,7 +4725,6 @@ var JSHINT = (function() {
   blockstmt("if", function(context) {
     var t = state.tokens.next;
     increaseComplexityCount();
-    state.condition = true;
     advance("(");
     var expr = expression(context, 0);
 
@@ -4726,7 +4748,6 @@ var JSHINT = (function() {
     }
 
     advance(")", t);
-    state.condition = false;
     var s = block(context, true, true);
 
     // When the if is within a for-in loop and the condition has a negative form,
@@ -4750,13 +4771,11 @@ var JSHINT = (function() {
 
   blockstmt("try", function(context) {
     var b;
+    var hasParameter = false;
 
-    function doCatch() {
-      advance("catch");
+    function catchParameter() {
       advance("(");
 
-      state.funct["(scope)"].stack("catchparams");
-
       if (checkPunctuators(state.tokens.next, ["[", "{"])) {
         var tokens = destructuringPattern(context);
         _.each(tokens, function(token) {
@@ -4781,9 +4800,6 @@ var JSHINT = (function() {
       }
 
       advance(")");
-
-      block(context, false);
-      state.funct["(scope)"].unstack();
     }
 
     block(context | prodParams.tryClause, true);
@@ -4793,7 +4809,20 @@ var JSHINT = (function() {
       if (b && (!state.inMoz())) {
         warning("W118", state.tokens.next, "multiple catch blocks");
       }
-      doCatch();
+      advance("catch");
+      if (state.tokens.next.id !== "{") {
+        state.funct["(scope)"].stack("catchparams");
+        hasParameter = true;
+        catchParameter();
+      } else if (!state.inES10()) {
+        warning("W119", state.tokens.curr, "optional catch binding", "10");
+      }
+      block(context, false);
+
+      if (hasParameter) {
+        state.funct["(scope)"].unstack();
+        hasParameter = false;
+      }
       b = true;
     }
 
@@ -5217,7 +5246,8 @@ var JSHINT = (function() {
           if (state.tokens.next.id !== ",") {
             break;
           }
-          parseComma();
+          advance(",");
+          checkComma();
         }
       }
       advance(")", t);
@@ -5242,7 +5272,7 @@ var JSHINT = (function() {
       nolinebreak(this);
 
     if (state.tokens.next.identifier &&
-        state.tokens.curr.line === startLine(state.tokens.next)) {
+        sameLine(state.tokens.curr, state.tokens.next)) {
       if (!state.funct["(scope)"].funct.hasLabel(v)) {
         warning("W090", state.tokens.next, v);
       }
@@ -5270,7 +5300,7 @@ var JSHINT = (function() {
       nolinebreak(this);
 
     if (state.tokens.next.identifier) {
-      if (state.tokens.curr.line === startLine(state.tokens.next)) {
+      if (sameLine(state.tokens.curr, state.tokens.next)) {
         if (!state.funct["(scope)"].funct.hasLabel(v)) {
           warning("W090", state.tokens.next, v);
         }
@@ -5286,14 +5316,14 @@ var JSHINT = (function() {
 
 
   stmt("return", function(context) {
-    if (this.line === startLine(state.tokens.next)) {
+    if (sameLine(this, state.tokens.next)) {
       if (state.tokens.next.id !== ";" && !state.tokens.next.reach) {
         this.first = expression(context, 0);
 
         if (this.first &&
             this.first.type === "(punctuator)" && this.first.value === "=" &&
             !this.first.paren && !state.option.boss) {
-          warningAt("W093", this.first.line, this.first.character);
+          warning("W093", this.first);
         }
 
         if (state.option.noreturnawait && context & prodParams.async &&
@@ -5388,14 +5418,19 @@ var JSHINT = (function() {
     return state.syntax["(identifier)"].nud.apply(this, arguments);
   })));
 
-  (function(x) {
-    x.exps = true;
-    x.lbp = x.rbp = 25;
-    x.ltBoundary = "after";
-  }(prefix("yield", function(context) {
+  (function(yieldSymbol) {
+    yieldSymbol.rbp = yieldSymbol.lbp = 25;
+    yieldSymbol.exps = true;
+  })(prefix("yield", function(context) {
     if (state.inMoz()) {
       return mozYield.call(this, context);
     }
+
+    if (!(context & prodParams.yield)) {
+      this.exps = false;
+      return state.syntax["(identifier)"].nud.apply(this, arguments);
+    }
+
     var prev = state.tokens.prev;
 
     // If the parameters of the current function scope have not been defined,
@@ -5409,22 +5444,17 @@ var JSHINT = (function() {
       error("E061", this);
     }
 
-    if (state.inES6(true) && !state.funct["(generator)"]) {
-      // If it's a yield within a catch clause inside a generator then that's ok
-      if (!("(catch)" === state.funct["(name)"] && state.funct["(context)"]["(generator)"])) {
-        error("E046", state.tokens.curr, "yield");
-      }
-    } else if (!state.inES6()) {
+    if (!state.inES6()) {
       warning("W104", state.tokens.curr, "yield", "6");
     }
-    state.funct["(generator)"] = "yielded";
+    state.funct["(yielded)"] = true;
 
     if (state.tokens.next.value === "*") {
       advance("*");
     }
 
     // Parse operand
-    if (!isEndOfExpr() && state.tokens.next.id !== ",") {
+    if (state.tokens.curr.value === "*" || sameLine(state.tokens.curr, state.tokens.next)) {
       if (state.tokens.next.nud) {
 
         nobreaknonadjacent(state.tokens.curr, state.tokens.next);
@@ -5432,7 +5462,7 @@ var JSHINT = (function() {
 
         if (this.first.type === "(punctuator)" && this.first.value === "=" &&
             !this.first.paren && !state.option.boss) {
-          warningAt("W093", this.first.line, this.first.character);
+          warning("W093", this.first);
         }
       } else if (state.tokens.next.led) {
         if (state.tokens.next.id !== ",") {
@@ -5442,7 +5472,7 @@ var JSHINT = (function() {
     }
 
     return this;
-  })));
+  }));
 
   /**
    * Parsing logic for non-standard Mozilla implementation of `yield`
@@ -5450,13 +5480,10 @@ var JSHINT = (function() {
    */
   var mozYield = function(context) {
     var prev = state.tokens.prev;
-    if (state.inES6(true) && !state.funct["(generator)"]) {
-      // If it's a yield within a catch clause inside a generator then that's ok
-      if (!("(catch)" === state.funct["(name)"] && state.funct["(context)"]["(generator)"])) {
-        error("E046", state.tokens.curr, "yield");
-      }
+    if (state.inES6(true) && !(context & prodParams.yield)) {
+      error("E046", state.tokens.curr, "yield");
     }
-    state.funct["(generator)"] = "yielded";
+    state.funct["(yielded)"] = true;
     var delegatingYield = false;
 
     if (state.tokens.next.value === "*") {
@@ -5464,7 +5491,7 @@ var JSHINT = (function() {
       advance("*");
     }
 
-    if (this.line === startLine(state.tokens.next)) {
+    if (sameLine(this, state.tokens.next)) {
       if (delegatingYield ||
           (state.tokens.next.id !== ";" && !state.option.asi &&
            !state.tokens.next.reach && state.tokens.next.nud)) {
@@ -5474,12 +5501,11 @@ var JSHINT = (function() {
 
         if (this.first.type === "(punctuator)" && this.first.value === "=" &&
             !this.first.paren && !state.option.boss) {
-          warningAt("W093", this.first.line, this.first.character);
+          warning("W093", this.first);
         }
       }
-
       if (state.tokens.next.id !== ")" &&
-          (prev.lbp > 30 || (!prev.assign && !isEndOfExpr()) || prev.id === "yield")) {
+          (prev.lbp > 30 || (!prev.assign && !isEndOfExpr()))) {
         error("E050", this);
       }
     } else if (!state.option.asi) {
@@ -6466,7 +6492,7 @@ var JSHINT = (function() {
       combine(predefined, g || {});
 
       //reset values
-      parseComma.first = true;
+      checkComma.first = true;
 
       advance();
       switch (state.tokens.next.id) {
diff --git a/src/lex.js b/src/lex.js
index 98fa1c0f..7626e252 100644
--- a/src/lex.js
+++ b/src/lex.js
@@ -868,8 +868,27 @@ Lexer.prototype = {
         index += 1;
       }
 
-      if (isAllowedDigit !== isDecimalDigit) {
-        if (!isLegacy && value.length <= 2) { // 0x
+      var isBigInt = this.peek(index) === 'n';
+
+      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; }
+            );
+          }
+
+          value += char;
+          index += 1;
+        } else if (!isLegacy && value.length <= 2) { // 0x
           return {
             type: Token.NumericLiteral,
             value: value,
diff --git a/src/options.js b/src/options.js
index f5599cdf..50765b3c 100644
--- a/src/options.js
+++ b/src/options.js
@@ -1048,6 +1048,9 @@ exports.val = {
    *    9](https://www.ecma-international.org/ecma-262/9.0/index.html). Notable
    *    additions: asynchronous iteration, rest/spread properties, and various
    *    RegExp extensions
+   *  - `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.
    */
   esversion: 5
 };
@@ -1059,6 +1062,17 @@ 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/prod-params.js b/src/prod-params.js
index 61cc8c0f..c9842c36 100644
--- a/src/prod-params.js
+++ b/src/prod-params.js
@@ -39,5 +39,10 @@ module.exports = {
    * Enabled when any exception thrown by the expression will be caught by a
    * TryStatement.
    */
-  tryClause: 32
+  tryClause: 32,
+
+  /**
+   * Enabled when parsing the body of a generator function.
+   */
+  yield: 64
 };
diff --git a/src/state.js b/src/state.js
index 4a37a222..c2c6bc46 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 10 should be accepted.
+   *
+   * @returns {boolean}
+   */
+  inES10: function() {
+    return this.esVersion >= 10;
+  },
+
   /**
    * Determine if constructs introduced in ECMAScript 9 should be accepted.
    *


Test patch:
diff --git a/tests/test262/expectations.txt b/tests/test262/expectations.txt
index 7abfde6a..468e0aab 100644
--- a/tests/test262/expectations.txt
+++ b/tests/test262/expectations.txt
@@ -157,7 +157,6 @@ test/language/global-code/import.js(default)
 test/language/global-code/import.js(strict mode)
 test/language/global-code/return.js(default)
 test/language/global-code/return.js(strict mode)
-test/language/global-code/yield-non-strict.js(default)
 test/language/identifiers/part-digits-via-escape-hex.js(default)
 test/language/identifiers/part-digits-via-escape-hex.js(strict mode)
 test/language/identifiers/val-dollar-sign-via-escape-hex.js(default)
@@ -228,13 +227,11 @@ test/language/expressions/template-literal/invalid-hexidecimal-character-escape-
 test/language/expressions/template-literal/invalid-legacy-octal-escape-sequence.js(default)
 test/language/expressions/template-literal/tv-utf16-escape-sequence.js(default)
 test/language/expressions/template-literal/tv-utf16-escape-sequence.js(strict mode)
-test/language/expressions/function/param-dflt-yield-non-strict.js(default)
 test/language/expressions/function/scope-param-rest-elem-var-close.js(default)
 test/language/expressions/function/scope-param-rest-elem-var-open.js(default)
 test/language/expressions/generators/scope-param-rest-elem-var-close.js(default)
 test/language/expressions/generators/scope-param-rest-elem-var-open.js(default)
 test/language/expressions/generators/yield-as-function-expression-binding-identifier.js(default)
-test/language/expressions/generators/yield-as-identifier-in-nested-function.js(default)
 test/language/expressions/generators/yield-as-logical-or-expression.js(default)
 test/language/expressions/generators/yield-as-logical-or-expression.js(strict mode)
 test/language/expressions/generators/yield-star-after-newline.js(default)
@@ -245,28 +242,17 @@ test/language/expressions/object/scope-gen-meth-param-rest-elem-var-close.js(def
 test/language/expressions/object/scope-gen-meth-param-rest-elem-var-open.js(default)
 test/language/expressions/object/scope-meth-param-rest-elem-var-close.js(default)
 test/language/expressions/object/scope-meth-param-rest-elem-var-open.js(default)
-test/language/expressions/object/yield-non-strict-access.js(default)
-test/language/expressions/object/yield-non-strict-syntax.js(default)
-test/language/expressions/object/method-definition/generator-prop-name-yield-expr.js(default)
-test/language/expressions/object/method-definition/generator-prop-name-yield-id.js(default)
-test/language/expressions/object/method-definition/name-param-id-yield.js(default)
-test/language/expressions/object/method-definition/name-param-init-yield.js(default)
-test/language/expressions/object/method-definition/name-prop-name-yield-expr.js(default)
-test/language/expressions/object/method-definition/name-prop-name-yield-id.js(default)
 test/language/expressions/object/method-definition/yield-as-expression-with-rhs.js(default)
 test/language/expressions/object/method-definition/yield-as-expression-with-rhs.js(strict mode)
 test/language/expressions/object/method-definition/yield-as-expression-without-rhs.js(default)
 test/language/expressions/object/method-definition/yield-as-expression-without-rhs.js(strict mode)
 test/language/expressions/object/method-definition/yield-as-function-expression-binding-identifier.js(default)
-test/language/expressions/object/method-definition/yield-as-identifier-in-nested-function.js(default)
 test/language/expressions/object/method-definition/yield-as-logical-or-expression.js(default)
 test/language/expressions/object/method-definition/yield-as-logical-or-expression.js(strict mode)
 test/language/expressions/object/method-definition/yield-star-after-newline.js(default)
 test/language/expressions/object/method-definition/yield-star-after-newline.js(strict mode)
 test/language/expressions/arrow-function/scope-param-rest-elem-var-close.js(default)
 test/language/expressions/arrow-function/scope-param-rest-elem-var-open.js(default)
-test/language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-yield.js(default)
-test/language/expressions/arrow-function/syntax/arrowparameters-cover-formalparameters-yield.js(default)
 test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters-expression-body.js(default)
 test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters-expression-body.js(strict mode)
 test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters.js(default)
@@ -315,8 +301,6 @@ test/language/statements/if/if-stmt-else-gen.js(strict mode)
 test/language/statements/generators/scope-param-rest-elem-var-close.js(default)
 test/language/statements/generators/scope-param-rest-elem-var-open.js(default)
 test/language/statements/generators/yield-as-function-expression-binding-identifier.js(default)
-test/language/statements/generators/yield-as-generator-declaration-binding-identifier.js(default)
-test/language/statements/generators/yield-as-identifier-in-nested-function.js(default)
 test/language/statements/generators/yield-as-logical-or-expression.js(default)
 test/language/statements/generators/yield-as-logical-or-expression.js(strict mode)
 test/language/statements/generators/yield-star-after-newline.js(default)
@@ -332,8 +316,6 @@ test/language/statements/labeled/decl-gen.js(default)
 test/language/statements/labeled/decl-gen.js(strict mode)
 test/language/statements/labeled/decl-let.js(default)
 test/language/statements/labeled/decl-let.js(strict mode)
-test/language/statements/labeled/value-yield-non-strict.js(default)
-test/language/statements/function/param-dflt-yield-non-strict.js(default)
 test/language/statements/function/scope-param-rest-elem-var-close.js(default)
 test/language/statements/function/scope-param-rest-elem-var-open.js(default)
 test/language/statements/return/S12.9_A1_T1.js(default)
@@ -1189,17 +1171,11 @@ 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/statements/async-generator/yield-identifier-non-strict.js(default)
-test/language/statements/async-generator/yield-identifier-spread-non-strict.js(default)
 
 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/generators/named-yield-identifier-non-strict.js(default)
-test/language/expressions/generators/named-yield-identifier-spread-non-strict.js(default)
-test/language/expressions/generators/yield-identifier-non-strict.js(default)
-test/language/expressions/generators/yield-identifier-spread-non-strict.js(default)
 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)
@@ -1208,23 +1184,16 @@ 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/async-generator/named-yield-identifier-non-strict.js(default)
-test/language/expressions/async-generator/named-yield-identifier-spread-non-strict.js(default)
-test/language/expressions/async-generator/yield-identifier-non-strict.js(default)
-test/language/expressions/async-generator/yield-identifier-spread-non-strict.js(default)
 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-computed-yield-id.js(default)
 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-gen-yield-identifier-non-strict.js(default)
-test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js(default)
 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)
@@ -1233,8 +1202,6 @@ test/language/expressions/object/method-definition/gen-meth-dflt-params-ref-late
 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/gen-yield-identifier-non-strict.js(default)
-test/language/expressions/object/method-definition/gen-yield-identifier-spread-non-strict.js(default)
 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)
@@ -1256,8 +1223,6 @@ 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/statements/generators/yield-identifier-non-strict.js(default)
-test/language/statements/generators/yield-identifier-spread-non-strict.js(default)
 
 test/language/export/escaped-as-export-specifier.js(default)
 test/language/export/escaped-as-export-specifier.js(strict mode)
@@ -1445,26 +1410,6 @@ test/language/statements/class/elements/syntax/early-errors/grammar-static-meth-
 test/language/statements/class/elements/syntax/early-errors/grammar-static-meth-super.js(strict mode)
 test/language/statements/class/elements/syntax/early-errors/grammar-static-set-meth-super.js(default)
 test/language/statements/class/elements/syntax/early-errors/grammar-static-set-meth-super.js(strict mode)
-test/built-ins/BigInt/call-value-of-when-to-string-present.js(default)
-test/built-ins/BigInt/call-value-of-when-to-string-present.js(strict mode)
-test/built-ins/BigInt/constructor-empty-string.js(default)
-test/built-ins/BigInt/constructor-empty-string.js(strict mode)
-test/built-ins/BigInt/constructor-from-binary-string.js(default)
-test/built-ins/BigInt/constructor-from-binary-string.js(strict mode)
-test/built-ins/BigInt/constructor-from-decimal-string.js(default)
-test/built-ins/BigInt/constructor-from-decimal-string.js(strict mode)
-test/built-ins/BigInt/constructor-from-hex-string.js(default)
-test/built-ins/BigInt/constructor-from-hex-string.js(strict mode)
-test/built-ins/BigInt/constructor-from-octal-string.js(default)
-test/built-ins/BigInt/constructor-from-octal-string.js(strict mode)
-test/built-ins/BigInt/constructor-integer.js(default)
-test/built-ins/BigInt/constructor-integer.js(strict mode)
-test/built-ins/BigInt/constructor-trailing-leading-spaces.js(default)
-test/built-ins/BigInt/constructor-trailing-leading-spaces.js(strict mode)
-test/built-ins/Number/bigint-conversion.js(default)
-test/built-ins/Number/bigint-conversion.js(strict mode)
-test/built-ins/Object/bigint.js(default)
-test/built-ins/Object/bigint.js(strict mode)
 test/intl402/Locale/constructor-non-iana-canon.js(default)
 test/intl402/Locale/constructor-non-iana-canon.js(strict mode)
 test/intl402/Locale/likely-subtags-grandfathered.js(default)
@@ -1612,139 +1557,10 @@ test/language/module-code/privatename-valid-no-earlyerr.js(strict mode)
 test/annexB/language/comments/single-line-html-close-unicode-separators.js(default)
 test/annexB/language/comments/single-line-html-close-unicode-separators.js(strict mode)
 test/annexB/language/function-code/function-redeclaration-block.js(default)
-test/built-ins/BigInt/asIntN/arithmetic.js(default)
-test/built-ins/BigInt/asIntN/arithmetic.js(strict mode)
-test/built-ins/BigInt/asIntN/bigint-tobigint-toprimitive.js(default)
-test/built-ins/BigInt/asIntN/bigint-tobigint-toprimitive.js(strict mode)
-test/built-ins/BigInt/asIntN/bigint-tobigint-wrapped-values.js(default)
-test/built-ins/BigInt/asIntN/bigint-tobigint-wrapped-values.js(strict mode)
-test/built-ins/BigInt/asIntN/bigint-tobigint.js(default)
-test/built-ins/BigInt/asIntN/bigint-tobigint.js(strict mode)
-test/built-ins/BigInt/asIntN/bits-toindex-errors.js(default)
-test/built-ins/BigInt/asIntN/bits-toindex-errors.js(strict mode)
-test/built-ins/BigInt/asIntN/bits-toindex-toprimitive.js(default)
-test/built-ins/BigInt/asIntN/bits-toindex-toprimitive.js(strict mode)
-test/built-ins/BigInt/asIntN/bits-toindex-wrapped-values.js(default)
-test/built-ins/BigInt/asIntN/bits-toindex-wrapped-values.js(strict mode)
-test/built-ins/BigInt/asIntN/bits-toindex.js(default)
-test/built-ins/BigInt/asIntN/bits-toindex.js(strict mode)
-test/built-ins/BigInt/asIntN/order-of-steps.js(default)
-test/built-ins/BigInt/asIntN/order-of-steps.js(strict mode)
-test/built-ins/BigInt/asUintN/arithmetic.js(default)
-test/built-ins/BigInt/asUintN/arithmetic.js(strict mode)
-test/built-ins/BigInt/asUintN/bigint-tobigint-toprimitive.js(default)
-test/built-ins/BigInt/asUintN/bigint-tobigint-toprimitive.js(strict mode)
-test/built-ins/BigInt/asUintN/bigint-tobigint-wrapped-values.js(default)
-test/built-ins/BigInt/asUintN/bigint-tobigint-wrapped-values.js(strict mode)
-test/built-ins/BigInt/asUintN/bigint-tobigint.js(default)
-test/built-ins/BigInt/asUintN/bigint-tobigint.js(strict mode)
-test/built-ins/BigInt/asUintN/bits-toindex-errors.js(default)
-test/built-ins/BigInt/asUintN/bits-toindex-errors.js(strict mode)
-test/built-ins/BigInt/asUintN/bits-toindex-toprimitive.js(default)
-test/built-ins/BigInt/asUintN/bits-toindex-toprimitive.js(strict mode)
-test/built-ins/BigInt/asUintN/bits-toindex-wrapped-values.js(default)
-test/built-ins/BigInt/asUintN/bits-toindex-wrapped-values.js(strict mode)
-test/built-ins/BigInt/asUintN/bits-toindex.js(default)
-test/built-ins/BigInt/asUintN/bits-toindex.js(strict mode)
-test/built-ins/BigInt/asUintN/order-of-steps.js(default)
-test/built-ins/BigInt/asUintN/order-of-steps.js(strict mode)
-test/built-ins/JSON/stringify/bigint-order.js(default)
-test/built-ins/JSON/stringify/bigint-order.js(strict mode)
-test/built-ins/JSON/stringify/bigint-replacer.js(default)
-test/built-ins/JSON/stringify/bigint-replacer.js(strict mode)
-test/built-ins/JSON/stringify/bigint-tojson-receiver.js(default)
-test/built-ins/JSON/stringify/bigint-tojson-receiver.js(strict mode)
-test/built-ins/JSON/stringify/bigint-tojson.js(default)
-test/built-ins/JSON/stringify/bigint-tojson.js(strict mode)
-test/built-ins/JSON/stringify/bigint.js(default)
-test/built-ins/JSON/stringify/bigint.js(strict mode)
-test/built-ins/Object/setPrototypeOf/bigint.js(default)
-test/built-ins/Object/setPrototypeOf/bigint.js(strict mode)
 test/intl402/Intl/getCanonicalLocales/non-iana-canon.js(default)
 test/intl402/Intl/getCanonicalLocales/non-iana-canon.js(strict mode)
-test/language/expressions/addition/bigint-and-number.js(default)
-test/language/expressions/addition/bigint-and-number.js(strict mode)
-test/language/expressions/addition/bigint-errors.js(default)
-test/language/expressions/addition/bigint-errors.js(strict mode)
-test/language/expressions/addition/bigint-toprimitive.js(default)
-test/language/expressions/addition/bigint-toprimitive.js(strict mode)
-test/language/expressions/addition/bigint-wrapped-values.js(default)
-test/language/expressions/addition/bigint-wrapped-values.js(strict mode)
-test/language/expressions/addition/bigint-arithmetic.js(default)
-test/language/expressions/addition/bigint-arithmetic.js(strict mode)
-test/language/expressions/addition/coerce-bigint-to-string.js(default)
-test/language/expressions/addition/coerce-bigint-to-string.js(strict mode)
-test/language/expressions/arrow-function/param-dflt-yield-id-non-strict.js(default)
-test/language/expressions/bitwise-and/bigint-and-number.js(default)
-test/language/expressions/bitwise-and/bigint-and-number.js(strict mode)
-test/language/expressions/bitwise-and/bigint-errors.js(default)
-test/language/expressions/bitwise-and/bigint-errors.js(strict mode)
-test/language/expressions/bitwise-and/bigint-non-primitive.js(default)
-test/language/expressions/bitwise-and/bigint-non-primitive.js(strict mode)
-test/language/expressions/bitwise-and/bigint-toprimitive.js(default)
-test/language/expressions/bitwise-and/bigint-toprimitive.js(strict mode)
-test/language/expressions/bitwise-and/bigint-wrapped-values.js(default)
-test/language/expressions/bitwise-and/bigint-wrapped-values.js(strict mode)
-test/language/expressions/bitwise-and/bigint.js(default)
-test/language/expressions/bitwise-and/bigint.js(strict mode)
-test/language/expressions/bitwise-not/bigint-non-primitive.js(default)
-test/language/expressions/bitwise-not/bigint-non-primitive.js(strict mode)
-test/language/expressions/bitwise-not/bigint.js(default)
-test/language/expressions/bitwise-not/bigint.js(strict mode)
-test/language/expressions/bitwise-or/bigint-and-number.js(default)
-test/language/expressions/bitwise-or/bigint-and-number.js(strict mode)
-test/language/expressions/bitwise-or/bigint-errors.js(default)
-test/language/expressions/bitwise-or/bigint-errors.js(strict mode)
-test/language/expressions/bitwise-or/bigint-non-primitive.js(default)
-test/language/expressions/bitwise-or/bigint-non-primitive.js(strict mode)
-test/language/expressions/bitwise-or/bigint-toprimitive.js(default)
-test/language/expressions/bitwise-or/bigint-toprimitive.js(strict mode)
-test/language/expressions/bitwise-or/bigint-wrapped-values.js(default)
-test/language/expressions/bitwise-or/bigint-wrapped-values.js(strict mode)
-test/language/expressions/bitwise-or/bigint.js(default)
-test/language/expressions/bitwise-or/bigint.js(strict mode)
-test/language/expressions/bitwise-xor/bigint-and-number.js(default)
-test/language/expressions/bitwise-xor/bigint-and-number.js(strict mode)
-test/language/expressions/bitwise-xor/bigint-errors.js(default)
-test/language/expressions/bitwise-xor/bigint-errors.js(strict mode)
-test/language/expressions/bitwise-xor/bigint-non-primitive.js(default)
-test/language/expressions/bitwise-xor/bigint-non-primitive.js(strict mode)
-test/language/expressions/bitwise-xor/bigint-wrapped-values.js(default)
-test/language/expressions/bitwise-xor/bigint-wrapped-values.js(strict mode)
-test/language/expressions/bitwise-xor/bigint-toprimitive.js(default)
-test/language/expressions/bitwise-xor/bigint-toprimitive.js(strict mode)
-test/language/expressions/bitwise-xor/bigint.js(default)
-test/language/expressions/bitwise-xor/bigint.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/division/bigint-and-number.js(default)
-test/language/expressions/division/bigint-and-number.js(strict mode)
-test/language/expressions/division/bigint-complex-infinity.js(default)
-test/language/expressions/division/bigint-complex-infinity.js(strict mode)
-test/language/expressions/division/bigint-errors.js(default)
-test/language/expressions/division/bigint-errors.js(strict mode)
-test/language/expressions/division/bigint-arithmetic.js(default)
-test/language/expressions/division/bigint-arithmetic.js(strict mode)
-test/language/expressions/division/bigint-wrapped-values.js(default)
-test/language/expressions/division/bigint-wrapped-values.js(strict mode)
-test/language/expressions/division/bigint-toprimitive.js(default)
-test/language/expressions/division/bigint-toprimitive.js(strict mode)
-test/language/expressions/does-not-equals/bigint-and-bigint.js(default)
-test/language/expressions/does-not-equals/bigint-and-bigint.js(strict mode)
-test/language/expressions/does-not-equals/bigint-and-boolean.js(default)
-test/language/expressions/does-not-equals/bigint-and-boolean.js(strict mode)
-test/language/expressions/does-not-equals/bigint-and-incomparable-primitive.js(default)
-test/language/expressions/does-not-equals/bigint-and-incomparable-primitive.js(strict mode)
-test/language/expressions/does-not-equals/bigint-and-non-finite.js(default)
-test/language/expressions/does-not-equals/bigint-and-non-finite.js(strict mode)
-test/language/expressions/does-not-equals/bigint-and-number-extremes.js(default)
-test/language/expressions/does-not-equals/bigint-and-number-extremes.js(strict mode)
-test/language/expressions/does-not-equals/bigint-and-number.js(default)
-test/language/expressions/does-not-equals/bigint-and-number.js(strict mode)
-test/language/expressions/does-not-equals/bigint-and-object.js(default)
-test/language/expressions/does-not-equals/bigint-and-object.js(strict mode)
-test/language/expressions/does-not-equals/bigint-and-string.js(default)
-test/language/expressions/does-not-equals/bigint-and-string.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)
@@ -1805,216 +1621,12 @@ 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/equals/bigint-and-bigint.js(default)
-test/language/expressions/equals/bigint-and-bigint.js(strict mode)
-test/language/expressions/equals/bigint-and-boolean.js(default)
-test/language/expressions/equals/bigint-and-boolean.js(strict mode)
-test/language/expressions/equals/bigint-and-incomparable-primitive.js(default)
-test/language/expressions/equals/bigint-and-incomparable-primitive.js(strict mode)
-test/language/expressions/equals/bigint-and-non-finite.js(default)
-test/language/expressions/equals/bigint-and-non-finite.js(strict mode)
-test/language/expressions/equals/bigint-and-number-extremes.js(default)
-test/language/expressions/equals/bigint-and-number-extremes.js(strict mode)
-test/language/expressions/equals/bigint-and-number.js(default)
-test/language/expressions/equals/bigint-and-number.js(strict mode)
-test/language/expressions/equals/bigint-and-object.js(default)
-test/language/expressions/equals/bigint-and-object.js(strict mode)
-test/language/expressions/equals/bigint-and-string.js(default)
-test/language/expressions/equals/bigint-and-string.js(strict mode)
-test/language/expressions/exponentiation/bigint-and-number.js(default)
-test/language/expressions/exponentiation/bigint-and-number.js(strict mode)
-test/language/expressions/exponentiation/bigint-arithmetic.js(default)
-test/language/expressions/exponentiation/bigint-arithmetic.js(strict mode)
-test/language/expressions/exponentiation/bigint-errors.js(default)
-test/language/expressions/exponentiation/bigint-errors.js(strict mode)
-test/language/expressions/exponentiation/bigint-negative-exponent-throws.js(default)
-test/language/expressions/exponentiation/bigint-negative-exponent-throws.js(strict mode)
-test/language/expressions/exponentiation/bigint-toprimitive.js(default)
-test/language/expressions/exponentiation/bigint-toprimitive.js(strict mode)
-test/language/expressions/exponentiation/bigint-wrapped-values.js(default)
-test/language/expressions/exponentiation/bigint-wrapped-values.js(strict mode)
-test/language/expressions/exponentiation/bigint-zero-base-zero-exponent.js(default)
-test/language/expressions/exponentiation/bigint-zero-base-zero-exponent.js(strict mode)
-test/language/expressions/greater-than/bigint-and-bigint.js(default)
-test/language/expressions/greater-than/bigint-and-bigint.js(strict mode)
-test/language/expressions/greater-than/bigint-and-boolean.js(default)
-test/language/expressions/greater-than/bigint-and-boolean.js(strict mode)
-test/language/expressions/greater-than/bigint-and-incomparable-string.js(default)
-test/language/expressions/greater-than/bigint-and-incomparable-string.js(strict mode)
-test/language/expressions/greater-than/bigint-and-non-finite.js(default)
-test/language/expressions/greater-than/bigint-and-non-finite.js(strict mode)
-test/language/expressions/greater-than/bigint-and-number-extremes.js(default)
-test/language/expressions/greater-than/bigint-and-number-extremes.js(strict mode)
-test/language/expressions/greater-than/bigint-and-number.js(default)
-test/language/expressions/greater-than/bigint-and-number.js(strict mode)
-test/language/expressions/greater-than/bigint-and-string.js(default)
-test/language/expressions/greater-than/bigint-and-string.js(strict mode)
-test/language/expressions/greater-than/bigint-and-symbol.js(default)
-test/language/expressions/greater-than/bigint-and-symbol.js(strict mode)
-test/language/expressions/greater-than-or-equal/bigint-and-bigint.js(default)
-test/language/expressions/greater-than-or-equal/bigint-and-bigint.js(strict mode)
-test/language/expressions/greater-than-or-equal/bigint-and-incomparable-string.js(default)
-test/language/expressions/greater-than-or-equal/bigint-and-incomparable-string.js(strict mode)
-test/language/expressions/greater-than-or-equal/bigint-and-non-finite.js(default)
-test/language/expressions/greater-than-or-equal/bigint-and-non-finite.js(strict mode)
-test/language/expressions/greater-than-or-equal/bigint-and-number-extremes.js(default)
-test/language/expressions/greater-than-or-equal/bigint-and-number-extremes.js(strict mode)
-test/language/expressions/greater-than-or-equal/bigint-and-number.js(default)
-test/language/expressions/greater-than-or-equal/bigint-and-number.js(strict mode)
-test/language/expressions/greater-than-or-equal/bigint-and-string.js(default)
-test/language/expressions/greater-than-or-equal/bigint-and-string.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/expressions/left-shift/bigint-and-number.js(default)
-test/language/expressions/left-shift/bigint-and-number.js(strict mode)
-test/language/expressions/left-shift/bigint-errors.js(default)
-test/language/expressions/left-shift/bigint-errors.js(strict mode)
-test/language/expressions/left-shift/bigint-non-primitive.js(default)
-test/language/expressions/left-shift/bigint-non-primitive.js(strict mode)
-test/language/expressions/left-shift/bigint-toprimitive.js(default)
-test/language/expressions/left-shift/bigint-toprimitive.js(strict mode)
-test/language/expressions/left-shift/bigint-wrapped-values.js(default)
-test/language/expressions/left-shift/bigint-wrapped-values.js(strict mode)
-test/language/expressions/left-shift/bigint.js(default)
-test/language/expressions/left-shift/bigint.js(strict mode)
-test/language/expressions/less-than/bigint-and-bigint.js(default)
-test/language/expressions/less-than/bigint-and-bigint.js(strict mode)
-test/language/expressions/less-than/bigint-and-boolean.js(default)
-test/language/expressions/less-than/bigint-and-boolean.js(strict mode)
-test/language/expressions/less-than/bigint-and-incomparable-string.js(default)
-test/language/expressions/less-than/bigint-and-incomparable-string.js(strict mode)
-test/language/expressions/less-than/bigint-and-non-finite.js(default)
-test/language/expressions/less-than/bigint-and-non-finite.js(strict mode)
-test/language/expressions/less-than/bigint-and-number-extremes.js(default)
-test/language/expressions/less-than/bigint-and-number-extremes.js(strict mode)
-test/language/expressions/less-than/bigint-and-number.js(default)
-test/language/expressions/less-than/bigint-and-number.js(strict mode)
-test/language/expressions/less-than/bigint-and-string.js(default)
-test/language/expressions/less-than/bigint-and-string.js(strict mode)
-test/language/expressions/less-than/bigint-and-symbol.js(default)
-test/language/expressions/less-than/bigint-and-symbol.js(strict mode)
-test/language/expressions/less-than-or-equal/bigint-and-bigint.js(default)
-test/language/expressions/less-than-or-equal/bigint-and-bigint.js(strict mode)
-test/language/expressions/less-than-or-equal/bigint-and-incomparable-string.js(default)
-test/language/expressions/less-than-or-equal/bigint-and-incomparable-string.js(strict mode)
-test/language/expressions/less-than-or-equal/bigint-and-non-finite.js(default)
-test/language/expressions/less-than-or-equal/bigint-and-non-finite.js(strict mode)
-test/language/expressions/less-than-or-equal/bigint-and-number-extremes.js(default)
-test/language/expressions/less-than-or-equal/bigint-and-number-extremes.js(strict mode)
-test/language/expressions/less-than-or-equal/bigint-and-number.js(default)
-test/language/expressions/less-than-or-equal/bigint-and-number.js(strict mode)
-test/language/expressions/less-than-or-equal/bigint-and-string.js(default)
-test/language/expressions/less-than-or-equal/bigint-and-string.js(strict mode)
-test/language/expressions/logical-not/bigint.js(default)
-test/language/expressions/logical-not/bigint.js(strict mode)
-test/language/expressions/modulus/bigint-and-number.js(default)
-test/language/expressions/modulus/bigint-and-number.js(strict mode)
-test/language/expressions/modulus/bigint-errors.js(default)
-test/language/expressions/modulus/bigint-errors.js(strict mode)
-test/language/expressions/modulus/bigint-modulo-zero.js(default)
-test/language/expressions/modulus/bigint-modulo-zero.js(strict mode)
-test/language/expressions/modulus/bigint-arithmetic.js(default)
-test/language/expressions/modulus/bigint-arithmetic.js(strict mode)
-test/language/expressions/modulus/bigint-toprimitive.js(default)
-test/language/expressions/modulus/bigint-toprimitive.js(strict mode)
-test/language/expressions/modulus/bigint-wrapped-values.js(default)
-test/language/expressions/modulus/bigint-wrapped-values.js(strict mode)
-test/language/expressions/multiplication/bigint-and-number.js(default)
-test/language/expressions/multiplication/bigint-and-number.js(strict mode)
-test/language/expressions/multiplication/bigint-errors.js(default)
-test/language/expressions/multiplication/bigint-errors.js(strict mode)
-test/language/expressions/multiplication/bigint-arithmetic.js(default)
-test/language/expressions/multiplication/bigint-arithmetic.js(strict mode)
-test/language/expressions/multiplication/bigint-wrapped-values.js(default)
-test/language/expressions/multiplication/bigint-wrapped-values.js(strict mode)
-test/language/expressions/multiplication/bigint-toprimitive.js(default)
-test/language/expressions/multiplication/bigint-toprimitive.js(strict mode)
-test/language/expressions/postfix-decrement/bigint.js(default)
-test/language/expressions/postfix-decrement/bigint.js(strict mode)
-test/language/expressions/postfix-increment/bigint.js(default)
-test/language/expressions/postfix-increment/bigint.js(strict mode)
-test/language/expressions/prefix-decrement/bigint.js(default)
-test/language/expressions/prefix-decrement/bigint.js(strict mode)
-test/language/expressions/prefix-increment/bigint.js(default)
-test/language/expressions/prefix-increment/bigint.js(strict mode)
-test/language/expressions/right-shift/bigint-and-number.js(default)
-test/language/expressions/right-shift/bigint-and-number.js(strict mode)
-test/language/expressions/right-shift/bigint-errors.js(default)
-test/language/expressions/right-shift/bigint-errors.js(strict mode)
-test/language/expressions/right-shift/bigint-non-primitive.js(default)
-test/language/expressions/right-shift/bigint-non-primitive.js(strict mode)
-test/language/expressions/right-shift/bigint-toprimitive.js(default)
-test/language/expressions/right-shift/bigint-toprimitive.js(strict mode)
-test/language/expressions/right-shift/bigint-wrapped-values.js(default)
-test/language/expressions/right-shift/bigint-wrapped-values.js(strict mode)
-test/language/expressions/right-shift/bigint.js(default)
-test/language/expressions/right-shift/bigint.js(strict mode)
-test/language/expressions/strict-does-not-equals/bigint-and-bigint.js(default)
-test/language/expressions/strict-does-not-equals/bigint-and-bigint.js(strict mode)
-test/language/expressions/strict-does-not-equals/bigint-and-boolean.js(default)
-test/language/expressions/strict-does-not-equals/bigint-and-boolean.js(strict mode)
-test/language/expressions/strict-does-not-equals/bigint-and-incomparable-primitive.js(default)
-test/language/expressions/strict-does-not-equals/bigint-and-incomparable-primitive.js(strict mode)
-test/language/expressions/strict-does-not-equals/bigint-and-non-finite.js(default)
-test/language/expressions/strict-does-not-equals/bigint-and-non-finite.js(strict mode)
-test/language/expressions/strict-does-not-equals/bigint-and-number-extremes.js(default)
-test/language/expressions/strict-does-not-equals/bigint-and-number-extremes.js(strict mode)
-test/language/expressions/strict-does-not-equals/bigint-and-number.js(default)
-test/language/expressions/strict-does-not-equals/bigint-and-number.js(strict mode)
-test/language/expressions/strict-does-not-equals/bigint-and-object.js(default)
-test/language/expressions/strict-does-not-equals/bigint-and-object.js(strict mode)
-test/language/expressions/strict-does-not-equals/bigint-and-string.js(default)
-test/language/expressions/strict-does-not-equals/bigint-and-string.js(strict mode)
-test/language/expressions/strict-equals/bigint-and-bigint.js(default)
-test/language/expressions/strict-equals/bigint-and-bigint.js(strict mode)
-test/language/expressions/strict-equals/bigint-and-boolean.js(default)
-test/language/expressions/strict-equals/bigint-and-boolean.js(strict mode)
-test/language/expressions/strict-equals/bigint-and-incomparable-primitive.js(default)
-test/language/expressions/strict-equals/bigint-and-incomparable-primitive.js(strict mode)
-test/language/expressions/strict-equals/bigint-and-non-finite.js(default)
-test/language/expressions/strict-equals/bigint-and-non-finite.js(strict mode)
-test/language/expressions/strict-equals/bigint-and-number-extremes.js(default)
-test/language/expressions/strict-equals/bigint-and-number-extremes.js(strict mode)
-test/language/expressions/strict-equals/bigint-and-number.js(default)
-test/language/expressions/strict-equals/bigint-and-number.js(strict mode)
-test/language/expressions/strict-equals/bigint-and-object.js(default)
-test/language/expressions/strict-equals/bigint-and-object.js(strict mode)
-test/language/expressions/strict-equals/bigint-and-string.js(default)
-test/language/expressions/strict-equals/bigint-and-string.js(strict mode)
-test/language/expressions/subtraction/bigint-and-number.js(default)
-test/language/expressions/subtraction/bigint-and-number.js(strict mode)
-test/language/expressions/subtraction/bigint-errors.js(default)
-test/language/expressions/subtraction/bigint-errors.js(strict mode)
-test/language/expressions/subtraction/bigint-toprimitive.js(default)
-test/language/expressions/subtraction/bigint-toprimitive.js(strict mode)
-test/language/expressions/subtraction/bigint-wrapped-values.js(default)
-test/language/expressions/subtraction/bigint-wrapped-values.js(strict mode)
-test/language/expressions/subtraction/bigint-arithmetic.js(default)
-test/language/expressions/subtraction/bigint-arithmetic.js(strict mode)
-test/language/expressions/typeof/bigint.js(default)
-test/language/expressions/typeof/bigint.js(strict mode)
-test/language/expressions/unary-minus/bigint-non-primitive.js(default)
-test/language/expressions/unary-minus/bigint-non-primitive.js(strict mode)
-test/language/expressions/unary-minus/bigint.js(default)
-test/language/expressions/unary-minus/bigint.js(strict mode)
-test/language/expressions/unary-plus/bigint-throws.js(default)
-test/language/expressions/unary-plus/bigint-throws.js(strict mode)
-test/language/expressions/unsigned-right-shift/bigint-and-number.js(default)
-test/language/expressions/unsigned-right-shift/bigint-and-number.js(strict mode)
-test/language/expressions/unsigned-right-shift/bigint-errors.js(default)
-test/language/expressions/unsigned-right-shift/bigint-errors.js(strict mode)
-test/language/expressions/unsigned-right-shift/bigint-non-primitive.js(default)
-test/language/expressions/unsigned-right-shift/bigint-non-primitive.js(strict mode)
-test/language/expressions/unsigned-right-shift/bigint-toprimitive.js(default)
-test/language/expressions/unsigned-right-shift/bigint-toprimitive.js(strict mode)
-test/language/expressions/unsigned-right-shift/bigint-wrapped-values.js(default)
-test/language/expressions/unsigned-right-shift/bigint-wrapped-values.js(strict mode)
-test/language/expressions/unsigned-right-shift/bigint.js(default)
-test/language/expressions/unsigned-right-shift/bigint.js(strict mode)
 test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bd.js(default)
 test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bd.js(strict mode)
 test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bds.js(default)
@@ -2081,18 +1693,6 @@ test/language/statements/class/static-classelementname-abrupt-completion.js(defa
 test/language/statements/class/static-classelementname-abrupt-completion.js(strict mode)
 test/language/statements/for/let-block-with-newline.js(default)
 test/language/statements/for/let-identifier-with-newline.js(default)
-test/language/statements/for-await-of/async-func-decl-dstr-array-elem-init-yield-ident-valid.js(default)
-test/language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-array-yield-ident-valid.js(default)
-test/language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-obj-yield-ident-valid.js(default)
-test/language/statements/for-await-of/async-func-decl-dstr-array-elem-target-yield-valid.js(default)
-test/language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-array-yield-ident-valid.js(default)
-test/language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-obj-yield-ident-valid.js(default)
-test/language/statements/for-await-of/async-func-decl-dstr-array-rest-yield-ident-valid.js(default)
-test/language/statements/for-await-of/async-func-decl-dstr-obj-id-init-yield-ident-valid.js(default)
-test/language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-init-yield-ident-valid.js(default)
-test/language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-target-yield-ident-valid.js(default)
-test/language/statements/for-await-of/async-func-decl-dstr-obj-prop-nested-array-yield-ident-valid.js(default)
-test/language/statements/for-await-of/async-func-decl-dstr-obj-prop-nested-obj-yield-ident-valid.js(default)
 test/language/statements/for-await-of/async-func-decl-dstr-obj-rest-to-property-with-setter.js(default)
 test/language/statements/for-await-of/async-func-decl-dstr-obj-rest-to-property-with-setter.js(strict mode)
 test/language/statements/for-await-of/async-func-decl-dstr-obj-rest-to-property.js(default)
@@ -2119,174 +1719,11 @@ test/language/statements/for-of/let-block-with-newline.js(default)
 test/language/statements/for-of/let-identifier-with-newline.js(default)
 test/language/statements/if/let-block-with-newline.js(default)
 test/language/statements/if/let-identifier-with-newline.js(default)
-test/language/statements/labeled/value-yield-non-strict-escaped.js(default)
-test/language/statements/try/optional-catch-binding-finally.js(default)
-test/language/statements/try/optional-catch-binding-finally.js(strict mode)
-test/language/statements/try/optional-catch-binding-lexical.js(default)
-test/language/statements/try/optional-catch-binding-lexical.js(strict mode)
-test/language/statements/try/optional-catch-binding-throws.js(default)
-test/language/statements/try/optional-catch-binding-throws.js(strict mode)
-test/language/statements/try/optional-catch-binding.js(default)
-test/language/statements/try/optional-catch-binding.js(strict mode)
 test/language/statements/while/let-block-with-newline.js(default)
 test/language/statements/while/let-identifier-with-newline.js(default)
 test/language/statements/with/let-block-with-newline.js(default)
 test/language/statements/with/let-identifier-with-newline.js(default)
 test/annexB/language/statements/labeled/function-declaration.js(default)
-test/built-ins/Atomics/add/bigint/bad-range.js(default)
-test/built-ins/Atomics/add/bigint/bad-range.js(strict mode)
-test/built-ins/Atomics/add/bigint/good-views.js(default)
-test/built-ins/Atomics/add/bigint/good-views.js(strict mode)
-test/built-ins/Atomics/add/bigint/nonshared-int-views.js(default)
-test/built-ins/Atomics/add/bigint/nonshared-int-views.js(strict mode)
-test/built-ins/Atomics/and/bigint/bad-range.js(default)
-test/built-ins/Atomics/and/bigint/bad-range.js(strict mode)
-test/built-ins/Atomics/and/bigint/good-views.js(default)
-test/built-ins/Atomics/and/bigint/good-views.js(strict mode)
-test/built-ins/Atomics/and/bigint/nonshared-int-views.js(default)
-test/built-ins/Atomics/and/bigint/nonshared-int-views.js(strict mode)
-test/built-ins/Atomics/compareExchange/bigint/bad-range.js(default)
-test/built-ins/Atomics/compareExchange/bigint/bad-range.js(strict mode)
-test/built-ins/Atomics/compareExchange/bigint/good-views.js(default)
-test/built-ins/Atomics/compareExchange/bigint/good-views.js(strict mode)
-test/built-ins/Atomics/compareExchange/bigint/nonshared-int-views.js(default)
-test/built-ins/Atomics/compareExchange/bigint/nonshared-int-views.js(strict mode)
-test/built-ins/Atomics/exchange/bigint/bad-range.js(default)
-test/built-ins/Atomics/exchange/bigint/bad-range.js(strict mode)
-test/built-ins/Atomics/exchange/bigint/good-views.js(default)
-test/built-ins/Atomics/exchange/bigint/good-views.js(strict mode)
-test/built-ins/Atomics/exchange/bigint/nonshared-int-views.js(default)
-test/built-ins/Atomics/exchange/bigint/nonshared-int-views.js(strict mode)
-test/built-ins/Atomics/load/bigint/good-views.js(default)
-test/built-ins/Atomics/load/bigint/good-views.js(strict mode)
-test/built-ins/Atomics/notify/bigint/notify-all-on-loc.js(default)
-test/built-ins/Atomics/notify/bigint/notify-all-on-loc.js(strict mode)
-test/built-ins/Atomics/or/bigint/bad-range.js(default)
-test/built-ins/Atomics/or/bigint/bad-range.js(strict mode)
-test/built-ins/Atomics/or/bigint/good-views.js(default)
-test/built-ins/Atomics/or/bigint/good-views.js(strict mode)
-test/built-ins/Atomics/or/bigint/nonshared-int-views.js(default)
-test/built-ins/Atomics/or/bigint/nonshared-int-views.js(strict mode)
-test/built-ins/Atomics/store/bigint/bad-range.js(default)
-test/built-ins/Atomics/store/bigint/bad-range.js(strict mode)
-test/built-ins/Atomics/store/bigint/good-views.js(default)
-test/built-ins/Atomics/store/bigint/good-views.js(strict mode)
-test/built-ins/Atomics/store/bigint/nonshared-int-views.js(default)
-test/built-ins/Atomics/store/bigint/nonshared-int-views.js(strict mode)
-test/built-ins/Atomics/sub/bigint/bad-range.js(default)
-test/built-ins/Atomics/sub/bigint/bad-range.js(strict mode)
-test/built-ins/Atomics/sub/bigint/good-views.js(default)
-test/built-ins/Atomics/sub/bigint/good-views.js(strict mode)
-test/built-ins/Atomics/sub/bigint/nonshared-int-views.js(default)
-test/built-ins/Atomics/sub/bigint/nonshared-int-views.js(strict mode)
-test/built-ins/Atomics/wait/bigint/bad-range.js(default)
-test/built-ins/Atomics/wait/bigint/bad-range.js(strict mode)
-test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js(default)
-test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js(strict mode)
-test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js(default)
-test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js(strict mode)
-test/built-ins/Atomics/wait/bigint/false-for-timeout.js(default)
-test/built-ins/Atomics/wait/bigint/false-for-timeout.js(strict mode)
-test/built-ins/Atomics/wait/bigint/nan-for-timeout.js(default)
-test/built-ins/Atomics/wait/bigint/nan-for-timeout.js(strict mode)
-test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js(default)
-test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js(strict mode)
-test/built-ins/Atomics/wait/bigint/negative-timeout.js(default)
-test/built-ins/Atomics/wait/bigint/negative-timeout.js(strict mode)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-no-operation.js(default)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-no-operation.js(strict mode)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js(default)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js(strict mode)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js(default)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js(strict mode)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js(default)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js(strict mode)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js(default)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js(strict mode)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js(default)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js(strict mode)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js(default)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js(strict mode)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js(default)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js(strict mode)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js(default)
-test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js(strict mode)
-test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js(default)
-test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js(strict mode)
-test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js(default)
-test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js(strict mode)
-test/built-ins/Atomics/wait/bigint/value-not-equal.js(default)
-test/built-ins/Atomics/wait/bigint/value-not-equal.js(strict mode)
-test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js(default)
-test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js(strict mode)
-test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js(default)
-test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js(strict mode)
-test/built-ins/Atomics/xor/bigint/good-views.js(default)
-test/built-ins/Atomics/xor/bigint/good-views.js(strict mode)
-test/built-ins/BigInt/prototype/toString/default-radix.js(default)
-test/built-ins/BigInt/prototype/toString/default-radix.js(strict mode)
-test/built-ins/BigInt/prototype/toString/radix-2-to-36.js(default)
-test/built-ins/BigInt/prototype/toString/radix-2-to-36.js(strict mode)
-test/built-ins/BigInt/prototype/toString/radix-err.js(default)
-test/built-ins/BigInt/prototype/toString/radix-err.js(strict mode)
-test/built-ins/BigInt/prototype/toString/string-is-code-units-of-decimal-digits-only.js(default)
-test/built-ins/BigInt/prototype/toString/string-is-code-units-of-decimal-digits-only.js(strict mode)
-test/built-ins/BigInt/prototype/toString/thisbigintvalue-not-valid-throws.js(default)
-test/built-ins/BigInt/prototype/toString/thisbigintvalue-not-valid-throws.js(strict mode)
-test/built-ins/BigInt/prototype/valueOf/cross-realm.js(default)
-test/built-ins/BigInt/prototype/valueOf/cross-realm.js(strict mode)
-test/built-ins/BigInt/prototype/valueOf/return.js(default)
-test/built-ins/BigInt/prototype/valueOf/return.js(strict mode)
-test/built-ins/DataView/prototype/getBigInt64/return-value-clean-arraybuffer.js(default)
-test/built-ins/DataView/prototype/getBigInt64/return-value-clean-arraybuffer.js(strict mode)
-test/built-ins/DataView/prototype/getBigInt64/return-values-custom-offset.js(default)
-test/built-ins/DataView/prototype/getBigInt64/return-values-custom-offset.js(strict mode)
-test/built-ins/DataView/prototype/getBigInt64/return-values.js(default)
-test/built-ins/DataView/prototype/getBigInt64/return-values.js(strict mode)
-test/built-ins/DataView/prototype/getBigInt64/to-boolean-littleendian.js(default)
-test/built-ins/DataView/prototype/getBigInt64/to-boolean-littleendian.js(strict mode)
-test/built-ins/DataView/prototype/getBigInt64/toindex-byteoffset-errors.js(default)
-test/built-ins/DataView/prototype/getBigInt64/toindex-byteoffset-errors.js(strict mode)
-test/built-ins/DataView/prototype/getBigInt64/toindex-byteoffset-toprimitive.js(default)
-test/built-ins/DataView/prototype/getBigInt64/toindex-byteoffset-toprimitive.js(strict mode)
-test/built-ins/DataView/prototype/getBigInt64/toindex-byteoffset-wrapped-values.js(default)
-test/built-ins/DataView/prototype/getBigInt64/toindex-byteoffset-wrapped-values.js(strict mode)
-test/built-ins/DataView/prototype/getBigInt64/toindex-byteoffset.js(default)
-test/built-ins/DataView/prototype/getBigInt64/toindex-byteoffset.js(strict mode)
-test/built-ins/DataView/prototype/getBigUint64/return-value-clean-arraybuffer.js(default)
-test/built-ins/DataView/prototype/getBigUint64/return-value-clean-arraybuffer.js(strict mode)
-test/built-ins/DataView/prototype/getBigUint64/return-values-custom-offset.js(default)
-test/built-ins/DataView/prototype/getBigUint64/return-values-custom-offset.js(strict mode)
-test/built-ins/DataView/prototype/getBigUint64/return-values.js(default)
-test/built-ins/DataView/prototype/getBigUint64/return-values.js(strict mode)
-test/built-ins/DataView/prototype/getBigUint64/to-boolean-littleendian.js(default)
-test/built-ins/DataView/prototype/getBigUint64/to-boolean-littleendian.js(strict mode)
-test/built-ins/DataView/prototype/getBigUint64/toindex-byteoffset-errors.js(default)
-test/built-ins/DataView/prototype/getBigUint64/toindex-byteoffset-errors.js(strict mode)
-test/built-ins/DataView/prototype/getBigUint64/toindex-byteoffset-toprimitive.js(default)
-test/built-ins/DataView/prototype/getBigUint64/toindex-byteoffset-toprimitive.js(strict mode)
-test/built-ins/DataView/prototype/getBigUint64/toindex-byteoffset-wrapped-values.js(default)
-test/built-ins/DataView/prototype/getBigUint64/toindex-byteoffset-wrapped-values.js(strict mode)
-test/built-ins/DataView/prototype/getBigUint64/toindex-byteoffset.js(default)
-test/built-ins/DataView/prototype/getBigUint64/toindex-byteoffset.js(strict mode)
-test/built-ins/DataView/prototype/setBigInt64/detached-buffer.js(default)
-test/built-ins/DataView/prototype/setBigInt64/detached-buffer.js(strict mode)
-test/built-ins/DataView/prototype/setBigInt64/index-is-out-of-range.js(default)
-test/built-ins/DataView/prototype/setBigInt64/index-is-out-of-range.js(strict mode)
-test/built-ins/DataView/prototype/setBigInt64/negative-byteoffset-throws.js(default)
-test/built-ins/DataView/prototype/setBigInt64/negative-byteoffset-throws.js(strict mode)
-test/built-ins/DataView/prototype/setBigInt64/return-abrupt-from-tonumber-byteoffset-symbol.js(default)
-test/built-ins/DataView/prototype/setBigInt64/return-abrupt-from-tonumber-byteoffset-symbol.js(strict mode)
-test/built-ins/DataView/prototype/setBigInt64/return-abrupt-from-tonumber-byteoffset.js(default)
-test/built-ins/DataView/prototype/setBigInt64/return-abrupt-from-tonumber-byteoffset.js(strict mode)
-test/built-ins/DataView/prototype/setBigInt64/set-values-little-endian-order.js(default)
-test/built-ins/DataView/prototype/setBigInt64/set-values-little-endian-order.js(strict mode)
-test/built-ins/DataView/prototype/setBigInt64/to-boolean-littleendian.js(default)
-test/built-ins/DataView/prototype/setBigInt64/to-boolean-littleendian.js(strict mode)
-test/built-ins/DataView/prototype/setBigInt64/toindex-byteoffset.js(default)
-test/built-ins/DataView/prototype/setBigInt64/toindex-byteoffset.js(strict mode)
-test/built-ins/Object/prototype/toString/Object.prototype.toString.call-bigint.js(default)
-test/built-ins/Object/prototype/toString/Object.prototype.toString.call-bigint.js(strict mode)
 test/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js(default)
 test/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js(strict mode)
 test/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js(default)
@@ -2335,84 +1772,6 @@ test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js(
 test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js(strict mode)
 test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js(default)
 test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js(strict mode)
-test/built-ins/String/prototype/indexOf/position-tointeger-bigint.js(default)
-test/built-ins/String/prototype/indexOf/position-tointeger-bigint.js(strict mode)
-test/built-ins/String/prototype/indexOf/searchstring-tostring-bigint.js(default)
-test/built-ins/String/prototype/indexOf/searchstring-tostring-bigint.js(strict mode)
-test/built-ins/TypedArray/prototype/set/src-typedarray-big-throws.js(default)
-test/built-ins/TypedArray/prototype/set/src-typedarray-big-throws.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/length-arg/init-zeros.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/length-arg/init-zeros.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/as-array-returns.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/as-array-returns.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/as-generator-iterable-returns.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/as-generator-iterable-returns.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/bigint-tobigint64.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/bigint-tobigint64.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/bigint-tobiguint64.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/bigint-tobiguint64.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/boolean-tobigint.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/boolean-tobigint.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/new-instance-extensibility.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/new-instance-extensibility.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/string-tobigint.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/string-tobigint.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-from-property.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-from-property.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-to-primitive-typeerror.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-to-primitive-typeerror.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-to-primitive.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-to-primitive.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-tostring.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-tostring.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-valueof-typeerror.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-valueof-typeerror.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-valueof.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-valueof.js(strict mode)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-property.js(default)
-test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-property.js(strict mode)
-test/built-ins/TypedArrayConstructors/from/BigInt/custom-ctor-returns-other-instance.js(default)
-test/built-ins/TypedArrayConstructors/from/BigInt/custom-ctor-returns-other-instance.js(strict mode)
-test/built-ins/TypedArrayConstructors/from/BigInt/custom-ctor-returns-smaller-instance-throws.js(default)
-test/built-ins/TypedArrayConstructors/from/BigInt/custom-ctor-returns-smaller-instance-throws.js(strict mode)
-test/built-ins/TypedArrayConstructors/from/BigInt/mapfn-abrupt-completion.js(default)
-test/built-ins/TypedArrayConstructors/from/BigInt/mapfn-abrupt-completion.js(strict mode)
-test/built-ins/TypedArrayConstructors/from/BigInt/mapfn-arguments.js(default)
-test/built-ins/TypedArrayConstructors/from/BigInt/mapfn-arguments.js(strict mode)
-test/built-ins/TypedArrayConstructors/from/BigInt/mapfn-this-with-thisarg.js(default)
-test/built-ins/TypedArrayConstructors/from/BigInt/mapfn-this-with-thisarg.js(strict mode)
-test/built-ins/TypedArrayConstructors/from/BigInt/mapfn-this-without-thisarg-non-strict.js(default)
-test/built-ins/TypedArrayConstructors/from/BigInt/mapfn-this-without-thisarg-strict.js(strict mode)
-test/built-ins/TypedArrayConstructors/from/BigInt/new-instance-from-ordinary-object.js(default)
-test/built-ins/TypedArrayConstructors/from/BigInt/new-instance-from-ordinary-object.js(strict mode)
-test/built-ins/TypedArrayConstructors/from/BigInt/new-instance-from-sparse-array.js(default)
-test/built-ins/TypedArrayConstructors/from/BigInt/new-instance-from-sparse-array.js(strict mode)
-test/built-ins/TypedArrayConstructors/from/BigInt/new-instance-using-custom-ctor.js(default)
-test/built-ins/TypedArrayConstructors/from/BigInt/new-instance-using-custom-ctor.js(strict mode)
-test/built-ins/TypedArrayConstructors/from/BigInt/new-instance-with-mapfn.js(default)
-test/built-ins/TypedArrayConstructors/from/BigInt/new-instance-with-mapfn.js(strict mode)
-test/built-ins/TypedArrayConstructors/from/BigInt/new-instance-without-mapfn.js(default)
-test/built-ins/TypedArrayConstructors/from/BigInt/new-instance-without-mapfn.js(strict mode)
-test/built-ins/TypedArrayConstructors/from/BigInt/set-value-abrupt-completion.js(default)
-test/built-ins/TypedArrayConstructors/from/BigInt/set-value-abrupt-completion.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/bigint-tonumber.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/bigint-tonumber.js(strict mode)
-test/built-ins/TypedArrayConstructors/of/BigInt/argument-number-value-throws.js(default)
-test/built-ins/TypedArrayConstructors/of/BigInt/argument-number-value-throws.js(strict mode)
-test/built-ins/TypedArrayConstructors/of/BigInt/custom-ctor-does-not-instantiate-ta-throws.js(default)
-test/built-ins/TypedArrayConstructors/of/BigInt/custom-ctor-does-not-instantiate-ta-throws.js(strict mode)
-test/built-ins/TypedArrayConstructors/of/BigInt/custom-ctor-returns-other-instance.js(default)
-test/built-ins/TypedArrayConstructors/of/BigInt/custom-ctor-returns-other-instance.js(strict mode)
-test/built-ins/TypedArrayConstructors/of/BigInt/custom-ctor-returns-smaller-instance-throws.js(default)
-test/built-ins/TypedArrayConstructors/of/BigInt/custom-ctor-returns-smaller-instance-throws.js(strict mode)
-test/built-ins/TypedArrayConstructors/of/BigInt/custom-ctor.js(default)
-test/built-ins/TypedArrayConstructors/of/BigInt/custom-ctor.js(strict mode)
-test/built-ins/TypedArrayConstructors/of/BigInt/new-instance-using-custom-ctor.js(default)
-test/built-ins/TypedArrayConstructors/of/BigInt/new-instance-using-custom-ctor.js(strict mode)
-test/built-ins/TypedArrayConstructors/of/BigInt/new-instance.js(default)
-test/built-ins/TypedArrayConstructors/of/BigInt/new-instance.js(strict mode)
-test/built-ins/TypedArrayConstructors/of/BigInt/this-is-not-constructor.js(default)
-test/built-ins/TypedArrayConstructors/of/BigInt/this-is-not-constructor.js(strict mode)
 test/intl402/RelativeTimeFormat/prototype/format/en-us-style-short.js(default)
 test/intl402/RelativeTimeFormat/prototype/format/en-us-style-short.js(strict mode)
 test/intl402/RelativeTimeFormat/prototype/format/value-tonumber.js(default)
@@ -2421,7 +1780,6 @@ test/intl402/RelativeTimeFormat/prototype/formatToParts/en-us-style-short.js(def
 test/intl402/RelativeTimeFormat/prototype/formatToParts/en-us-style-short.js(strict mode)
 test/intl402/RelativeTimeFormat/prototype/formatToParts/value-tonumber.js(default)
 test/intl402/RelativeTimeFormat/prototype/formatToParts/value-tonumber.js(strict mode)
-test/language/expressions/assignment/dstr/array-elem-init-yield-ident-valid.js(default)
 test/language/expressions/assignment/dstr/array-elem-iter-rtrn-close-err.js(default)
 test/language/expressions/assignment/dstr/array-elem-iter-rtrn-close-err.js(strict mode)
 test/language/expressions/assignment/dstr/array-elem-iter-thrw-close-err.js(default)
@@ -2430,11 +1788,8 @@ test/language/expressions/assignment/dstr/array-elem-iter-thrw-close.js(default)
 test/language/expressions/assignment/dstr/array-elem-iter-thrw-close.js(strict mode)
 test/language/expressions/assignment/dstr/array-elem-nested-array-yield-expr.js(default)
 test/language/expressions/assignment/dstr/array-elem-nested-array-yield-expr.js(strict mode)
-test/language/expressions/assignment/dstr/array-elem-nested-array-yield-ident-valid.js(default)
-test/language/expressions/assignment/dstr/array-elem-nested-obj-yield-ident-valid.js(default)
 test/language/expressions/assignment/dstr/array-elem-target-yield-expr.js(default)
 test/language/expressions/assignment/dstr/array-elem-target-yield-expr.js(strict mode)
-test/language/expressions/assignment/dstr/array-elem-target-yield-valid.js(default)
 test/language/expressions/assignment/dstr/array-elem-trlg-iter-list-thrw-close-err.js(default)
 test/language/expressions/assignment/dstr/array-elem-trlg-iter-list-thrw-close-err.js(strict mode)
 test/language/expressions/assignment/dstr/array-elem-trlg-iter-list-thrw-close.js(default)
@@ -2465,19 +1820,10 @@ test/language/expressions/assignment/dstr/array-rest-nested-array-iter-thrw-clos
 test/language/expressions/assignment/dstr/array-rest-nested-array-iter-thrw-close-skip.js(strict mode)
 test/language/expressions/assignment/dstr/array-rest-nested-array-yield-expr.js(default)
 test/language/expressions/assignment/dstr/array-rest-nested-array-yield-expr.js(strict mode)
-test/language/expressions/assignment/dstr/array-rest-nested-array-yield-ident-valid.js(default)
-test/language/expressions/assignment/dstr/array-rest-nested-obj-yield-ident-valid.js(default)
 test/language/expressions/assignment/dstr/array-rest-yield-expr.js(default)
 test/language/expressions/assignment/dstr/array-rest-yield-expr.js(strict mode)
-test/language/expressions/assignment/dstr/array-rest-yield-ident-valid.js(default)
-test/language/expressions/assignment/dstr/obj-id-identifier-yield-ident-valid.js(default)
-test/language/expressions/assignment/dstr/obj-id-init-yield-ident-valid.js(default)
-test/language/expressions/assignment/dstr/obj-prop-elem-init-yield-ident-valid.js(default)
 test/language/expressions/assignment/dstr/obj-prop-elem-target-yield-expr.js(default)
 test/language/expressions/assignment/dstr/obj-prop-elem-target-yield-expr.js(strict mode)
-test/language/expressions/assignment/dstr/obj-prop-elem-target-yield-ident-valid.js(default)
-test/language/expressions/assignment/dstr/obj-prop-nested-array-yield-ident-valid.js(default)
-test/language/expressions/assignment/dstr/obj-prop-nested-obj-yield-ident-valid.js(default)
 test/language/expressions/assignment/dstr/obj-rest-to-property-with-setter.js(default)
 test/language/expressions/assignment/dstr/obj-rest-to-property-with-setter.js(strict mode)
 test/language/expressions/assignment/dstr/obj-rest-to-property.js(default)
@@ -8994,7 +8340,6 @@ 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-init-yield-ident-valid.js(default)
 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)
@@ -9003,11 +8348,8 @@ test/language/statements/for-of/dstr/array-elem-iter-thrw-close.js(default)
 test/language/statements/for-of/dstr/array-elem-iter-thrw-close.js(strict mode)
 test/language/statements/for-of/dstr/array-elem-nested-array-yield-expr.js(default)
 test/language/statements/for-of/dstr/array-elem-nested-array-yield-expr.js(strict mode)
-test/language/statements/for-of/dstr/array-elem-nested-array-yield-ident-valid.js(default)
-test/language/statements/for-of/dstr/array-elem-nested-obj-yield-ident-valid.js(default)
 test/language/statements/for-of/dstr/array-elem-target-yield-expr.js(default)
 test/language/statements/for-of/dstr/array-elem-target-yield-expr.js(strict mode)
-test/language/statements/for-of/dstr/array-elem-target-yield-valid.js(default)
 test/language/statements/for-of/dstr/array-elem-trlg-iter-list-thrw-close-err.js(default)
 test/language/statements/for-of/dstr/array-elem-trlg-iter-list-thrw-close-err.js(strict mode)
 test/language/statements/for-of/dstr/array-elem-trlg-iter-list-thrw-close.js(default)
@@ -9038,642 +8380,15 @@ test/language/statements/for-of/dstr/array-rest-nested-array-iter-thrw-close-ski
 test/language/statements/for-of/dstr/array-rest-nested-array-iter-thrw-close-skip.js(strict mode)
 test/language/statements/for-of/dstr/array-rest-nested-array-yield-expr.js(default)
 test/language/statements/for-of/dstr/array-rest-nested-array-yield-expr.js(strict mode)
-test/language/statements/for-of/dstr/array-rest-nested-array-yield-ident-valid.js(default)
-test/language/statements/for-of/dstr/array-rest-nested-obj-yield-ident-valid.js(default)
 test/language/statements/for-of/dstr/array-rest-yield-expr.js(default)
 test/language/statements/for-of/dstr/array-rest-yield-expr.js(strict mode)
-test/language/statements/for-of/dstr/array-rest-yield-ident-valid.js(default)
-test/language/statements/for-of/dstr/obj-id-identifier-yield-ident-valid.js(default)
-test/language/statements/for-of/dstr/obj-id-init-yield-ident-valid.js(default)
-test/language/statements/for-of/dstr/obj-prop-elem-init-yield-ident-valid.js(default)
 test/language/statements/for-of/dstr/obj-prop-elem-target-yield-expr.js(default)
 test/language/statements/for-of/dstr/obj-prop-elem-target-yield-expr.js(strict mode)
-test/language/statements/for-of/dstr/obj-prop-elem-target-yield-ident-valid.js(default)
-test/language/statements/for-of/dstr/obj-prop-nested-array-yield-ident-valid.js(default)
-test/language/statements/for-of/dstr/obj-prop-nested-obj-yield-ident-valid.js(default)
 test/language/statements/for-of/dstr/obj-rest-to-property-with-setter.js(default)
 test/language/statements/for-of/dstr/obj-rest-to-property-with-setter.js(strict mode)
 test/language/statements/for-of/dstr/obj-rest-to-property.js(default)
 test/language/statements/for-of/dstr/obj-rest-to-property.js(strict mode)
 test/language/statements/let/syntax/escaped-let.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/coerced-values-end.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/coerced-values-end.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/coerced-values-start.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/coerced-values-start.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/coerced-values-target.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/coerced-values-target.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/negative-end.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/negative-end.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/negative-out-of-bounds-end.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/negative-out-of-bounds-end.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/negative-out-of-bounds-start.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/negative-out-of-bounds-start.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/negative-out-of-bounds-target.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/negative-out-of-bounds-target.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/negative-start.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/negative-start.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/negative-target.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/negative-target.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/non-negative-out-of-bounds-end.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/non-negative-out-of-bounds-end.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/non-negative-out-of-bounds-target-and-start.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/non-negative-out-of-bounds-target-and-start.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/non-negative-target-and-start.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/non-negative-target-and-start.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/non-negative-target-start-and-end.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/non-negative-target-start-and-end.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/return-this.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/return-this.js(strict mode)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/undefined-end.js(default)
-test/built-ins/TypedArray/prototype/copyWithin/BigInt/undefined-end.js(strict mode)
-test/built-ins/TypedArray/prototype/entries/BigInt/iter-prototype.js(default)
-test/built-ins/TypedArray/prototype/entries/BigInt/iter-prototype.js(strict mode)
-test/built-ins/TypedArray/prototype/entries/BigInt/return-itor.js(default)
-test/built-ins/TypedArray/prototype/entries/BigInt/return-itor.js(strict mode)
-test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-arguments-with-thisarg.js(default)
-test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-arguments-with-thisarg.js(strict mode)
-test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-arguments-without-thisarg.js(default)
-test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-arguments-without-thisarg.js(strict mode)
-test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-no-interaction-over-non-integer.js(default)
-test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-no-interaction-over-non-integer.js(strict mode)
-test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-return-does-not-change-instance.js(default)
-test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-return-does-not-change-instance.js(strict mode)
-test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-set-value-during-interaction.js(default)
-test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-set-value-during-interaction.js(strict mode)
-test/built-ins/TypedArray/prototype/every/BigInt/get-length-uses-internal-arraylength.js(default)
-test/built-ins/TypedArray/prototype/every/BigInt/get-length-uses-internal-arraylength.js(strict mode)
-test/built-ins/TypedArray/prototype/every/BigInt/values-are-not-cached.js(default)
-test/built-ins/TypedArray/prototype/every/BigInt/values-are-not-cached.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/coerced-indexes.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/coerced-indexes.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-conversion-once.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-conversion-once.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-custom-start-and-end.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-custom-start-and-end.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-non-numeric-throw.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-non-numeric-throw.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-non-numeric.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-non-numeric.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-relative-end.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-relative-end.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-relative-start.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-relative-start.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/fill-values.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/get-length-ignores-length-prop.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/get-length-ignores-length-prop.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/return-abrupt-from-end-as-symbol.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/return-abrupt-from-end-as-symbol.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/return-abrupt-from-end.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/return-abrupt-from-end.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/return-abrupt-from-set-value.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/return-abrupt-from-set-value.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/return-abrupt-from-start-as-symbol.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/return-abrupt-from-start-as-symbol.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/return-abrupt-from-start.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/return-abrupt-from-start.js(strict mode)
-test/built-ins/TypedArray/prototype/fill/BigInt/return-this.js(default)
-test/built-ins/TypedArray/prototype/fill/BigInt/return-this.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/callbackfn-arguments-with-thisarg.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/callbackfn-arguments-with-thisarg.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/callbackfn-arguments-without-thisarg.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/callbackfn-arguments-without-thisarg.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/callbackfn-no-iteration-over-non-integer.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/callbackfn-no-iteration-over-non-integer.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/callbackfn-return-does-not-change-instance.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/callbackfn-return-does-not-change-instance.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/callbackfn-set-value-during-iteration.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/callbackfn-set-value-during-iteration.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/result-does-not-share-buffer.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/result-does-not-share-buffer.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/result-full-callbackfn-returns-true.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/result-full-callbackfn-returns-true.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-ctor-abrupt.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-ctor-abrupt.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-ctor-inherited.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-ctor-inherited.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-ctor-returns-throws.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-ctor-returns-throws.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-ctor.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-ctor.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-species-custom-ctor-invocation.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-species-custom-ctor-invocation.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-species-custom-ctor-returns-another-instance.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-species-custom-ctor-returns-another-instance.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-species-custom-ctor.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/speciesctor-get-species-custom-ctor.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/values-are-not-cached.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/values-are-not-cached.js(strict mode)
-test/built-ins/TypedArray/prototype/filter/BigInt/values-are-set.js(default)
-test/built-ins/TypedArray/prototype/filter/BigInt/values-are-set.js(strict mode)
-test/built-ins/TypedArray/prototype/find/BigInt/get-length-ignores-length-prop.js(default)
-test/built-ins/TypedArray/prototype/find/BigInt/get-length-ignores-length-prop.js(strict mode)
-test/built-ins/TypedArray/prototype/find/BigInt/predicate-call-changes-value.js(default)
-test/built-ins/TypedArray/prototype/find/BigInt/predicate-call-changes-value.js(strict mode)
-test/built-ins/TypedArray/prototype/find/BigInt/predicate-call-parameters.js(default)
-test/built-ins/TypedArray/prototype/find/BigInt/predicate-call-parameters.js(strict mode)
-test/built-ins/TypedArray/prototype/find/BigInt/return-found-value-predicate-result-is-true.js(default)
-test/built-ins/TypedArray/prototype/find/BigInt/return-found-value-predicate-result-is-true.js(strict mode)
-test/built-ins/TypedArray/prototype/findIndex/BigInt/get-length-ignores-length-prop.js(default)
-test/built-ins/TypedArray/prototype/findIndex/BigInt/get-length-ignores-length-prop.js(strict mode)
-test/built-ins/TypedArray/prototype/findIndex/BigInt/predicate-call-changes-value.js(default)
-test/built-ins/TypedArray/prototype/findIndex/BigInt/predicate-call-changes-value.js(strict mode)
-test/built-ins/TypedArray/prototype/findIndex/BigInt/predicate-call-parameters.js(default)
-test/built-ins/TypedArray/prototype/findIndex/BigInt/predicate-call-parameters.js(strict mode)
-test/built-ins/TypedArray/prototype/findIndex/BigInt/return-index-predicate-result-is-true.js(default)
-test/built-ins/TypedArray/prototype/findIndex/BigInt/return-index-predicate-result-is-true.js(strict mode)
-test/built-ins/TypedArray/prototype/findIndex/BigInt/return-negative-one-if-predicate-returns-false-value.js(default)
-test/built-ins/TypedArray/prototype/findIndex/BigInt/return-negative-one-if-predicate-returns-false-value.js(strict mode)
-test/built-ins/TypedArray/prototype/forEach/BigInt/callbackfn-arguments-with-thisarg.js(default)
-test/built-ins/TypedArray/prototype/forEach/BigInt/callbackfn-arguments-with-thisarg.js(strict mode)
-test/built-ins/TypedArray/prototype/forEach/BigInt/callbackfn-arguments-without-thisarg.js(default)
-test/built-ins/TypedArray/prototype/forEach/BigInt/callbackfn-arguments-without-thisarg.js(strict mode)
-test/built-ins/TypedArray/prototype/forEach/BigInt/callbackfn-no-interaction-over-non-integer.js(default)
-test/built-ins/TypedArray/prototype/forEach/BigInt/callbackfn-no-interaction-over-non-integer.js(strict mode)
-test/built-ins/TypedArray/prototype/forEach/BigInt/callbackfn-return-does-not-change-instance.js(default)
-test/built-ins/TypedArray/prototype/forEach/BigInt/callbackfn-return-does-not-change-instance.js(strict mode)
-test/built-ins/TypedArray/prototype/forEach/BigInt/callbackfn-set-value-during-interaction.js(default)
-test/built-ins/TypedArray/prototype/forEach/BigInt/callbackfn-set-value-during-interaction.js(strict mode)
-test/built-ins/TypedArray/prototype/forEach/BigInt/values-are-not-cached.js(default)
-test/built-ins/TypedArray/prototype/forEach/BigInt/values-are-not-cached.js(strict mode)
-test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer.js(default)
-test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer.js(strict mode)
-test/built-ins/TypedArray/prototype/includes/BigInt/fromIndex-equal-or-greater-length-returns-false.js(default)
-test/built-ins/TypedArray/prototype/includes/BigInt/fromIndex-equal-or-greater-length-returns-false.js(strict mode)
-test/built-ins/TypedArray/prototype/includes/BigInt/fromIndex-infinity.js(default)
-test/built-ins/TypedArray/prototype/includes/BigInt/fromIndex-infinity.js(strict mode)
-test/built-ins/TypedArray/prototype/includes/BigInt/fromIndex-minus-zero.js(default)
-test/built-ins/TypedArray/prototype/includes/BigInt/fromIndex-minus-zero.js(strict mode)
-test/built-ins/TypedArray/prototype/includes/BigInt/get-length-uses-internal-arraylength.js(default)
-test/built-ins/TypedArray/prototype/includes/BigInt/get-length-uses-internal-arraylength.js(strict mode)
-test/built-ins/TypedArray/prototype/includes/BigInt/length-zero-returns-false.js(default)
-test/built-ins/TypedArray/prototype/includes/BigInt/length-zero-returns-false.js(strict mode)
-test/built-ins/TypedArray/prototype/includes/BigInt/return-abrupt-tointeger-fromindex-symbol.js(default)
-test/built-ins/TypedArray/prototype/includes/BigInt/return-abrupt-tointeger-fromindex-symbol.js(strict mode)
-test/built-ins/TypedArray/prototype/includes/BigInt/return-abrupt-tointeger-fromindex.js(default)
-test/built-ins/TypedArray/prototype/includes/BigInt/return-abrupt-tointeger-fromindex.js(strict mode)
-test/built-ins/TypedArray/prototype/includes/BigInt/search-found-returns-true.js(default)
-test/built-ins/TypedArray/prototype/includes/BigInt/search-found-returns-true.js(strict mode)
-test/built-ins/TypedArray/prototype/includes/BigInt/search-not-found-returns-false.js(default)
-test/built-ins/TypedArray/prototype/includes/BigInt/search-not-found-returns-false.js(strict mode)
-test/built-ins/TypedArray/prototype/includes/BigInt/tointeger-fromindex.js(default)
-test/built-ins/TypedArray/prototype/includes/BigInt/tointeger-fromindex.js(strict mode)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer.js(default)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer.js(strict mode)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/fromIndex-equal-or-greater-length-returns-minus-one.js(default)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/fromIndex-equal-or-greater-length-returns-minus-one.js(strict mode)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/fromIndex-infinity.js(default)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/fromIndex-infinity.js(strict mode)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/fromIndex-minus-zero.js(default)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/fromIndex-minus-zero.js(strict mode)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/get-length-uses-internal-arraylength.js(default)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/get-length-uses-internal-arraylength.js(strict mode)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/length-zero-returns-minus-one.js(default)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/length-zero-returns-minus-one.js(strict mode)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/return-abrupt-tointeger-fromindex-symbol.js(default)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/return-abrupt-tointeger-fromindex-symbol.js(strict mode)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/return-abrupt-tointeger-fromindex.js(default)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/return-abrupt-tointeger-fromindex.js(strict mode)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/search-found-returns-index.js(default)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/search-found-returns-index.js(strict mode)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/search-not-found-returns-minus-one.js(default)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/search-not-found-returns-minus-one.js(strict mode)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/tointeger-fromindex.js(default)
-test/built-ins/TypedArray/prototype/indexOf/BigInt/tointeger-fromindex.js(strict mode)
-test/built-ins/TypedArray/prototype/join/BigInt/custom-separator-result-from-tostring-on-each-simple-value.js(default)
-test/built-ins/TypedArray/prototype/join/BigInt/custom-separator-result-from-tostring-on-each-simple-value.js(strict mode)
-test/built-ins/TypedArray/prototype/join/BigInt/get-length-uses-internal-arraylength.js(default)
-test/built-ins/TypedArray/prototype/join/BigInt/get-length-uses-internal-arraylength.js(strict mode)
-test/built-ins/TypedArray/prototype/join/BigInt/result-from-tostring-on-each-simple-value.js(default)
-test/built-ins/TypedArray/prototype/join/BigInt/result-from-tostring-on-each-simple-value.js(strict mode)
-test/built-ins/TypedArray/prototype/keys/BigInt/iter-prototype.js(default)
-test/built-ins/TypedArray/prototype/keys/BigInt/iter-prototype.js(strict mode)
-test/built-ins/TypedArray/prototype/keys/BigInt/return-itor.js(default)
-test/built-ins/TypedArray/prototype/keys/BigInt/return-itor.js(strict mode)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer.js(default)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer.js(strict mode)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/fromIndex-infinity.js(default)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/fromIndex-infinity.js(strict mode)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/fromIndex-minus-zero.js(default)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/fromIndex-minus-zero.js(strict mode)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/get-length-uses-internal-arraylength.js(default)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/get-length-uses-internal-arraylength.js(strict mode)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/length-zero-returns-minus-one.js(default)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/length-zero-returns-minus-one.js(strict mode)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/return-abrupt-tointeger-fromindex-symbol.js(default)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/return-abrupt-tointeger-fromindex-symbol.js(strict mode)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/return-abrupt-tointeger-fromindex.js(default)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/return-abrupt-tointeger-fromindex.js(strict mode)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/search-found-returns-index.js(default)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/search-found-returns-index.js(strict mode)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/search-not-found-returns-minus-one.js(default)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/search-not-found-returns-minus-one.js(strict mode)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/tointeger-fromindex.js(default)
-test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/tointeger-fromindex.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/arraylength-internal.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/arraylength-internal.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-arguments-with-thisarg.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-arguments-with-thisarg.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-arguments-without-thisarg.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-arguments-without-thisarg.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-detachbuffer.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-detachbuffer.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-no-interaction-over-non-integer-properties.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-no-interaction-over-non-integer-properties.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-return-affects-returned-object.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-return-affects-returned-object.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-return-does-not-change-instance.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-return-does-not-change-instance.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-return-does-not-copy-non-integer-properties.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-return-does-not-copy-non-integer-properties.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-set-value-during-interaction.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-set-value-during-interaction.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-this.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-this.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-ctor-abrupt.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-ctor-abrupt.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-ctor-inherited.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-ctor-inherited.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-ctor-returns-throws.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-ctor-returns-throws.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-ctor.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-ctor.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species-abrupt.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species-abrupt.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species-custom-ctor-invocation.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species-custom-ctor-invocation.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species-custom-ctor-length.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species-custom-ctor-length.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species-custom-ctor-returns-another-instance.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species-custom-ctor-returns-another-instance.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species-custom-ctor.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species-custom-ctor.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species-use-default-ctor.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species-use-default-ctor.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/speciesctor-get-species.js(strict mode)
-test/built-ins/TypedArray/prototype/map/BigInt/values-are-not-cached.js(default)
-test/built-ins/TypedArray/prototype/map/BigInt/values-are-not-cached.js(strict mode)
-test/built-ins/TypedArray/prototype/reduce/BigInt/callbackfn-arguments-custom-accumulator.js(default)
-test/built-ins/TypedArray/prototype/reduce/BigInt/callbackfn-arguments-custom-accumulator.js(strict mode)
-test/built-ins/TypedArray/prototype/reduce/BigInt/callbackfn-arguments-default-accumulator.js(default)
-test/built-ins/TypedArray/prototype/reduce/BigInt/callbackfn-arguments-default-accumulator.js(strict mode)
-test/built-ins/TypedArray/prototype/reduce/BigInt/callbackfn-no-iteration-over-non-integer-properties.js(default)
-test/built-ins/TypedArray/prototype/reduce/BigInt/callbackfn-no-iteration-over-non-integer-properties.js(strict mode)
-test/built-ins/TypedArray/prototype/reduce/BigInt/callbackfn-return-does-not-change-instance.js(default)
-test/built-ins/TypedArray/prototype/reduce/BigInt/callbackfn-return-does-not-change-instance.js(strict mode)
-test/built-ins/TypedArray/prototype/reduce/BigInt/callbackfn-set-value-during-iteration.js(default)
-test/built-ins/TypedArray/prototype/reduce/BigInt/callbackfn-set-value-during-iteration.js(strict mode)
-test/built-ins/TypedArray/prototype/reduce/BigInt/get-length-uses-internal-arraylength.js(default)
-test/built-ins/TypedArray/prototype/reduce/BigInt/get-length-uses-internal-arraylength.js(strict mode)
-test/built-ins/TypedArray/prototype/reduce/BigInt/result-is-last-callbackfn-return.js(default)
-test/built-ins/TypedArray/prototype/reduce/BigInt/result-is-last-callbackfn-return.js(strict mode)
-test/built-ins/TypedArray/prototype/reduce/BigInt/result-of-any-type.js(default)
-test/built-ins/TypedArray/prototype/reduce/BigInt/result-of-any-type.js(strict mode)
-test/built-ins/TypedArray/prototype/reduce/BigInt/return-first-value-without-callbackfn.js(default)
-test/built-ins/TypedArray/prototype/reduce/BigInt/return-first-value-without-callbackfn.js(strict mode)
-test/built-ins/TypedArray/prototype/reduce/BigInt/values-are-not-cached.js(default)
-test/built-ins/TypedArray/prototype/reduce/BigInt/values-are-not-cached.js(strict mode)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/callbackfn-arguments-custom-accumulator.js(default)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/callbackfn-arguments-custom-accumulator.js(strict mode)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/callbackfn-arguments-default-accumulator.js(default)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/callbackfn-arguments-default-accumulator.js(strict mode)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/callbackfn-no-iteration-over-non-integer-properties.js(default)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/callbackfn-no-iteration-over-non-integer-properties.js(strict mode)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/callbackfn-return-does-not-change-instance.js(default)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/callbackfn-return-does-not-change-instance.js(strict mode)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/callbackfn-set-value-during-iteration.js(default)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/callbackfn-set-value-during-iteration.js(strict mode)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/get-length-uses-internal-arraylength.js(default)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/get-length-uses-internal-arraylength.js(strict mode)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/result-is-last-callbackfn-return.js(default)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/result-is-last-callbackfn-return.js(strict mode)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/result-of-any-type.js(default)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/result-of-any-type.js(strict mode)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/return-first-value-without-callbackfn.js(default)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/return-first-value-without-callbackfn.js(strict mode)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/values-are-not-cached.js(default)
-test/built-ins/TypedArray/prototype/reduceRight/BigInt/values-are-not-cached.js(strict mode)
-test/built-ins/TypedArray/prototype/reverse/BigInt/get-length-uses-internal-arraylength.js(default)
-test/built-ins/TypedArray/prototype/reverse/BigInt/get-length-uses-internal-arraylength.js(strict mode)
-test/built-ins/TypedArray/prototype/reverse/BigInt/reverts.js(default)
-test/built-ins/TypedArray/prototype/reverse/BigInt/reverts.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-negative-integer-offset-throws.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-negative-integer-offset-throws.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-offset-tointeger.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-offset-tointeger.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-src-get-length.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-src-get-length.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-src-get-value.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-src-get-value.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-src-length-symbol.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-src-length-symbol.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-src-length.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-src-length.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-src-tonumber-value-symbol.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-src-tonumber-value-symbol.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-src-tonumber-value.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-src-tonumber-value.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-tointeger-offset-symbol.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-tointeger-offset-symbol.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-toobject-offset.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-return-abrupt-from-toobject-offset.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-set-values-in-order.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-set-values-in-order.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-set-values.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-set-values.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-src-tonumber-value-type-conversions.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-src-tonumber-value-type-conversions.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-src-values-are-not-cached.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-src-values-are-not-cached.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-target-arraylength-internal.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-target-arraylength-internal.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-targetbuffer-detached-on-get-src-value-throws.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-targetbuffer-detached-on-get-src-value-throws.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-targetbuffer-detached-on-tointeger-offset-throws.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-targetbuffer-detached-on-tointeger-offset-throws.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-targetbuffer-detached-throws.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/array-arg-targetbuffer-detached-throws.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/bigint-tobigint64.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/bigint-tobigint64.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/bigint-tobiguint64.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/bigint-tobiguint64.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/boolean-tobigint.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/boolean-tobigint.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/src-typedarray-big.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/src-typedarray-big.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/string-tobigint.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/string-tobigint.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-offset-tointeger.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-offset-tointeger.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-set-values-diff-buffer-other-type-sab.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-set-values-diff-buffer-other-type-sab.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-set-values-diff-buffer-other-type.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-set-values-diff-buffer-other-type.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-set-values-diff-buffer-same-type-sab.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-set-values-diff-buffer-same-type-sab.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-set-values-diff-buffer-same-type.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-set-values-diff-buffer-same-type.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-set-values-same-buffer-same-type-sab.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-set-values-same-buffer-same-type-sab.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-set-values-same-buffer-same-type.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-set-values-same-buffer-same-type.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-src-arraylength-internal.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-src-arraylength-internal.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-src-byteoffset-internal.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-src-byteoffset-internal.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-target-arraylength-internal.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-target-arraylength-internal.js(strict mode)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-target-byteoffset-internal.js(default)
-test/built-ins/TypedArray/prototype/set/BigInt/typedarray-arg-target-byteoffset-internal.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/arraylength-internal.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/arraylength-internal.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/infinity.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/infinity.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/minus-zero.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/minus-zero.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/result-does-not-copy-ordinary-properties.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/result-does-not-copy-ordinary-properties.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/results-with-different-length.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/results-with-different-length.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/results-with-empty-length.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/results-with-empty-length.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/results-with-same-length.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/results-with-same-length.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/set-values-from-different-ctor-type.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/set-values-from-different-ctor-type.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-ctor-abrupt.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-ctor-abrupt.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-ctor-inherited.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-ctor-inherited.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-ctor-returns-throws.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-ctor-returns-throws.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-ctor.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-ctor.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-species-custom-ctor-invocation.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-species-custom-ctor-invocation.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-species-custom-ctor-returns-another-instance.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-species-custom-ctor-returns-another-instance.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-species-custom-ctor.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-species-custom-ctor.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/tointeger-end.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/tointeger-end.js(strict mode)
-test/built-ins/TypedArray/prototype/slice/BigInt/tointeger-start.js(default)
-test/built-ins/TypedArray/prototype/slice/BigInt/tointeger-start.js(strict mode)
-test/built-ins/TypedArray/prototype/some/BigInt/callbackfn-arguments-with-thisarg.js(default)
-test/built-ins/TypedArray/prototype/some/BigInt/callbackfn-arguments-with-thisarg.js(strict mode)
-test/built-ins/TypedArray/prototype/some/BigInt/callbackfn-arguments-without-thisarg.js(default)
-test/built-ins/TypedArray/prototype/some/BigInt/callbackfn-arguments-without-thisarg.js(strict mode)
-test/built-ins/TypedArray/prototype/some/BigInt/callbackfn-no-interaction-over-non-integer.js(default)
-test/built-ins/TypedArray/prototype/some/BigInt/callbackfn-no-interaction-over-non-integer.js(strict mode)
-test/built-ins/TypedArray/prototype/some/BigInt/callbackfn-return-does-not-change-instance.js(default)
-test/built-ins/TypedArray/prototype/some/BigInt/callbackfn-return-does-not-change-instance.js(strict mode)
-test/built-ins/TypedArray/prototype/some/BigInt/callbackfn-set-value-during-interaction.js(default)
-test/built-ins/TypedArray/prototype/some/BigInt/callbackfn-set-value-during-interaction.js(strict mode)
-test/built-ins/TypedArray/prototype/some/BigInt/get-length-uses-internal-arraylength.js(default)
-test/built-ins/TypedArray/prototype/some/BigInt/get-length-uses-internal-arraylength.js(strict mode)
-test/built-ins/TypedArray/prototype/some/BigInt/values-are-not-cached.js(default)
-test/built-ins/TypedArray/prototype/some/BigInt/values-are-not-cached.js(strict mode)
-test/built-ins/TypedArray/prototype/sort/BigInt/arraylength-internal.js(default)
-test/built-ins/TypedArray/prototype/sort/BigInt/arraylength-internal.js(strict mode)
-test/built-ins/TypedArray/prototype/sort/BigInt/comparefn-call-throws.js(default)
-test/built-ins/TypedArray/prototype/sort/BigInt/comparefn-call-throws.js(strict mode)
-test/built-ins/TypedArray/prototype/sort/BigInt/comparefn-calls.js(default)
-test/built-ins/TypedArray/prototype/sort/BigInt/comparefn-calls.js(strict mode)
-test/built-ins/TypedArray/prototype/sort/BigInt/comparefn-nonfunction-call-throws.js(default)
-test/built-ins/TypedArray/prototype/sort/BigInt/comparefn-nonfunction-call-throws.js(strict mode)
-test/built-ins/TypedArray/prototype/sort/BigInt/return-same-instance.js(default)
-test/built-ins/TypedArray/prototype/sort/BigInt/return-same-instance.js(strict mode)
-test/built-ins/TypedArray/prototype/sort/BigInt/sortcompare-with-no-tostring.js(default)
-test/built-ins/TypedArray/prototype/sort/BigInt/sortcompare-with-no-tostring.js(strict mode)
-test/built-ins/TypedArray/prototype/sort/BigInt/sorted-values.js(default)
-test/built-ins/TypedArray/prototype/sort/BigInt/sorted-values.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/infinity.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/infinity.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/minus-zero.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/minus-zero.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/result-does-not-copy-ordinary-properties.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/result-does-not-copy-ordinary-properties.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/result-is-new-instance-from-same-ctor.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/result-is-new-instance-from-same-ctor.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/result-is-new-instance-with-shared-buffer.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/result-is-new-instance-with-shared-buffer.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/results-with-different-length.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/results-with-different-length.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/results-with-empty-length.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/results-with-empty-length.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/results-with-same-length.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/results-with-same-length.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-ctor-abrupt.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-ctor-abrupt.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-ctor-inherited.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-ctor-inherited.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-ctor-returns-throws.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-ctor-returns-throws.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-ctor.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-ctor.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-species-custom-ctor-invocation.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-species-custom-ctor-invocation.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-species-custom-ctor-returns-another-instance.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-species-custom-ctor-returns-another-instance.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-species-custom-ctor.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/speciesctor-get-species-custom-ctor.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/tointeger-begin.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/tointeger-begin.js(strict mode)
-test/built-ins/TypedArray/prototype/subarray/BigInt/tointeger-end.js(default)
-test/built-ins/TypedArray/prototype/subarray/BigInt/tointeger-end.js(strict mode)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/calls-tolocalestring-from-each-value.js(default)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/calls-tolocalestring-from-each-value.js(strict mode)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/calls-tostring-from-each-value.js(default)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/calls-tostring-from-each-value.js(strict mode)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/calls-valueof-from-each-value.js(default)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/calls-valueof-from-each-value.js(strict mode)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/get-length-uses-internal-arraylength.js(default)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/get-length-uses-internal-arraylength.js(strict mode)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-abrupt-from-firstelement-tolocalestring.js(default)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-abrupt-from-firstelement-tolocalestring.js(strict mode)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-abrupt-from-firstelement-tostring.js(default)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-abrupt-from-firstelement-tostring.js(strict mode)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-abrupt-from-firstelement-valueof.js(default)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-abrupt-from-firstelement-valueof.js(strict mode)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-abrupt-from-nextelement-tolocalestring.js(default)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-abrupt-from-nextelement-tolocalestring.js(strict mode)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-abrupt-from-nextelement-tostring.js(default)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-abrupt-from-nextelement-tostring.js(strict mode)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-abrupt-from-nextelement-valueof.js(default)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-abrupt-from-nextelement-valueof.js(strict mode)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-result.js(default)
-test/built-ins/TypedArray/prototype/toLocaleString/BigInt/return-result.js(strict mode)
-test/built-ins/TypedArray/prototype/values/BigInt/iter-prototype.js(default)
-test/built-ins/TypedArray/prototype/values/BigInt/iter-prototype.js(strict mode)
-test/built-ins/TypedArray/prototype/values/BigInt/return-itor.js(default)
-test/built-ins/TypedArray/prototype/values/BigInt/return-itor.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/desc-value-throws.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/desc-value-throws.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer-realm.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer-realm.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-greater-than-last-index.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-greater-than-last-index.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-lower-than-zero.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-lower-than-zero.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-minus-zero.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-minus-zero.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-not-canonical-index.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-not-canonical-index.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-not-integer.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-not-integer.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-not-numeric-index.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-not-numeric-index.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-accessor-desc.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-accessor-desc.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-desc-configurable.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-desc-configurable.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-desc-not-enumerable.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-desc-not-enumerable.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-desc-not-writable.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-desc-not-writable.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-symbol.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-symbol.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/non-extensible-new-key.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/non-extensible-new-key.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/non-extensible-redefine-key.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/non-extensible-redefine-key.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/set-value.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/set-value.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/this-is-not-extensible.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/this-is-not-extensible.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/tonumber-value-detached-buffer.js(default)
-test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/tonumber-value-detached-buffer.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/detached-buffer-key-is-not-numeric-index.js(default)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/detached-buffer-key-is-not-numeric-index.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/detached-buffer-key-is-symbol.js(default)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/detached-buffer-key-is-symbol.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/detached-buffer.js(default)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/detached-buffer.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/indexed-value-sab.js(default)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/indexed-value-sab.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/indexed-value.js(default)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/indexed-value.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/key-is-not-integer.js(default)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/key-is-not-integer.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/key-is-not-minus-zero.js(default)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/key-is-not-minus-zero.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/key-is-not-numeric-index.js(default)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/key-is-not-numeric-index.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/key-is-out-of-bounds.js(default)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/key-is-out-of-bounds.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/key-is-symbol.js(default)
-test/built-ins/TypedArrayConstructors/internals/Get/BigInt/key-is-symbol.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/detached-buffer-key-is-not-number.js(default)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/detached-buffer-key-is-not-number.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/detached-buffer-key-is-symbol.js(default)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/detached-buffer-key-is-symbol.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/index-prop-desc.js(default)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/index-prop-desc.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/key-is-minus-zero.js(default)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/key-is-minus-zero.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/key-is-not-canonical-index.js(default)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/key-is-not-canonical-index.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/key-is-not-integer.js(default)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/key-is-not-integer.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/key-is-not-numeric-index.js(default)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/key-is-not-numeric-index.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/key-is-out-of-bounds.js(default)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/key-is-out-of-bounds.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/key-is-symbol.js(default)
-test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/key-is-symbol.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/detached-buffer-key-is-not-number.js(default)
-test/built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/detached-buffer-key-is-not-number.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/detached-buffer-key-is-symbol.js(default)
-test/built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/detached-buffer-key-is-symbol.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/indexed-value.js(default)
-test/built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/indexed-value.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/key-is-not-canonical-index.js(default)
-test/built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/key-is-not-canonical-index.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/OwnPropertyKeys/BigInt/integer-indexes-and-string-and-symbol-keys-.js(default)
-test/built-ins/TypedArrayConstructors/internals/OwnPropertyKeys/BigInt/integer-indexes-and-string-and-symbol-keys-.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/OwnPropertyKeys/BigInt/integer-indexes-and-string-keys.js(default)
-test/built-ins/TypedArrayConstructors/internals/OwnPropertyKeys/BigInt/integer-indexes-and-string-keys.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/OwnPropertyKeys/BigInt/integer-indexes.js(default)
-test/built-ins/TypedArrayConstructors/internals/OwnPropertyKeys/BigInt/integer-indexes.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/bigint-tobigint64.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/bigint-tobigint64.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/bigint-tobiguint64.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/bigint-tobiguint64.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/boolean-tobigint.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/boolean-tobigint.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer-key-is-not-numeric-index.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer-key-is-not-numeric-index.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer-key-is-symbol.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer-key-is-symbol.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer-realm.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer-realm.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/indexed-value.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/indexed-value.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-minus-zero.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-minus-zero.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-canonical-index.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-canonical-index.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-integer.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-integer.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-numeric-index.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-numeric-index.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-out-of-bounds.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-out-of-bounds.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-symbol.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-symbol.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/string-tobigint.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/string-tobigint.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/tonumber-value-detached-buffer.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/tonumber-value-detached-buffer.js(strict mode)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/tonumber-value-throws.js(default)
-test/built-ins/TypedArrayConstructors/internals/Set/BigInt/tonumber-value-throws.js(strict mode)
 test/language/expressions/class/elements/async-gen-private-method/yield-promise-reject-next-catch.js(default)
 test/language/expressions/class/elements/async-gen-private-method/yield-promise-reject-next-catch.js(strict mode)
 test/language/expressions/class/elements/async-gen-private-method/yield-promise-reject-next-for-await-of-async-iterator.js(default)
diff --git a/tests/test262/test.js b/tests/test262/test.js
index cd6cc267..fd8ae58b 100644
--- a/tests/test262/test.js
+++ b/tests/test262/test.js
@@ -50,7 +50,14 @@ module.exports = function(test) {
   var isModule = !!test.attrs.flags.module;
 
   try {
-    JSHint(test.contents, { esversion: 9, maxerr: Infinity, module: isModule });
+    JSHint(test.contents, {
+      esversion: 10,
+      maxerr: Infinity,
+      module: isModule,
+      unstable: {
+        bigint: true
+      }
+    });
   } catch (e) {
     return false;
   }
diff --git a/tests/unit/core.js b/tests/unit/core.js
index 2ebb3c72..ba126e69 100644
--- a/tests/unit/core.js
+++ b/tests/unit/core.js
@@ -391,7 +391,7 @@ exports.returnStatement = function (test) {
   var src = fs.readFileSync(__dirname + '/fixtures/return.js', 'utf8');
 
   TestRun(test)
-    .addError(3, 15, "Did you mean to return a conditional instead of an assignment?")
+    .addError(3, 14, "Did you mean to return a conditional instead of an assignment?")
     .addError(38, 5, "Line breaking error 'return'.")
     .addError(38, 11, "Missing semicolon.")
     .addError(39, 7, "Unnecessary semicolon.")
diff --git a/tests/unit/fixtures/typeofcomp.js b/tests/unit/fixtures/typeofcomp.js
index f1a1281e..7eda0f43 100644
--- a/tests/unit/fixtures/typeofcomp.js
+++ b/tests/unit/fixtures/typeofcomp.js
@@ -11,6 +11,7 @@ if (typeof func === 'string') {}
 if (typeof func === 'function') {}
 if (typeof func === 'unknown') {}
 if (typeof func === 'symbol') {}
+if (typeof func === 'bigint') {}
 if (typeof func === "xml") {}
 if (typeof func === "object") {}
 if ("undefined" === typeof func) {}
diff --git a/tests/unit/options.js b/tests/unit/options.js
index 2f91f57e..35113b35 100644
--- a/tests/unit/options.js
+++ b/tests/unit/options.js
@@ -311,6 +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.")
     .test(src);
 
   TestRun(test)
@@ -318,8 +319,16 @@ 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.")
     .test(src, { esnext: true });
 
+  TestRun(test)
+    .addError(1, 17, "Invalid typeof value 'funtion'")
+    .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 } });
+
   TestRun(test)
     .test(src, { notypeof: true });
 
@@ -1668,20 +1677,20 @@ exports.boss = function (test) {
 
   // By default, warn about suspicious assignments
   TestRun(test)
-    .addError(1, 10, 'Expected a conditional expression and instead saw an assignment.')
-    .addError(4, 24, 'Expected a conditional expression and instead saw an assignment.')
-    .addError(7, 27, 'Expected a conditional expression and instead saw an assignment.')
-    .addError(12, 24, 'Expected a conditional expression and instead saw an assignment.')
+    .addError(1, 7, 'Expected a conditional expression and instead saw an assignment.')
+    .addError(4, 12, 'Expected a conditional expression and instead saw an assignment.')
+    .addError(7, 15, 'Expected a conditional expression and instead saw an assignment.')
+    .addError(12, 12, 'Expected a conditional expression and instead saw an assignment.')
 
     // GH-657
-    .addError(14, 11, 'Expected a conditional expression and instead saw an assignment.')
-    .addError(17, 25, 'Expected a conditional expression and instead saw an assignment.')
-    .addError(20, 28, 'Expected a conditional expression and instead saw an assignment.')
-    .addError(25, 25, 'Expected a conditional expression and instead saw an assignment.')
+    .addError(14, 7, 'Expected a conditional expression and instead saw an assignment.')
+    .addError(17, 12, 'Expected a conditional expression and instead saw an assignment.')
+    .addError(20, 15, 'Expected a conditional expression and instead saw an assignment.')
+    .addError(25, 12, 'Expected a conditional expression and instead saw an assignment.')
 
     // GH-670
-    .addError(28, 13, "Did you mean to return a conditional instead of an assignment?")
-    .addError(32, 15, "Did you mean to return a conditional instead of an assignment?")
+    .addError(28, 12, "Did you mean to return a conditional instead of an assignment?")
+    .addError(32, 14, "Did you mean to return a conditional instead of an assignment?")
     .test(src, {es3: true});
 
   // But if you are the boss, all is good
@@ -2846,7 +2855,7 @@ exports.nocomma = function (test) {
     .test("return 2, 5;", {});
 
   TestRun(test, "nocomma main case")
-    .addError(1, 11, "Unexpected use of a comma operator.")
+    .addError(1, 9, "Unexpected use of a comma operator.")
     .test("return 2, 5;", { nocomma: true });
 
   TestRun(test, "nocomma in an expression")
@@ -4229,13 +4238,15 @@ exports.esversion = function(test) {
     "// jshint esversion: 9",
     "// jshint esversion: 2018",
     "// jshint esversion: 10",
-    "// jshint esversion: 2019"
+    "// jshint esversion: 2019",
+    "// jshint esversion: 11",
+    "// jshint esversion: 2020"
   ];
 
   TestRun(test, "Value")
     .addError(2, 1, "Bad option value.")
-    .addError(12, 1, "Bad option value.")
-    .addError(13, 1, "Bad option value.")
+    .addError(14, 1, "Bad option value.")
+    .addError(15, 1, "Bad option value.")
     .test(code);
 
   var es5code = [
diff --git a/tests/unit/parser.js b/tests/unit/parser.js
index 9ba5099b..91a03730 100644
--- a/tests/unit/parser.js
+++ b/tests/unit/parser.js
@@ -4193,8 +4193,10 @@ exports["mozilla generator as esnext"] = function (test) {
     "  print(g.next());"
   ];
   TestRun(test)
-    .addError(4, 5,
-     "Yield expressions may only occur within generator functions.")
+    .addError(4, 5, "Expected an assignment or function call and instead saw an expression.")
+    .addError(4, 10, "Missing semicolon.")
+    .addError(4, 11, "Expected an assignment or function call and instead saw an expression.")
+    .addError(4, 5, "'yield' is not defined.")
     .test(code, {esnext: true, unused: true, undef: true, predef: ["print", "Iterator"]});
 
   TestRun(test)
@@ -4236,6 +4238,19 @@ exports["catch block no curlies"] = function (test) {
   test.done();
 };
 
+exports.optionalCatch = function (test) {
+  var code = "try {} catch {}";
+
+  TestRun(test)
+    .addError(1, 8, "'optional catch binding' is only available in ES10 (use 'esversion: 10').")
+    .test(code);
+
+  TestRun(test)
+    .test(code, {esversion: 10});
+
+  test.done();
+};
+
 exports["strict violation - use of arguments and eval"] = function (test) {
   var code = [
     "'use strict';",
@@ -4360,7 +4375,10 @@ exports["mozilla generator as es5"] = function (test) {
     "  print(g.next());"
   ];
   TestRun(test)
-    .addError(4, 5, "'yield' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
+    .addError(4, 5, "Expected an assignment or function call and instead saw an expression.")
+    .addError(4, 10, "Missing semicolon.")
+    .addError(4, 11, "Expected an assignment or function call and instead saw an expression.")
+    .addError(4, 5, "'yield' is not defined.")
     .addError(5, 5, "'destructuring assignment' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
     .addError(9, 6, "'let' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
     .test(code, {unused: true, undef: true, predef: ["print", "Iterator"]}); // es5
@@ -4383,7 +4401,10 @@ exports["mozilla generator as legacy JS"] = function (test) {
     "  print(g.next());"
   ];
   TestRun(test)
-    .addError(4, 5, "'yield' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
+    .addError(4, 5, "Expected an assignment or function call and instead saw an expression.")
+    .addError(4, 10, "Missing semicolon.")
+    .addError(4, 11, "Expected an assignment or function call and instead saw an expression.")
+    .addError(4, 5, "'yield' is not defined.")
     .addError(5, 5, "'destructuring assignment' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
     .addError(9, 6, "'let' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
     .test(code, {es3: true, unused: true, undef: true, predef: ["print", "Iterator"]});
@@ -4570,7 +4591,10 @@ exports["moz-style array comprehension as esnext"] = function (test) {
     "print('evens:', evens);"
   ];
   TestRun(test)
-    .addError(3, 5, "Yield expressions may only occur within generator functions.")
+    .addError(3, 5, "Expected an assignment or function call and instead saw an expression.")
+    .addError(3, 10, "Missing semicolon.")
+    .addError(3, 11, "Expected an assignment or function call and instead saw an expression.")
+    .addError(3, 5, "'yield' is not defined.")
     .addError(6, 20, "Expected 'for' and instead saw 'i'.")
     .addError(6, 30, "'for each' is only available in Mozilla JavaScript extensions (use moz option).")
     .addError(7, 14, "Expected 'for' and instead saw 'i'.")
@@ -4623,7 +4647,10 @@ exports["moz-style array comprehension as es5"] = function (test) {
   ];
   TestRun(test)
     .addError(2, 8, "'let' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
-    .addError(3, 5, "'yield' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
+    .addError(3, 5, "Expected an assignment or function call and instead saw an expression.")
+    .addError(3, 10, "Missing semicolon.")
+    .addError(3, 11, "Expected an assignment or function call and instead saw an expression.")
+    .addError(3, 5, "'yield' is not defined.")
     .addError(6, 19, "'array comprehension' is only available in Mozilla JavaScript extensions (use moz option).")
     .addError(6, 20, "Expected 'for' and instead saw 'i'.")
     .addError(6, 30, "'for each' is only available in Mozilla JavaScript extensions (use moz option).")
@@ -4650,7 +4677,10 @@ exports["array comprehension as legacy JS"] = function (test) {
   ];
   TestRun(test)
     .addError(2, 8, "'let' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
-    .addError(3, 5, "'yield' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
+    .addError(3, 5, "Expected an assignment or function call and instead saw an expression.")
+    .addError(3, 10, "Missing semicolon.")
+    .addError(3, 11, "Expected an assignment or function call and instead saw an expression.")
+    .addError(3, 5, "'yield' is not defined.")
     .addError(6, 19, "'array comprehension' is only available in Mozilla JavaScript extensions (use moz option).")
     .addError(7, 13, "'array comprehension' is only available in Mozilla JavaScript extensions (use moz option).")
     .test(code, {es3: true, unused: true, undef: true, predef: ["print"]});
@@ -4673,7 +4703,11 @@ exports["moz-style array comprehension as legacy JS"] = function (test) {
   ];
   TestRun(test)
     .addError(2, 8, "'let' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
-    .addError(3, 5, "'yield' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).")
+    .addError(3, 5, "Expected an assignment or function call and instead saw an expression.")
+    .addError(3, 10, "Missing semicolon.")
+    .addError(3, 11, "Expected an assignment or function call and instead saw an expression.")
+    .addError(3, 5, "'yield' is not defined.")
+
     .addError(6, 19, "'array comprehension' is only available in Mozilla JavaScript extensions (use moz option).")
     .addError(6, 20, "Expected 'for' and instead saw 'i'.")
     .addError(6, 30, "'for each' is only available in Mozilla JavaScript extensions (use moz option).")
@@ -5981,7 +6015,7 @@ exports["regression test for crash from GH-964"] = function (test) {
 
   TestRun(test)
     .addError(2, 23, "Bad assignment.")
-    .addError(2, 24, "Did you mean to return a conditional instead of an assignment?")
+    .addError(2, 23, "Did you mean to return a conditional instead of an assignment?")
     .test(code);
 
   test.done();
@@ -7445,12 +7479,12 @@ exports["test for GH-1018"] = function (test) {
   run.test(code, {boss: true});
 
   run
-    .addError(1, 11, "Expected a conditional expression and instead saw an assignment.")
-    .addError(2, 16, "Expected a conditional expression and instead saw an assignment.")
-    .addError(3, 14, "Expected a conditional expression and instead saw an assignment.")
-    .addError(4, 20, "Expected a conditional expression and instead saw an assignment.")
-    .addError(5, 20, "Expected a conditional expression and instead saw an assignment.")
-    .addError(6, 15, "Expected a conditional expression and instead saw an assignment.")
+    .addError(1, 7, "Expected a conditional expression and instead saw an assignment.")
+    .addError(2, 12, "Expected a conditional expression and instead saw an assignment.")
+    .addError(3, 10, "Expected a conditional expression and instead saw an assignment.")
+    .addError(4, 16, "Expected a conditional expression and instead saw an assignment.")
+    .addError(5, 16, "Expected a conditional expression and instead saw an assignment.")
+    .addError(6, 11, "Expected a conditional expression and instead saw an assignment.")
     .test(code);
 
   test.done();
@@ -7467,8 +7501,8 @@ exports["test warnings for assignments in conditionals"] = function (test) {
   ];
 
   var run = TestRun(test)
-    .addError(1, 10, "Expected a conditional expression and instead saw an assignment.")
-    .addError(4, 17, "Expected a conditional expression and instead saw an assignment.");
+    .addError(1, 7, "Expected a conditional expression and instead saw an assignment.")
+    .addError(4, 14, "Expected a conditional expression and instead saw an assignment.");
 
   run.test(code); // es5
 
@@ -7550,8 +7584,6 @@ exports["test for crash with invalid condition"] = function (test) {
     .addError(4, 16, "Missing semicolon.")
     .addError(6, 15, "Expected an identifier and instead saw ','.")
     .addError(7, 17, "Unexpected ')'.")
-    .addError(7, 17, "Expected an identifier and instead saw ')'.")
-    .addError(7, 19, "Expected ')' to match '(' from line 7 and instead saw ';'.")
     .addError(8, 15, "Expected an identifier and instead saw ','.")
     .addError(8, 16, "Expected ')' to match '(' from line 8 and instead saw 'b'.")
     .addError(8, 18, "Expected an identifier and instead saw ')'.")
@@ -7567,9 +7599,9 @@ exports["test 'yield' in compound expressions."] = function (test) {
   var run = TestRun(test);
 
   run
-    .addError(22, 15, "Did you mean to return a conditional instead of an assignment?")
+    .addError(22, 14, "Did you mean to return a conditional instead of an assignment?")
     .addError(23, 22, "Invalid position for 'yield' expression (consider wrapping in parenthesis).")
-    .addError(31, 15, "Did you mean to return a conditional instead of an assignment?")
+    .addError(31, 14, "Did you mean to return a conditional instead of an assignment?")
     .addError(32, 20, "Invalid position for 'yield' expression (consider wrapping in parenthesis).")
     .addError(32, 17, "Bad operand.")
     .addError(51, 10, "Invalid position for 'yield' expression (consider wrapping in parenthesis).")
@@ -7602,17 +7634,17 @@ exports["test 'yield' in compound expressions."] = function (test) {
     .test(code, {maxerr: 1000, expr: true, esnext: true});
 
   run = TestRun(test)
-    .addError(22, 15, "Did you mean to return a conditional instead of an assignment?")
-    .addError(31, 15, "Did you mean to return a conditional instead of an assignment?");
+    .addError(22, 14, "Did you mean to return a conditional instead of an assignment?")
+    .addError(31, 14, "Did you mean to return a conditional instead of an assignment?");
 
   // These are line-column pairs for the Mozilla paren errors.
   var needparen = [
     // comma
     [ 5,  5], [ 6,  8], [ 7,  5], [11,  5], [12,  8], [13,  5],
     // yield in yield
-    [18, 11], [19, 17], [19, 11], [20, 11], [20,  5], [21, 11], [21,  5], [21, 26], [22, 22],
-    [23, 22], [23, 11], [27, 11], [28, 17], [28, 11], [29, 11], [29,  5], [30, 11], [30,  5],
-    [30, 24], [31, 22], [32, 11], [32, 20],
+    [20, 11], [20,  5], [21, 11], [21,  5],
+    [23, 22], [29, 11], [29,  5], [30, 11], [30,  5],
+    [32, 11], [32, 20],
     // infix
     [51, 10], [53, 10], [54, 16], [57, 10], [58,  5], [59, 10], [60,  5], [60, 14],
     // prefix
@@ -7753,6 +7785,14 @@ exports["test 'yield' in invalid positions"] = function (test) {
   TestRun(test, "asi (ignoring warnings)")
     .test(code, { esversion: 6, expr: true, asi: true });
 
+  TestRun(test, "name of a generator expression")
+    .addError(1, 13, "Unexpected 'yield'.")
+    .test([
+      "(function * yield() {",
+      "  yield;",
+      "})();"
+    ], { esversion: 6 });
+
   test.done();
 };
 
@@ -9797,6 +9837,9 @@ exports.asyncFunctions.awaitOperator = function (test) {
       "void async function() {",
       "  void {",
       "    x: await 0,",
+      "    [await 0]: 0,",
+      "    get [await 0]() {},",
+      "    set [await 0](_) {},",
       "  };",
       "};"
     ], { esversion: 8 });
@@ -10049,7 +10092,10 @@ exports.asyncGenerators.classMethod = function (test) {
 
   TestRun(test, "Illegal constructor")
     .addError(1, 19, "Unexpected 'constructor'.")
-    .addError(1,44, "Yield expressions may only occur within generator functions.")
+    .addError(1, 44, "Expected an identifier and instead saw 'yield' (a reserved word).")
+    .addError(1, 44, "Expected an assignment or function call and instead saw an expression.")
+    .addError(1, 49, "Missing semicolon.")
+    .addError(1, 50, "Expected an assignment or function call and instead saw an expression.")
     .test("class C { async * constructor() { await 0; yield 0; } }", { esversion: 9 });
 
   test.done();
diff --git a/tests/unit/unstable/bigint.js b/tests/unit/unstable/bigint.js
new file mode 100644
index 00000000..174505bc
--- /dev/null
+++ b/tests/unit/unstable/bigint.js
@@ -0,0 +1,96 @@
+"use strict";
+
+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});
+
+  TestRun(test, "Enabled via inline directive")
+    .test([
+      "// jshint.unstable bigint: true",
+      "void 1n;"
+    ], {esversion: 9});
+
+  TestRun(test, "Enabled via configuration object")
+    .test([
+      "void 1n;"
+    ], {esversion: 9, unstable: {bigint: true}});
+
+  test.done();
+};
+
+exports.validUsage = function(test) {
+  TestRun(test)
+    .test([
+      "void 0n;",
+      "void 9n;",
+      "void 0x0n;",
+      "void 0xfn;",
+      "void 0o0n;",
+      "void 0o7n;",
+      "void 0b0n;",
+      "void 0b1n;",
+      "void 0b01n;",
+      "void 0b10n;",
+    ], {esversion: 6, unstable: {bigint: true}});
+
+  TestRun(test, 'No warnings for values that would otherwise coerce to Infinity')
+    .test([
+      "void " +
+        "1000000000000000000000000000000000000000000000000000000000000000000" +
+        "0000000000000000000000000000000000000000000000000000000000000000000" +
+        "0000000000000000000000000000000000000000000000000000000000000000000" +
+        "0000000000000000000000000000000000000000000000000000000000000000000" +
+        "000000000000000000000000000000000000000000n;"
+    ], {esversion: 9, unstable: {bigint: true}});
+
+  test.done();
+};
+
+exports.invalid = function (test) {
+  TestRun(test, "preceding decimal point")
+    .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}});
+
+  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}});
+
+  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}});
+
+  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}});
+
+  TestRun(test, "invalid hex digit")
+    .addError(1, 8, "Bad number '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}});
+
+  TestRun(test, "invalid binary digit")
+    .addError(1, 8, "Bad number '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}});
+
+  TestRun(test, "invalid octal digit")
+    .addError(1, 8, "Bad number '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.done();
+};