meriyah 7.0.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/meriyah.mjs CHANGED
@@ -1,4 +1,4 @@
1
- var version$1 = "7.0.0";
1
+ var version$1 = "7.1.0";
2
2
 
3
3
  const unicodeLookup = ((compressed, lookup) => {
4
4
  const result = new Uint32Array(69632);
@@ -805,6 +805,7 @@ class ParseError extends SyntaxError {
805
805
  this.description = description;
806
806
  }
807
807
  }
808
+ const isParseError = (error) => error instanceof ParseError;
808
809
 
809
810
  function getOwnProperty(object, key) {
810
811
  return Object.hasOwn(object, key) ? object[key] : undefined;
@@ -2003,7 +2004,7 @@ function scanSingleToken(parser, context, state) {
2003
2004
  advanceChar(parser);
2004
2005
  if (parser.currentChar === 61) {
2005
2006
  advanceChar(parser);
2006
- return 4194344;
2007
+ return 4718632;
2007
2008
  }
2008
2009
  return 8913465;
2009
2010
  }
@@ -2046,7 +2047,7 @@ function scanSingleToken(parser, context, state) {
2046
2047
  advanceChar(parser);
2047
2048
  if (parser.currentChar === 61) {
2048
2049
  advanceChar(parser);
2049
- return 4194345;
2050
+ return 4718633;
2050
2051
  }
2051
2052
  return 8913720;
2052
2053
  }
@@ -2062,7 +2063,7 @@ function scanSingleToken(parser, context, state) {
2062
2063
  advanceChar(parser);
2063
2064
  if (parser.currentChar === 61) {
2064
2065
  advanceChar(parser);
2065
- return 4194346;
2066
+ return 4718634;
2066
2067
  }
2067
2068
  return 276824445;
2068
2069
  }
@@ -4728,7 +4729,7 @@ class Parser {
4728
4729
  currentChar = 0;
4729
4730
  exportedNames = new Set();
4730
4731
  exportedBindings = new Set();
4731
- assignable = 1;
4732
+ assignable = 0;
4732
4733
  destructible = 0;
4733
4734
  leadingDecorators = { decorators: [] };
4734
4735
  constructor(source, rawOptions = {}) {
@@ -6017,6 +6018,8 @@ function parseAssignmentExpression(parser, context, privateScope, inGroup, isPat
6017
6018
  if ((token & 4194304) === 4194304) {
6018
6019
  if (parser.assignable & 2)
6019
6020
  parser.report(26);
6021
+ if ((token & 524288) === 524288 && parser.assignable & 4)
6022
+ parser.report(26);
6020
6023
  if ((!isPattern && token === 1077936155 && left.type === 'ArrayExpression') ||
6021
6024
  left.type === 'ObjectExpression') {
6022
6025
  reinterpretToPattern(parser, left);
@@ -6382,7 +6385,12 @@ function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGr
6382
6385
  parser.flags = (parser.flags | 2048) ^ 2048;
6383
6386
  }
6384
6387
  const args = parseArguments(parser, context, privateScope, inGroup);
6385
- parser.assignable = 2;
6388
+ if (!(context & 1) && parser.options.webcompat) {
6389
+ parser.assignable = 4;
6390
+ }
6391
+ else {
6392
+ parser.assignable = 2;
6393
+ }
6386
6394
  expr = parser.finishNode({
6387
6395
  type: 'CallExpression',
6388
6396
  callee: expr,
@@ -6450,7 +6458,12 @@ function parseOptionalChain(parser, context, privateScope, expr, start) {
6450
6458
  }
6451
6459
  else if (parser.getToken() === 67174411) {
6452
6460
  const args = parseArguments(parser, context, privateScope, 0);
6453
- parser.assignable = 2;
6461
+ if (!(context & 1) && parser.options.webcompat) {
6462
+ parser.assignable = 4;
6463
+ }
6464
+ else {
6465
+ parser.assignable = 2;
6466
+ }
6454
6467
  node = parser.finishNode({
6455
6468
  type: 'CallExpression',
6456
6469
  callee: expr,
@@ -7055,9 +7068,9 @@ function parseArrayExpressionOrPattern(parser, context, scope, privateScope, ski
7055
7068
  }
7056
7069
  else if (parser.getToken() !== 1077936155) {
7057
7070
  destructible |=
7058
- parser.assignable & 2
7059
- ? 16
7060
- : 32;
7071
+ parser.assignable & 1
7072
+ ? 32
7073
+ : 16;
7061
7074
  }
7062
7075
  }
7063
7076
  }
@@ -7087,9 +7100,9 @@ function parseArrayExpressionOrPattern(parser, context, scope, privateScope, ski
7087
7100
  }
7088
7101
  else if (parser.getToken() !== 1077936155) {
7089
7102
  destructible |=
7090
- parser.assignable & 2
7091
- ? 16
7092
- : 32;
7103
+ parser.assignable & 1
7104
+ ? 32
7105
+ : 16;
7093
7106
  }
7094
7107
  }
7095
7108
  }
@@ -7206,7 +7219,7 @@ function parseSpreadOrRestElement(parser, context, scope, privateScope, closingT
7206
7219
  if (parser.destructible & 8)
7207
7220
  parser.report(71);
7208
7221
  argument = parseMemberOrUpdateExpression(parser, context, privateScope, argument, inGroup, 0, tokenStart);
7209
- destructible |= parser.assignable & 2 ? 16 : 0;
7222
+ destructible |= parser.assignable & 1 ? 0 : 16;
7210
7223
  if ((parser.getToken() & 4194304) === 4194304) {
7211
7224
  if (parser.getToken() !== 1077936155)
7212
7225
  destructible |= 16;
@@ -7220,9 +7233,9 @@ function parseSpreadOrRestElement(parser, context, scope, privateScope, closingT
7220
7233
  argument = parseConditionalExpression(parser, context, privateScope, argument, tokenStart);
7221
7234
  }
7222
7235
  destructible |=
7223
- parser.assignable & 2
7224
- ? 16
7225
- : 32;
7236
+ parser.assignable & 1
7237
+ ? 32
7238
+ : 16;
7226
7239
  }
7227
7240
  }
7228
7241
  else {
@@ -7251,7 +7264,9 @@ function parseSpreadOrRestElement(parser, context, scope, privateScope, closingT
7251
7264
  argument = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, argument);
7252
7265
  }
7253
7266
  destructible |=
7254
- parser.assignable & 1 ? 32 : 16;
7267
+ parser.assignable & 1
7268
+ ? 32
7269
+ : 16;
7255
7270
  }
7256
7271
  parser.destructible = destructible;
7257
7272
  if (parser.getToken() !== closingToken && parser.getToken() !== 18)
@@ -7443,7 +7458,9 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7443
7458
  : parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin);
7444
7459
  destructible = parser.destructible;
7445
7460
  parser.assignable =
7446
- destructible & 16 ? 2 : 1;
7461
+ destructible & 16
7462
+ ? 2
7463
+ : 1;
7447
7464
  if (parser.getToken() === 18 || parser.getToken() === 1074790415) {
7448
7465
  if (parser.assignable & 2)
7449
7466
  destructible |= 16;
@@ -7465,9 +7482,9 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7465
7482
  value = parseConditionalExpression(parser, context, privateScope, value, tokenStart);
7466
7483
  }
7467
7484
  destructible |=
7468
- parser.assignable & 2
7469
- ? 16
7470
- : 32;
7485
+ parser.assignable & 1
7486
+ ? 32
7487
+ : 16;
7471
7488
  }
7472
7489
  }
7473
7490
  }
@@ -7624,7 +7641,9 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7624
7641
  : parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin);
7625
7642
  destructible = parser.destructible;
7626
7643
  parser.assignable =
7627
- destructible & 16 ? 2 : 1;
7644
+ destructible & 16
7645
+ ? 2
7646
+ : 1;
7628
7647
  if (parser.getToken() === 18 || parser.getToken() === 1074790415) {
7629
7648
  if (parser.assignable & 2) {
7630
7649
  destructible |= 16;
@@ -7644,9 +7663,9 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7644
7663
  value = parseConditionalExpression(parser, context, privateScope, value, tokenStart);
7645
7664
  }
7646
7665
  destructible |=
7647
- parser.assignable & 2
7648
- ? 16
7649
- : 32;
7666
+ parser.assignable & 1
7667
+ ? 32
7668
+ : 16;
7650
7669
  }
7651
7670
  }
7652
7671
  }
@@ -7675,7 +7694,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7675
7694
  else if (parser.getToken() === 67174411) {
7676
7695
  state |= 1;
7677
7696
  value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.tokenStart);
7678
- destructible = parser.assignable | 16;
7697
+ destructible = 16;
7679
7698
  }
7680
7699
  else {
7681
7700
  parser.report(134);
@@ -7695,11 +7714,11 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7695
7714
  value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0, tokenStart);
7696
7715
  if ((parser.getToken() & 4194304) === 4194304) {
7697
7716
  destructible |=
7698
- parser.assignable & 2
7699
- ? 16
7700
- : token === 1077936155
7717
+ parser.assignable & 1
7718
+ ? token === 1077936155
7701
7719
  ? 0
7702
- : 32;
7720
+ : 32
7721
+ : 16;
7703
7722
  value = parseAssignmentExpressionOrPattern(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
7704
7723
  }
7705
7724
  else if (parser.getToken() === 18 || parser.getToken() === 1074790415) {
@@ -7730,7 +7749,9 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7730
7749
  : parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin);
7731
7750
  destructible = parser.destructible;
7732
7751
  parser.assignable =
7733
- destructible & 16 ? 2 : 1;
7752
+ destructible & 16
7753
+ ? 2
7754
+ : 1;
7734
7755
  if (parser.getToken() === 18 || parser.getToken() === 1074790415) {
7735
7756
  if (parser.assignable & 2)
7736
7757
  destructible |= 16;
@@ -7755,9 +7776,9 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7755
7776
  value = parseConditionalExpression(parser, context, privateScope, value, tokenStart);
7756
7777
  }
7757
7778
  destructible |=
7758
- parser.assignable & 2
7759
- ? 16
7760
- : 32;
7779
+ parser.assignable & 1
7780
+ ? 32
7781
+ : 16;
7761
7782
  }
7762
7783
  }
7763
7784
  }
@@ -8362,6 +8383,12 @@ function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee,
8362
8383
  parser.report(48);
8363
8384
  return parseParenthesizedArrow(parser, context, scope, privateScope, [], canAssign, 1, start);
8364
8385
  }
8386
+ if (!(context & 1) && parser.options.webcompat) {
8387
+ parser.assignable = 4;
8388
+ }
8389
+ else {
8390
+ parser.assignable = 2;
8391
+ }
8365
8392
  return parser.finishNode({
8366
8393
  type: 'CallExpression',
8367
8394
  callee,
@@ -8435,7 +8462,7 @@ function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee,
8435
8462
  }
8436
8463
  else {
8437
8464
  expr = parseExpression(parser, context, privateScope, 1, 0, tokenStart);
8438
- destructible = parser.assignable;
8465
+ destructible = 0;
8439
8466
  params.push(expr);
8440
8467
  while (consumeOpt(parser, context | 32, 18)) {
8441
8468
  params.push(parseExpression(parser, context, privateScope, 1, 0, tokenStart));
@@ -8443,7 +8470,12 @@ function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee,
8443
8470
  destructible |= parser.assignable;
8444
8471
  consume(parser, context, 16);
8445
8472
  parser.destructible = destructible | 16;
8446
- parser.assignable = 2;
8473
+ if (!(context & 1) && parser.options.webcompat) {
8474
+ parser.assignable = 4;
8475
+ }
8476
+ else {
8477
+ parser.assignable = 2;
8478
+ }
8447
8479
  return parser.finishNode({
8448
8480
  type: 'CallExpression',
8449
8481
  callee,
@@ -8481,7 +8513,12 @@ function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee,
8481
8513
  if (destructible & 8) {
8482
8514
  parser.report(62);
8483
8515
  }
8484
- parser.assignable = 2;
8516
+ if (!(context & 1) && parser.options.webcompat) {
8517
+ parser.assignable = 4;
8518
+ }
8519
+ else {
8520
+ parser.assignable = 2;
8521
+ }
8485
8522
  return parser.finishNode({
8486
8523
  type: 'CallExpression',
8487
8524
  callee,
@@ -9205,4 +9242,4 @@ function parse(source, options) {
9205
9242
  return parseSource(source, options);
9206
9243
  }
9207
9244
 
9208
- export { parse, parseModule, parseScript, version };
9245
+ export { isParseError, parse, parseModule, parseScript, version };
@@ -4,7 +4,7 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.meriyah = {}));
5
5
  })(this, (function (exports) { 'use strict';
6
6
 
7
- var version$1 = "7.0.0";
7
+ var version$1 = "7.1.0";
8
8
 
9
9
  const unicodeLookup = ((compressed, lookup) => {
10
10
  const result = new Uint32Array(69632);
@@ -811,6 +811,7 @@
811
811
  this.description = description;
812
812
  }
813
813
  }
814
+ const isParseError = (error) => error instanceof ParseError;
814
815
 
815
816
  function getOwnProperty(object, key) {
816
817
  return Object.hasOwn(object, key) ? object[key] : undefined;
@@ -2009,7 +2010,7 @@
2009
2010
  advanceChar(parser);
2010
2011
  if (parser.currentChar === 61) {
2011
2012
  advanceChar(parser);
2012
- return 4194344;
2013
+ return 4718632;
2013
2014
  }
2014
2015
  return 8913465;
2015
2016
  }
@@ -2052,7 +2053,7 @@
2052
2053
  advanceChar(parser);
2053
2054
  if (parser.currentChar === 61) {
2054
2055
  advanceChar(parser);
2055
- return 4194345;
2056
+ return 4718633;
2056
2057
  }
2057
2058
  return 8913720;
2058
2059
  }
@@ -2068,7 +2069,7 @@
2068
2069
  advanceChar(parser);
2069
2070
  if (parser.currentChar === 61) {
2070
2071
  advanceChar(parser);
2071
- return 4194346;
2072
+ return 4718634;
2072
2073
  }
2073
2074
  return 276824445;
2074
2075
  }
@@ -4734,7 +4735,7 @@
4734
4735
  currentChar = 0;
4735
4736
  exportedNames = new Set();
4736
4737
  exportedBindings = new Set();
4737
- assignable = 1;
4738
+ assignable = 0;
4738
4739
  destructible = 0;
4739
4740
  leadingDecorators = { decorators: [] };
4740
4741
  constructor(source, rawOptions = {}) {
@@ -6023,6 +6024,8 @@
6023
6024
  if ((token & 4194304) === 4194304) {
6024
6025
  if (parser.assignable & 2)
6025
6026
  parser.report(26);
6027
+ if ((token & 524288) === 524288 && parser.assignable & 4)
6028
+ parser.report(26);
6026
6029
  if ((!isPattern && token === 1077936155 && left.type === 'ArrayExpression') ||
6027
6030
  left.type === 'ObjectExpression') {
6028
6031
  reinterpretToPattern(parser, left);
@@ -6388,7 +6391,12 @@
6388
6391
  parser.flags = (parser.flags | 2048) ^ 2048;
6389
6392
  }
6390
6393
  const args = parseArguments(parser, context, privateScope, inGroup);
6391
- parser.assignable = 2;
6394
+ if (!(context & 1) && parser.options.webcompat) {
6395
+ parser.assignable = 4;
6396
+ }
6397
+ else {
6398
+ parser.assignable = 2;
6399
+ }
6392
6400
  expr = parser.finishNode({
6393
6401
  type: 'CallExpression',
6394
6402
  callee: expr,
@@ -6456,7 +6464,12 @@
6456
6464
  }
6457
6465
  else if (parser.getToken() === 67174411) {
6458
6466
  const args = parseArguments(parser, context, privateScope, 0);
6459
- parser.assignable = 2;
6467
+ if (!(context & 1) && parser.options.webcompat) {
6468
+ parser.assignable = 4;
6469
+ }
6470
+ else {
6471
+ parser.assignable = 2;
6472
+ }
6460
6473
  node = parser.finishNode({
6461
6474
  type: 'CallExpression',
6462
6475
  callee: expr,
@@ -7061,9 +7074,9 @@
7061
7074
  }
7062
7075
  else if (parser.getToken() !== 1077936155) {
7063
7076
  destructible |=
7064
- parser.assignable & 2
7065
- ? 16
7066
- : 32;
7077
+ parser.assignable & 1
7078
+ ? 32
7079
+ : 16;
7067
7080
  }
7068
7081
  }
7069
7082
  }
@@ -7093,9 +7106,9 @@
7093
7106
  }
7094
7107
  else if (parser.getToken() !== 1077936155) {
7095
7108
  destructible |=
7096
- parser.assignable & 2
7097
- ? 16
7098
- : 32;
7109
+ parser.assignable & 1
7110
+ ? 32
7111
+ : 16;
7099
7112
  }
7100
7113
  }
7101
7114
  }
@@ -7212,7 +7225,7 @@
7212
7225
  if (parser.destructible & 8)
7213
7226
  parser.report(71);
7214
7227
  argument = parseMemberOrUpdateExpression(parser, context, privateScope, argument, inGroup, 0, tokenStart);
7215
- destructible |= parser.assignable & 2 ? 16 : 0;
7228
+ destructible |= parser.assignable & 1 ? 0 : 16;
7216
7229
  if ((parser.getToken() & 4194304) === 4194304) {
7217
7230
  if (parser.getToken() !== 1077936155)
7218
7231
  destructible |= 16;
@@ -7226,9 +7239,9 @@
7226
7239
  argument = parseConditionalExpression(parser, context, privateScope, argument, tokenStart);
7227
7240
  }
7228
7241
  destructible |=
7229
- parser.assignable & 2
7230
- ? 16
7231
- : 32;
7242
+ parser.assignable & 1
7243
+ ? 32
7244
+ : 16;
7232
7245
  }
7233
7246
  }
7234
7247
  else {
@@ -7257,7 +7270,9 @@
7257
7270
  argument = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, argument);
7258
7271
  }
7259
7272
  destructible |=
7260
- parser.assignable & 1 ? 32 : 16;
7273
+ parser.assignable & 1
7274
+ ? 32
7275
+ : 16;
7261
7276
  }
7262
7277
  parser.destructible = destructible;
7263
7278
  if (parser.getToken() !== closingToken && parser.getToken() !== 18)
@@ -7449,7 +7464,9 @@
7449
7464
  : parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin);
7450
7465
  destructible = parser.destructible;
7451
7466
  parser.assignable =
7452
- destructible & 16 ? 2 : 1;
7467
+ destructible & 16
7468
+ ? 2
7469
+ : 1;
7453
7470
  if (parser.getToken() === 18 || parser.getToken() === 1074790415) {
7454
7471
  if (parser.assignable & 2)
7455
7472
  destructible |= 16;
@@ -7471,9 +7488,9 @@
7471
7488
  value = parseConditionalExpression(parser, context, privateScope, value, tokenStart);
7472
7489
  }
7473
7490
  destructible |=
7474
- parser.assignable & 2
7475
- ? 16
7476
- : 32;
7491
+ parser.assignable & 1
7492
+ ? 32
7493
+ : 16;
7477
7494
  }
7478
7495
  }
7479
7496
  }
@@ -7630,7 +7647,9 @@
7630
7647
  : parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin);
7631
7648
  destructible = parser.destructible;
7632
7649
  parser.assignable =
7633
- destructible & 16 ? 2 : 1;
7650
+ destructible & 16
7651
+ ? 2
7652
+ : 1;
7634
7653
  if (parser.getToken() === 18 || parser.getToken() === 1074790415) {
7635
7654
  if (parser.assignable & 2) {
7636
7655
  destructible |= 16;
@@ -7650,9 +7669,9 @@
7650
7669
  value = parseConditionalExpression(parser, context, privateScope, value, tokenStart);
7651
7670
  }
7652
7671
  destructible |=
7653
- parser.assignable & 2
7654
- ? 16
7655
- : 32;
7672
+ parser.assignable & 1
7673
+ ? 32
7674
+ : 16;
7656
7675
  }
7657
7676
  }
7658
7677
  }
@@ -7681,7 +7700,7 @@
7681
7700
  else if (parser.getToken() === 67174411) {
7682
7701
  state |= 1;
7683
7702
  value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.tokenStart);
7684
- destructible = parser.assignable | 16;
7703
+ destructible = 16;
7685
7704
  }
7686
7705
  else {
7687
7706
  parser.report(134);
@@ -7701,11 +7720,11 @@
7701
7720
  value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0, tokenStart);
7702
7721
  if ((parser.getToken() & 4194304) === 4194304) {
7703
7722
  destructible |=
7704
- parser.assignable & 2
7705
- ? 16
7706
- : token === 1077936155
7723
+ parser.assignable & 1
7724
+ ? token === 1077936155
7707
7725
  ? 0
7708
- : 32;
7726
+ : 32
7727
+ : 16;
7709
7728
  value = parseAssignmentExpressionOrPattern(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
7710
7729
  }
7711
7730
  else if (parser.getToken() === 18 || parser.getToken() === 1074790415) {
@@ -7736,7 +7755,9 @@
7736
7755
  : parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin);
7737
7756
  destructible = parser.destructible;
7738
7757
  parser.assignable =
7739
- destructible & 16 ? 2 : 1;
7758
+ destructible & 16
7759
+ ? 2
7760
+ : 1;
7740
7761
  if (parser.getToken() === 18 || parser.getToken() === 1074790415) {
7741
7762
  if (parser.assignable & 2)
7742
7763
  destructible |= 16;
@@ -7761,9 +7782,9 @@
7761
7782
  value = parseConditionalExpression(parser, context, privateScope, value, tokenStart);
7762
7783
  }
7763
7784
  destructible |=
7764
- parser.assignable & 2
7765
- ? 16
7766
- : 32;
7785
+ parser.assignable & 1
7786
+ ? 32
7787
+ : 16;
7767
7788
  }
7768
7789
  }
7769
7790
  }
@@ -8368,6 +8389,12 @@
8368
8389
  parser.report(48);
8369
8390
  return parseParenthesizedArrow(parser, context, scope, privateScope, [], canAssign, 1, start);
8370
8391
  }
8392
+ if (!(context & 1) && parser.options.webcompat) {
8393
+ parser.assignable = 4;
8394
+ }
8395
+ else {
8396
+ parser.assignable = 2;
8397
+ }
8371
8398
  return parser.finishNode({
8372
8399
  type: 'CallExpression',
8373
8400
  callee,
@@ -8441,7 +8468,7 @@
8441
8468
  }
8442
8469
  else {
8443
8470
  expr = parseExpression(parser, context, privateScope, 1, 0, tokenStart);
8444
- destructible = parser.assignable;
8471
+ destructible = 0;
8445
8472
  params.push(expr);
8446
8473
  while (consumeOpt(parser, context | 32, 18)) {
8447
8474
  params.push(parseExpression(parser, context, privateScope, 1, 0, tokenStart));
@@ -8449,7 +8476,12 @@
8449
8476
  destructible |= parser.assignable;
8450
8477
  consume(parser, context, 16);
8451
8478
  parser.destructible = destructible | 16;
8452
- parser.assignable = 2;
8479
+ if (!(context & 1) && parser.options.webcompat) {
8480
+ parser.assignable = 4;
8481
+ }
8482
+ else {
8483
+ parser.assignable = 2;
8484
+ }
8453
8485
  return parser.finishNode({
8454
8486
  type: 'CallExpression',
8455
8487
  callee,
@@ -8487,7 +8519,12 @@
8487
8519
  if (destructible & 8) {
8488
8520
  parser.report(62);
8489
8521
  }
8490
- parser.assignable = 2;
8522
+ if (!(context & 1) && parser.options.webcompat) {
8523
+ parser.assignable = 4;
8524
+ }
8525
+ else {
8526
+ parser.assignable = 2;
8527
+ }
8491
8528
  return parser.finishNode({
8492
8529
  type: 'CallExpression',
8493
8530
  callee,
@@ -9211,6 +9248,7 @@
9211
9248
  return parseSource(source, options);
9212
9249
  }
9213
9250
 
9251
+ exports.isParseError = isParseError;
9214
9252
  exports.parse = parse;
9215
9253
  exports.parseModule = parseModule;
9216
9254
  exports.parseScript = parseScript;