meriyah 7.1.1 → 7.2.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,6 @@
1
- var version$1 = "7.1.1";
1
+ var version$1 = "7.2.0";
2
+ var packageJson = {
3
+ version: version$1};
2
4
 
3
5
  const unicodeLookup = ((compressed, lookup) => {
4
6
  const result = new Uint32Array(69632);
@@ -484,7 +486,7 @@ function convertTokenType(t) {
484
486
  return 'RegularExpression';
485
487
  case 67174408:
486
488
  case 67174409:
487
- case 131:
489
+ case 132:
488
490
  return 'TemplateLiteral';
489
491
  default:
490
492
  if ((t & 143360) === 143360)
@@ -792,7 +794,7 @@ class ParseError extends SyntaxError {
792
794
  loc;
793
795
  description;
794
796
  constructor(start, end, type, ...params) {
795
- const description = errorMessages[type].replace(/%(\d+)/g, (_, i) => params[i]);
797
+ const description = errorMessages[type].replaceAll(/%(\d+)/g, (_, i) => params[i]);
796
798
  const message = '[' + start.line + ':' + start.column + '-' + end.line + ':' + end.column + ']: ' + description;
797
799
  super(message);
798
800
  this.start = start.index;
@@ -827,7 +829,7 @@ const KeywordDescTable = [
827
829
  'extends', 'finally', 'for', 'function', 'if', 'import', 'new', 'return', 'super', 'switch',
828
830
  'this', 'throw', 'try', 'while', 'with',
829
831
  'implements', 'interface', 'package', 'private', 'protected', 'public', 'static', 'yield',
830
- 'as', 'async', 'await', 'constructor', 'get', 'set', 'accessor', 'from', 'of',
832
+ 'as', 'async', 'await', 'constructor', 'get', 'set', 'accessor', 'from', 'of', 'using',
831
833
  'enum', 'eval', 'arguments', 'escaped keyword', 'escaped future reserved keyword', 'reserved if strict', '#',
832
834
  'BigIntLiteral', '??', '?.', 'WhiteSpace', 'Illegal', 'LineTerminator', 'PrivateField',
833
835
  'Template', '@', 'target', 'meta', 'LineFeed', 'Escaped', 'JSXText'
@@ -874,6 +876,7 @@ const descKeywordTable = {
874
876
  let: 241737,
875
877
  null: 86023,
876
878
  of: 471156,
879
+ using: 209013,
877
880
  package: 36966,
878
881
  private: 36967,
879
882
  protected: 36968,
@@ -884,12 +887,12 @@ const descKeywordTable = {
884
887
  true: 86022,
885
888
  with: 20579,
886
889
  yield: 241771,
887
- enum: 86133,
888
- eval: 537079926,
890
+ enum: 86134,
891
+ eval: 537079927,
889
892
  as: 77932,
890
- arguments: 537079927,
891
- target: 209029,
892
- meta: 209030,
893
+ arguments: 537079928,
894
+ target: 209030,
895
+ meta: 209031,
893
896
  accessor: 12402,
894
897
  };
895
898
 
@@ -951,24 +954,24 @@ function scanIdentifierSlowCase(parser, context, hasEscape, isValidAsKeyword) {
951
954
  if ((context & (2 | 2048)) === 0) {
952
955
  return token | -2147483648;
953
956
  }
954
- return -2147483528;
957
+ return -2147483527;
955
958
  }
956
959
  if (context & 1) {
957
960
  if (token === 36970) {
958
- return -2147483527;
961
+ return -2147483526;
959
962
  }
960
963
  if ((token & 36864) === 36864) {
961
- return -2147483527;
964
+ return -2147483526;
962
965
  }
963
966
  if ((token & 20480) === 20480) {
964
967
  if (context & 262144 && (context & 8) === 0) {
965
968
  return token | -2147483648;
966
969
  }
967
970
  else {
968
- return -2147483528;
971
+ return -2147483527;
969
972
  }
970
973
  }
971
- return 209018 | -2147483648;
974
+ return 209019 | -2147483648;
972
975
  }
973
976
  if (context & 262144 &&
974
977
  (context & 8) === 0 &&
@@ -977,31 +980,31 @@ function scanIdentifierSlowCase(parser, context, hasEscape, isValidAsKeyword) {
977
980
  }
978
981
  if (token === 241771) {
979
982
  return context & 262144
980
- ? 209018 | -2147483648
983
+ ? 209019 | -2147483648
981
984
  : context & 1024
982
- ? -2147483528
985
+ ? -2147483527
983
986
  : token | -2147483648;
984
987
  }
985
988
  if (token === 209005) {
986
- return 209018 | -2147483648;
989
+ return 209019 | -2147483648;
987
990
  }
988
991
  if ((token & 36864) === 36864) {
989
992
  return token | 12288 | -2147483648;
990
993
  }
991
- return -2147483528;
994
+ return -2147483527;
992
995
  }
993
996
  return 208897 | (hasEscape ? -2147483648 : 0);
994
997
  }
995
998
  function scanPrivateIdentifier(parser) {
996
999
  let char = advanceChar(parser);
997
1000
  if (char === 92)
998
- return 130;
1001
+ return 131;
999
1002
  const merged = consumePossibleSurrogatePair(parser);
1000
1003
  if (merged)
1001
1004
  char = merged;
1002
1005
  if (!isIdentifierStart(char))
1003
1006
  parser.report(96);
1004
- return 130;
1007
+ return 131;
1005
1008
  }
1006
1009
  function scanIdentifierUnicodeEscape(parser) {
1007
1010
  if (parser.source.charCodeAt(parser.index + 1) !== 117) {
@@ -1207,7 +1210,7 @@ function scanNumber(parser, context, kind) {
1207
1210
  if (isBigInt) {
1208
1211
  parser.tokenRaw = parser.source.slice(parser.tokenIndex, parser.index);
1209
1212
  parser.tokenValue = BigInt(parser.tokenRaw.slice(0, -1).replaceAll('_', ''));
1210
- return 134283388;
1213
+ return 134283389;
1211
1214
  }
1212
1215
  parser.tokenValue =
1213
1216
  kind & (1 | 2 | 8 | 4)
@@ -1518,12 +1521,14 @@ function parseEscape(parser, context, first, isTemplate = 0) {
1518
1521
  const ch = advanceChar(parser);
1519
1522
  if (parser.currentChar === 123) {
1520
1523
  let code = 0;
1524
+ let digits = 0;
1521
1525
  while ((CharTypes[advanceChar(parser)] & 64) !== 0) {
1522
1526
  code = (code << 4) | toHex(parser.currentChar);
1523
1527
  if (code > 1114111)
1524
1528
  return -5;
1529
+ digits++;
1525
1530
  }
1526
- if (parser.currentChar < 1 || parser.currentChar !== 125) {
1531
+ if (digits === 0 || parser.currentChar < 1 || parser.currentChar !== 125) {
1527
1532
  return -4;
1528
1533
  }
1529
1534
  return code;
@@ -1574,6 +1579,7 @@ function scanTemplate(parser, context) {
1574
1579
  const { index: start } = parser;
1575
1580
  let token = 67174409;
1576
1581
  let ret = '';
1582
+ let hasCarriageReturn = false;
1577
1583
  let char = advanceChar(parser);
1578
1584
  while (char !== 96) {
1579
1585
  if (char === 36 && parser.source.charCodeAt(parser.index + 1) === 123) {
@@ -1583,6 +1589,8 @@ function scanTemplate(parser, context) {
1583
1589
  }
1584
1590
  else if (char === 92) {
1585
1591
  char = advanceChar(parser);
1592
+ if (char === 13)
1593
+ hasCarriageReturn = true;
1586
1594
  if (char > 0x7e) {
1587
1595
  ret += String.fromCodePoint(char);
1588
1596
  }
@@ -1597,7 +1605,9 @@ function scanTemplate(parser, context) {
1597
1605
  parser.line = line;
1598
1606
  parser.column = column;
1599
1607
  ret = null;
1600
- char = scanBadTemplate(parser, char);
1608
+ char = scanBadTemplate(parser, char, () => {
1609
+ hasCarriageReturn = true;
1610
+ });
1601
1611
  if (char < 0)
1602
1612
  token = 67174408;
1603
1613
  break;
@@ -1608,10 +1618,13 @@ function scanTemplate(parser, context) {
1608
1618
  }
1609
1619
  }
1610
1620
  else if (parser.index < parser.end) {
1611
- if (char === 13 && parser.source.charCodeAt(parser.index) === 10) {
1612
- ret += String.fromCodePoint(char);
1621
+ if (char === 13)
1622
+ hasCarriageReturn = true;
1623
+ if (char === 13 && parser.source.charCodeAt(parser.index + 1) === 10) {
1613
1624
  parser.currentChar = parser.source.charCodeAt(++parser.index);
1614
1625
  }
1626
+ if (char === 13)
1627
+ char = 10;
1615
1628
  if (((char & 83) < 3 && char === 10) || (char ^ 8232) <= 1) {
1616
1629
  parser.column = -1;
1617
1630
  parser.line++;
@@ -1624,12 +1637,16 @@ function scanTemplate(parser, context) {
1624
1637
  }
1625
1638
  advanceChar(parser);
1626
1639
  parser.tokenValue = ret;
1627
- parser.tokenRaw = parser.source.slice(start + 1, parser.index - (token === 67174409 ? 1 : 2));
1640
+ const tokenRaw = parser.source.slice(start + 1, parser.index - (token === 67174409 ? 1 : 2));
1641
+ parser.tokenRaw = hasCarriageReturn ? tokenRaw.replaceAll(/\r\n?/g, '\n') : tokenRaw;
1628
1642
  return token;
1629
1643
  }
1630
- function scanBadTemplate(parser, ch) {
1644
+ function scanBadTemplate(parser, ch, onCarriageReturn) {
1631
1645
  while (ch !== 96) {
1632
1646
  switch (ch) {
1647
+ case 13:
1648
+ onCarriageReturn();
1649
+ break;
1633
1650
  case 36: {
1634
1651
  const index = parser.index + 1;
1635
1652
  if (index < parser.end && parser.source.charCodeAt(index) === 123) {
@@ -1660,42 +1677,42 @@ function scanTemplateTail(parser, context) {
1660
1677
  }
1661
1678
 
1662
1679
  const TokenLookup = [
1663
- 128,
1664
- 128,
1665
- 128,
1666
- 128,
1667
- 128,
1668
- 128,
1669
- 128,
1670
- 128,
1671
- 128,
1672
- 127,
1673
- 135,
1674
- 127,
1675
- 127,
1680
+ 129,
1681
+ 129,
1682
+ 129,
1683
+ 129,
1684
+ 129,
1685
+ 129,
1686
+ 129,
1687
+ 129,
1676
1688
  129,
1677
1689
  128,
1690
+ 136,
1678
1691
  128,
1679
1692
  128,
1693
+ 130,
1694
+ 129,
1695
+ 129,
1696
+ 129,
1697
+ 129,
1698
+ 129,
1699
+ 129,
1700
+ 129,
1701
+ 129,
1702
+ 129,
1703
+ 129,
1704
+ 129,
1705
+ 129,
1706
+ 129,
1707
+ 129,
1708
+ 129,
1709
+ 129,
1710
+ 129,
1711
+ 129,
1680
1712
  128,
1681
- 128,
1682
- 128,
1683
- 128,
1684
- 128,
1685
- 128,
1686
- 128,
1687
- 128,
1688
- 128,
1689
- 128,
1690
- 128,
1691
- 128,
1692
- 128,
1693
- 128,
1694
- 128,
1695
- 127,
1696
1713
  16842798,
1697
1714
  134283267,
1698
- 130,
1715
+ 131,
1699
1716
  208897,
1700
1717
  8391477,
1701
1718
  8390213,
@@ -1724,7 +1741,7 @@ const TokenLookup = [
1724
1741
  1077936155,
1725
1742
  8390721,
1726
1743
  22,
1727
- 132,
1744
+ 133,
1728
1745
  208897,
1729
1746
  208897,
1730
1747
  208897,
@@ -1752,11 +1769,11 @@ const TokenLookup = [
1752
1769
  208897,
1753
1770
  208897,
1754
1771
  69271571,
1755
- 136,
1772
+ 137,
1756
1773
  20,
1757
1774
  8389959,
1758
1775
  208897,
1759
- 131,
1776
+ 132,
1760
1777
  4096,
1761
1778
  4096,
1762
1779
  4096,
@@ -1787,7 +1804,7 @@ const TokenLookup = [
1787
1804
  8389702,
1788
1805
  1074790415,
1789
1806
  16842799,
1790
- 128,
1807
+ 129,
1791
1808
  ];
1792
1809
  function nextToken(parser, context) {
1793
1810
  parser.flags = (parser.flags | 1) ^ 1;
@@ -1817,8 +1834,8 @@ function scanSingleToken(parser, context, state) {
1817
1834
  case 1074790417:
1818
1835
  case 18:
1819
1836
  case 16842799:
1820
- case 132:
1821
- case 128:
1837
+ case 133:
1838
+ case 129:
1822
1839
  advanceChar(parser);
1823
1840
  return token;
1824
1841
  case 208897:
@@ -1829,20 +1846,20 @@ function scanSingleToken(parser, context, state) {
1829
1846
  return scanNumber(parser, context, 16 | 128);
1830
1847
  case 134283267:
1831
1848
  return scanString(parser, context, char);
1832
- case 131:
1849
+ case 132:
1833
1850
  return scanTemplate(parser, context);
1834
- case 136:
1851
+ case 137:
1835
1852
  return scanUnicodeIdentifier(parser, context);
1836
- case 130:
1853
+ case 131:
1837
1854
  return scanPrivateIdentifier(parser);
1838
- case 127:
1855
+ case 128:
1839
1856
  advanceChar(parser);
1840
1857
  break;
1841
- case 129:
1858
+ case 130:
1842
1859
  state |= 1 | 4;
1843
1860
  scanNewLine(parser);
1844
1861
  break;
1845
- case 135:
1862
+ case 136:
1846
1863
  consumeLineFeed(parser, state);
1847
1864
  state = (state & -5) | 1;
1848
1865
  break;
@@ -2065,7 +2082,7 @@ function scanSingleToken(parser, context, state) {
2065
2082
  advanceChar(parser);
2066
2083
  return 4718634;
2067
2084
  }
2068
- return 276824445;
2085
+ return 276824446;
2069
2086
  }
2070
2087
  if (ch === 46) {
2071
2088
  const index = parser.index + 1;
@@ -2073,7 +2090,7 @@ function scanSingleToken(parser, context, state) {
2073
2090
  ch = source.charCodeAt(index);
2074
2091
  if (!(ch >= 48 && ch <= 57)) {
2075
2092
  advanceChar(parser);
2076
- return 67108990;
2093
+ return 67108991;
2077
2094
  }
2078
2095
  }
2079
2096
  }
@@ -2181,7 +2198,7 @@ function validateBindingIdentifier(parser, context, kind, t, skipEvalArgCheck) {
2181
2198
  parser.report(119);
2182
2199
  }
2183
2200
  }
2184
- if ((t & 20480) === 20480 || t === -2147483528) {
2201
+ if ((t & 20480) === 20480 || t === -2147483527) {
2185
2202
  parser.report(102);
2186
2203
  }
2187
2204
  if (kind & (8 | 16) && (t & 255) === (241737 & 255)) {
@@ -2202,10 +2219,10 @@ function validateFunctionName(parser, context, t) {
2202
2219
  if ((t & 537079808) === 537079808) {
2203
2220
  parser.report(119);
2204
2221
  }
2205
- if (t === -2147483527) {
2222
+ if (t === -2147483526) {
2206
2223
  parser.report(95);
2207
2224
  }
2208
- if (t === -2147483528) {
2225
+ if (t === -2147483527) {
2209
2226
  parser.report(95);
2210
2227
  }
2211
2228
  }
@@ -2229,7 +2246,7 @@ function isStrictReservedWord(parser, context, t) {
2229
2246
  parser.report(97, 'yield');
2230
2247
  return ((t & 20480) === 20480 ||
2231
2248
  (t & 36864) === 36864 ||
2232
- t == -2147483527);
2249
+ t == -2147483526);
2233
2250
  }
2234
2251
  function isPropertyWithPrivateFieldKey(expr) {
2235
2252
  return !expr.property ? false : expr.property.type === 'PrivateIdentifier';
@@ -4444,7 +4461,7 @@ const decodeMap = {
4444
4461
  '159': 376,
4445
4462
  };
4446
4463
  function decodeHTMLStrict(text) {
4447
- return text.replace(/&(?:[a-zA-Z]+|#[xX][\da-fA-F]+|#\d+);/g, (key) => {
4464
+ return text.replaceAll(/&(?:[a-zA-Z]+|#[xX][\da-fA-F]+|#\d+);/g, (key) => {
4448
4465
  if (key.charAt(1) === '#') {
4449
4466
  const secondChar = key.charAt(2);
4450
4467
  const codePoint = secondChar === 'X' || secondChar === 'x' ? parseInt(key.slice(3), 16) : parseInt(key.slice(2), 10);
@@ -4527,7 +4544,7 @@ function nextJSXToken(parser) {
4527
4544
  if (parser.options.raw)
4528
4545
  parser.tokenRaw = raw;
4529
4546
  parser.tokenValue = decodeHTMLStrict(raw);
4530
- parser.setToken(137);
4547
+ parser.setToken(138);
4531
4548
  }
4532
4549
  function rescanJSXIdentifier(parser) {
4533
4550
  if ((parser.getToken() & 143360) === 143360) {
@@ -4930,7 +4947,7 @@ function parseSource(source, rawOptions = {}, context = 0) {
4930
4947
  context |= 1;
4931
4948
  skipHashBang(parser);
4932
4949
  const scope = parser.createScopeIfLexical();
4933
- let body = [];
4950
+ let body;
4934
4951
  let sourceType = 'script';
4935
4952
  if (context & 2) {
4936
4953
  sourceType = 'module';
@@ -4988,7 +5005,7 @@ function parseModuleItemList(parser, context, scope) {
4988
5005
  return statements;
4989
5006
  }
4990
5007
  function parseModuleItem(parser, context, scope) {
4991
- if (parser.getToken() === 132) {
5008
+ if (parser.getToken() === 133) {
4992
5009
  Object.assign(parser.leadingDecorators, {
4993
5010
  start: parser.tokenStart,
4994
5011
  decorators: parseDecorators(parser, context, undefined),
@@ -5015,13 +5032,21 @@ function parseStatementListItem(parser, context, scope, privateScope, origin, la
5015
5032
  switch (parser.getToken()) {
5016
5033
  case 86104:
5017
5034
  return parseFunctionDeclaration(parser, context, scope, privateScope, origin, 1, 0, 0, start);
5018
- case 132:
5035
+ case 133:
5019
5036
  case 86094:
5020
5037
  return parseClassDeclaration(parser, context, scope, privateScope, 0);
5021
5038
  case 86090:
5022
5039
  return parseLexicalDeclaration(parser, context, scope, privateScope, 16, 0);
5023
5040
  case 241737:
5024
5041
  return parseLetIdentOrVarDeclarationStatement(parser, context, scope, privateScope, origin);
5042
+ case 209013:
5043
+ return parseUsingDeclarationOrExpressionStatement(parser, context, scope, privateScope, origin, labels);
5044
+ case 209006:
5045
+ if ((context & 2048 || (context & 2 && context & 8)) &&
5046
+ nextTokenIsUsingOnSameLine(parser)) {
5047
+ return parseAwaitUsingDeclarationOrExpressionStatement(parser, context, scope, privateScope, origin, labels);
5048
+ }
5049
+ return parseStatement(parser, context, scope, privateScope, origin, labels, 1);
5025
5050
  case 20564:
5026
5051
  parser.report(103, 'export');
5027
5052
  case 86106:
@@ -5105,15 +5130,18 @@ function parseExpressionOrLabelledStatement(parser, context, scope, privateScope
5105
5130
  default:
5106
5131
  expr = parsePrimaryExpression(parser, context, privateScope, 2, 0, 1, 0, 1, parser.tokenStart);
5107
5132
  }
5133
+ return finishExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl, expr, token, tokenValue, tokenStart);
5134
+ }
5135
+ function finishExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl, initialExpression, token, tokenValue, tokenStart) {
5108
5136
  if (token & 143360 && parser.getToken() === 21) {
5109
- return parseLabelledStatement(parser, context, scope, privateScope, origin, labels, tokenValue, expr, token, allowFuncDecl, tokenStart);
5137
+ return parseLabelledStatement(parser, context, scope, privateScope, origin, labels, tokenValue, initialExpression, token, allowFuncDecl, tokenStart);
5110
5138
  }
5111
- expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0, tokenStart);
5112
- expr = parseAssignmentExpression(parser, context, privateScope, 0, 0, tokenStart, expr);
5139
+ let expression = parseMemberOrUpdateExpression(parser, context, privateScope, initialExpression, 0, 0, tokenStart);
5140
+ expression = parseAssignmentExpression(parser, context, privateScope, 0, 0, tokenStart, expression);
5113
5141
  if (parser.getToken() === 18) {
5114
- expr = parseSequenceExpression(parser, context, privateScope, 0, tokenStart, expr);
5142
+ expression = parseSequenceExpression(parser, context, privateScope, 0, tokenStart, expression);
5115
5143
  }
5116
- return parseExpressionStatement(parser, context, expr, tokenStart);
5144
+ return parseExpressionStatement(parser, context, expression, tokenStart);
5117
5145
  }
5118
5146
  function parseBlock(parser, context, scope, privateScope, labels, start = parser.tokenStart, type = 'BlockStatement') {
5119
5147
  const body = [];
@@ -5302,9 +5330,14 @@ function parseSwitchStatement(parser, context, scope, privateScope, labels) {
5302
5330
  while (parser.getToken() !== 20556 &&
5303
5331
  parser.getToken() !== 1074790415 &&
5304
5332
  parser.getToken() !== 20561) {
5305
- consequent.push(parseStatementListItem(parser, context | 4, scope, privateScope, 2, {
5333
+ const statement = parseStatementListItem(parser, context | 4, scope, privateScope, 2, {
5306
5334
  $: labels,
5307
- }));
5335
+ });
5336
+ if (statement.type === 'VariableDeclaration' &&
5337
+ (statement.kind === 'using' || statement.kind === 'await using')) {
5338
+ parser.report(30, statement.kind);
5339
+ }
5340
+ consequent.push(statement);
5308
5341
  }
5309
5342
  cases.push(parser.finishNode({
5310
5343
  type: 'SwitchCase',
@@ -5423,7 +5456,6 @@ function parseTryStatement(parser, context, scope, privateScope, labels) {
5423
5456
  }
5424
5457
  function parseCatchBlock(parser, context, scope, privateScope, labels, start) {
5425
5458
  let param = null;
5426
- let additionalScope = scope;
5427
5459
  if (consumeOpt(parser, context, 67174411)) {
5428
5460
  scope = scope?.createChildScope(4);
5429
5461
  param = parseBindingPattern(parser, context, scope, privateScope, (parser.getToken() & 2097152) === 2097152
@@ -5437,7 +5469,7 @@ function parseCatchBlock(parser, context, scope, privateScope, labels, start) {
5437
5469
  }
5438
5470
  consume(parser, context | 32, 16);
5439
5471
  }
5440
- additionalScope = scope?.createChildScope(32);
5472
+ const additionalScope = scope?.createChildScope(32);
5441
5473
  const body = parseBlock(parser, context, additionalScope, privateScope, { $: labels });
5442
5474
  return parser.finishNode({
5443
5475
  type: 'CatchClause',
@@ -5475,7 +5507,8 @@ function parseLetIdentOrVarDeclarationStatement(parser, context, scope, privateS
5475
5507
  const { tokenValue, tokenStart } = parser;
5476
5508
  const token = parser.getToken();
5477
5509
  let expr = parseIdentifier(parser, context);
5478
- if (parser.getToken() & (143360 | 2097152)) {
5510
+ if (parser.getToken() & (143360 | 2097152) &&
5511
+ (parser.getToken() & 20480) !== 20480) {
5479
5512
  const declarations = parseVariableDeclarationList(parser, context, scope, privateScope, 8, 0);
5480
5513
  matchOrInsertSemicolon(parser, context | 32);
5481
5514
  return parser.finishNode({
@@ -5506,14 +5539,90 @@ function parseLetIdentOrVarDeclarationStatement(parser, context, scope, privateS
5506
5539
  }
5507
5540
  return parseExpressionStatement(parser, context, expr, tokenStart);
5508
5541
  }
5509
- function parseLexicalDeclaration(parser, context, scope, privateScope, kind, origin) {
5542
+ function nextTokenIsUsingOnSameLine(parser) {
5543
+ const { index: parserIndex, source } = parser;
5544
+ let index = parserIndex;
5545
+ while (index < parser.end) {
5546
+ const char = source.charCodeAt(index);
5547
+ if (char === 0x0a || char === 0x0d || char === 0x2028 || char === 0x2029)
5548
+ return false;
5549
+ if (/\s/u.test(source[index])) {
5550
+ index++;
5551
+ continue;
5552
+ }
5553
+ if (char === 0x2f && source.charCodeAt(index + 1) === 0x2a) {
5554
+ index += 2;
5555
+ while (index < parser.end) {
5556
+ const commentChar = source.charCodeAt(index);
5557
+ if (commentChar === 0x0a || commentChar === 0x0d || commentChar === 0x2028 || commentChar === 0x2029) {
5558
+ return false;
5559
+ }
5560
+ if (commentChar === 0x2a && source.charCodeAt(index + 1) === 0x2f) {
5561
+ index += 2;
5562
+ break;
5563
+ }
5564
+ index++;
5565
+ }
5566
+ continue;
5567
+ }
5568
+ break;
5569
+ }
5570
+ if (source.slice(index, index + 5) !== 'using')
5571
+ return false;
5572
+ const following = source.codePointAt(index + 5);
5573
+ return following === undefined || (following !== 0x5c && !isIdentifierPart(following));
5574
+ }
5575
+ function isResourceBindingStart(token) {
5576
+ return (token & 143360) === 143360 && (token & 20480) !== 20480;
5577
+ }
5578
+ function parseUsingDeclarationOrExpressionStatement(parser, context, scope, privateScope, origin, labels) {
5579
+ const { tokenStart, tokenValue } = parser;
5580
+ const token = parser.getToken();
5581
+ const expression = parseIdentifier(parser, context);
5582
+ if ((parser.flags & 1) === 0 && isResourceBindingStart(parser.getToken())) {
5583
+ if (origin & 4 && context & 8 && (context & 2) === 0) {
5584
+ parser.report(30, KeywordDescTable[parser.getToken() & 255]);
5585
+ }
5586
+ return parseLexicalDeclaration(parser, context, scope, privateScope, 16, origin, 'using', tokenStart, 1);
5587
+ }
5588
+ parser.assignable = 1;
5589
+ return finishExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, 1, expression, token, tokenValue, tokenStart);
5590
+ }
5591
+ function parseAwaitUsingDeclarationOrExpressionStatement(parser, context, scope, privateScope, origin, labels) {
5510
5592
  const start = parser.tokenStart;
5511
- nextToken(parser, context);
5512
- const declarations = parseVariableDeclarationList(parser, context, scope, privateScope, kind, origin);
5593
+ if (context & 524288)
5594
+ parser.report(177);
5595
+ nextToken(parser, context | 32);
5596
+ let argument;
5597
+ if ((parser.flags & 1) === 0 && parser.getToken() === 209013) {
5598
+ const usingStart = parser.tokenStart;
5599
+ const usingIdentifier = parseIdentifier(parser, context);
5600
+ if ((parser.flags & 1) === 0 && isResourceBindingStart(parser.getToken())) {
5601
+ return parseLexicalDeclaration(parser, context, scope, privateScope, 16, origin, 'await using', start, 1);
5602
+ }
5603
+ argument = parseMemberOrUpdateExpression(parser, context, privateScope, usingIdentifier, 0, 0, usingStart);
5604
+ }
5605
+ else {
5606
+ argument = parseLeftHandSideExpression(parser, context, privateScope, 0, 0, 1);
5607
+ }
5608
+ if (parser.getToken() === 8391735)
5609
+ parser.report(33);
5610
+ parser.assignable = 2;
5611
+ const expression = parser.finishNode({
5612
+ type: 'AwaitExpression',
5613
+ argument,
5614
+ }, start);
5615
+ return finishExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, 0, expression, 1048576, '', start);
5616
+ }
5617
+ function parseLexicalDeclaration(parser, context, scope, privateScope, kind, origin, declarationKind, declarationStart = parser.tokenStart, keywordConsumed = 0) {
5618
+ const start = declarationStart;
5619
+ if (!keywordConsumed)
5620
+ nextToken(parser, context);
5621
+ const declarations = parseVariableDeclarationList(parser, context, scope, privateScope, kind, origin, declarationKind);
5513
5622
  matchOrInsertSemicolon(parser, context | 32);
5514
5623
  return parser.finishNode({
5515
5624
  type: 'VariableDeclaration',
5516
- kind: kind & 8 ? 'let' : 'const',
5625
+ kind: declarationKind ?? (kind & 8 ? 'let' : 'const'),
5517
5626
  declarations,
5518
5627
  }, start);
5519
5628
  }
@@ -5528,24 +5637,34 @@ function parseVariableStatement(parser, context, scope, privateScope, origin) {
5528
5637
  declarations,
5529
5638
  }, start);
5530
5639
  }
5531
- function parseVariableDeclarationList(parser, context, scope, privateScope, kind, origin) {
5640
+ function parseVariableDeclarationList(parser, context, scope, privateScope, kind, origin, declarationKind) {
5532
5641
  let bindingCount = 1;
5533
- const list = [
5534
- parseVariableDeclaration(parser, context, scope, privateScope, kind, origin),
5535
- ];
5642
+ const firstDeclaration = parseVariableDeclaration(parser, context, scope, privateScope, kind, origin, declarationKind);
5643
+ const list = [firstDeclaration];
5644
+ const resourceNames = declarationKind && parser.options.lexical ? new Set([firstDeclaration.id.name]) : undefined;
5536
5645
  while (consumeOpt(parser, context, 18)) {
5537
5646
  bindingCount++;
5538
- list.push(parseVariableDeclaration(parser, context, scope, privateScope, kind, origin));
5647
+ const declaration = parseVariableDeclaration(parser, context, scope, privateScope, kind, origin, declarationKind);
5648
+ if (resourceNames) {
5649
+ const { name } = declaration.id;
5650
+ if (resourceNames.has(name))
5651
+ parser.report(145, name);
5652
+ resourceNames.add(name);
5653
+ }
5654
+ list.push(declaration);
5539
5655
  }
5540
5656
  if (bindingCount > 1 && origin & 32 && parser.getToken() & 262144) {
5541
5657
  parser.report(61, KeywordDescTable[parser.getToken() & 255]);
5542
5658
  }
5543
5659
  return list;
5544
5660
  }
5545
- function parseVariableDeclaration(parser, context, scope, privateScope, kind, origin) {
5661
+ function parseVariableDeclaration(parser, context, scope, privateScope, kind, origin, declarationKind) {
5546
5662
  const { tokenStart } = parser;
5547
5663
  const token = parser.getToken();
5548
5664
  let init = null;
5665
+ if (declarationKind && (token & 2097152) === 2097152) {
5666
+ parser.report(50);
5667
+ }
5549
5668
  const id = parseBindingPattern(parser, context, scope, privateScope, kind, origin);
5550
5669
  if (parser.getToken() === 1077936155) {
5551
5670
  nextToken(parser, context | 32);
@@ -5560,7 +5679,7 @@ function parseVariableDeclaration(parser, context, scope, privateScope, kind, or
5560
5679
  }
5561
5680
  else if ((kind & 16 || (token & 2097152) > 0) &&
5562
5681
  (parser.getToken() & 262144) !== 262144) {
5563
- parser.report(59, kind & 16 ? 'const' : 'destructuring');
5682
+ parser.report(59, declarationKind ?? (kind & 16 ? 'const' : 'destructuring'));
5564
5683
  }
5565
5684
  return parser.finishNode({
5566
5685
  type: 'VariableDeclarator',
@@ -5581,25 +5700,23 @@ function parseForStatement(parser, context, scope, privateScope, labels) {
5581
5700
  let init = null;
5582
5701
  let isVarDecl = parser.getToken() === 86088 ||
5583
5702
  parser.getToken() === 241737 ||
5584
- parser.getToken() === 86090;
5703
+ parser.getToken() === 86090 ||
5704
+ parser.getToken() === 209013;
5705
+ let resourceDeclarationKind;
5706
+ let consumedForOfDelimiter = false;
5585
5707
  let right;
5586
5708
  const { tokenStart } = parser;
5587
5709
  const token = parser.getToken();
5588
5710
  if (isVarDecl) {
5589
5711
  if (token === 241737) {
5590
5712
  init = parseIdentifier(parser, context);
5591
- if (parser.getToken() & (143360 | 2097152)) {
5592
- if (parser.getToken() === 8673330) {
5593
- if (context & 1)
5594
- parser.report(67);
5595
- }
5596
- else {
5597
- init = parser.finishNode({
5598
- type: 'VariableDeclaration',
5599
- kind: 'let',
5600
- declarations: parseVariableDeclarationList(parser, context | 131072, scope, privateScope, 8, 32),
5601
- }, tokenStart);
5602
- }
5713
+ if (parser.getToken() & (143360 | 2097152) &&
5714
+ (parser.getToken() & 20480) !== 20480) {
5715
+ init = parser.finishNode({
5716
+ type: 'VariableDeclaration',
5717
+ kind: 'let',
5718
+ declarations: parseVariableDeclarationList(parser, context | 131072, scope, privateScope, 8, 32),
5719
+ }, tokenStart);
5603
5720
  parser.assignable = 1;
5604
5721
  }
5605
5722
  else if (context & 1) {
@@ -5613,6 +5730,81 @@ function parseForStatement(parser, context, scope, privateScope, labels) {
5613
5730
  parser.report(115);
5614
5731
  }
5615
5732
  }
5733
+ else if (token === 209013) {
5734
+ const usingIdentifier = parseIdentifier(parser, context);
5735
+ if ((parser.flags & 1) !== 0 || !isResourceBindingStart(parser.getToken())) {
5736
+ isVarDecl = false;
5737
+ parser.assignable = 1;
5738
+ init = parseMemberOrUpdateExpression(parser, context, privateScope, usingIdentifier, 0, 0, tokenStart);
5739
+ }
5740
+ else if (parser.getToken() === 471156) {
5741
+ const ofStart = parser.tokenStart;
5742
+ const ofToken = parser.getToken();
5743
+ const ofValue = parser.tokenValue;
5744
+ const ofIdentifier = parseIdentifier(parser, context);
5745
+ if (parser.getToken() !== 1077936155 &&
5746
+ parser.getToken() !== 8673330 &&
5747
+ parser.getToken() !== 1074790417 &&
5748
+ parser.getToken() !== 18) {
5749
+ isVarDecl = false;
5750
+ consumedForOfDelimiter = true;
5751
+ parser.assignable = 1;
5752
+ init = usingIdentifier;
5753
+ }
5754
+ else {
5755
+ resourceDeclarationKind = 'using';
5756
+ validateBindingIdentifier(parser, context, 16, ofToken, 0);
5757
+ scope?.addBlockName(context, ofValue, 16, 32);
5758
+ let declarationInitializer = null;
5759
+ if (parser.getToken() === 1077936155) {
5760
+ nextToken(parser, context | 32);
5761
+ declarationInitializer = parseExpression(parser, context | 131072, privateScope, 1, 0, parser.tokenStart);
5762
+ if ((parser.getToken() & 262144) === 262144) {
5763
+ throw new ParseError(ofStart, parser.currentLocation, 60, parser.getToken() === 471156 ? 'of' : 'in');
5764
+ }
5765
+ }
5766
+ else if (parser.getToken() !== 8673330) {
5767
+ parser.report(59, resourceDeclarationKind);
5768
+ }
5769
+ const declarations = [
5770
+ parser.finishNode({
5771
+ type: 'VariableDeclarator',
5772
+ id: ofIdentifier,
5773
+ init: declarationInitializer,
5774
+ }, ofStart),
5775
+ ];
5776
+ const resourceNames = parser.options.lexical ? new Set([ofValue]) : undefined;
5777
+ while (consumeOpt(parser, context | 131072, 18)) {
5778
+ const declaration = parseVariableDeclaration(parser, context | 131072, scope, privateScope, 16, 32, resourceDeclarationKind);
5779
+ if (resourceNames) {
5780
+ const { name } = declaration.id;
5781
+ if (resourceNames.has(name))
5782
+ parser.report(145, name);
5783
+ resourceNames.add(name);
5784
+ }
5785
+ declarations.push(declaration);
5786
+ }
5787
+ if (declarations.length > 1 && parser.getToken() & 262144) {
5788
+ parser.report(61, KeywordDescTable[parser.getToken() & 255]);
5789
+ }
5790
+ init = parser.finishNode({
5791
+ type: 'VariableDeclaration',
5792
+ kind: resourceDeclarationKind,
5793
+ declarations,
5794
+ }, tokenStart);
5795
+ parser.assignable = 1;
5796
+ }
5797
+ }
5798
+ else {
5799
+ resourceDeclarationKind = 'using';
5800
+ init = parser.finishNode({
5801
+ type: 'VariableDeclaration',
5802
+ kind: resourceDeclarationKind,
5803
+ declarations: parseVariableDeclarationList(parser, context | 131072, scope, privateScope, 16, 32, resourceDeclarationKind),
5804
+ }, tokenStart);
5805
+ parser.assignable = 1;
5806
+ }
5807
+ }
5616
5808
  else {
5617
5809
  nextToken(parser, context);
5618
5810
  init = parser.finishNode(token === 86088
@@ -5629,6 +5821,42 @@ function parseForStatement(parser, context, scope, privateScope, labels) {
5629
5821
  parser.assignable = 1;
5630
5822
  }
5631
5823
  }
5824
+ else if (token === 209006 &&
5825
+ (context & 2048 || (context & 2 && context & 8))) {
5826
+ if (context & 524288)
5827
+ parser.report(177);
5828
+ nextToken(parser, context | 32);
5829
+ let awaitArgument;
5830
+ if ((parser.flags & 1) === 0 && parser.getToken() === 209013) {
5831
+ const usingStart = parser.tokenStart;
5832
+ const usingIdentifier = parseIdentifier(parser, context);
5833
+ if ((parser.flags & 1) === 0 && isResourceBindingStart(parser.getToken())) {
5834
+ resourceDeclarationKind = 'await using';
5835
+ isVarDecl = true;
5836
+ init = parser.finishNode({
5837
+ type: 'VariableDeclaration',
5838
+ kind: resourceDeclarationKind,
5839
+ declarations: parseVariableDeclarationList(parser, context | 131072, scope, privateScope, 16, 32, resourceDeclarationKind),
5840
+ }, tokenStart);
5841
+ parser.assignable = 1;
5842
+ }
5843
+ else {
5844
+ awaitArgument = parseMemberOrUpdateExpression(parser, context, privateScope, usingIdentifier, 0, 0, usingStart);
5845
+ }
5846
+ }
5847
+ else {
5848
+ awaitArgument = parseLeftHandSideExpression(parser, context, privateScope, 0, 0, 1);
5849
+ }
5850
+ if (!isVarDecl) {
5851
+ if (parser.getToken() === 8391735)
5852
+ parser.report(33);
5853
+ parser.assignable = 2;
5854
+ init = parser.finishNode({
5855
+ type: 'AwaitExpression',
5856
+ argument: awaitArgument,
5857
+ }, tokenStart);
5858
+ }
5859
+ }
5632
5860
  else if (token === 1074790417) {
5633
5861
  if (forAwait)
5634
5862
  parser.report(82);
@@ -5650,12 +5878,13 @@ function parseForStatement(parser, context, scope, privateScope, labels) {
5650
5878
  else {
5651
5879
  init = parseLeftHandSideExpression(parser, context | 131072, privateScope, 1, 0, 1);
5652
5880
  }
5653
- if ((parser.getToken() & 262144) === 262144) {
5654
- if (parser.getToken() === 471156) {
5881
+ if (consumedForOfDelimiter || (parser.getToken() & 262144) === 262144) {
5882
+ if (consumedForOfDelimiter || parser.getToken() === 471156) {
5655
5883
  if (parser.assignable & 2)
5656
5884
  parser.report(80, forAwait ? 'await' : 'of');
5657
5885
  reinterpretToPattern(parser, init);
5658
- nextToken(parser, context | 32);
5886
+ if (!consumedForOfDelimiter)
5887
+ nextToken(parser, context | 32);
5659
5888
  right = parseExpression(parser, context, privateScope, 1, 0, parser.tokenStart);
5660
5889
  consume(parser, context | 32, 16);
5661
5890
  const body = parseIterationStatementBody(parser, context, scope, privateScope, labels);
@@ -5667,6 +5896,8 @@ function parseForStatement(parser, context, scope, privateScope, labels) {
5667
5896
  await: forAwait,
5668
5897
  }, start);
5669
5898
  }
5899
+ if (resourceDeclarationKind)
5900
+ parser.report(30, 'in');
5670
5901
  if (parser.assignable & 2)
5671
5902
  parser.report(80, 'in');
5672
5903
  reinterpretToPattern(parser, init);
@@ -5720,7 +5951,7 @@ function parseRestrictedIdentifier(parser, context, scope) {
5720
5951
  function parseImportDeclaration(parser, context, scope) {
5721
5952
  const start = parser.tokenStart;
5722
5953
  nextToken(parser, context);
5723
- let source = null;
5954
+ let source;
5724
5955
  const { tokenStart } = parser;
5725
5956
  let specifiers = [];
5726
5957
  if (parser.getToken() === 134283267) {
@@ -5864,7 +6095,7 @@ function parseExportDeclaration(parser, context, scope) {
5864
6095
  declaration = parseFunctionDeclaration(parser, context, scope, undefined, 4, 1, 1, 0, parser.tokenStart);
5865
6096
  break;
5866
6097
  }
5867
- case 132:
6098
+ case 133:
5868
6099
  case 86094:
5869
6100
  declaration = parseClassDeclaration(parser, context, scope, undefined, 1);
5870
6101
  break;
@@ -5987,7 +6218,7 @@ function parseExportDeclaration(parser, context, scope) {
5987
6218
  matchOrInsertSemicolon(parser, context | 32);
5988
6219
  break;
5989
6220
  }
5990
- case 132:
6221
+ case 133:
5991
6222
  case 86094:
5992
6223
  declaration = parseClassDeclaration(parser, context, scope, undefined, 2);
5993
6224
  break;
@@ -6325,7 +6556,7 @@ function parseSuperExpression(parser, context) {
6325
6556
  const { tokenStart } = parser;
6326
6557
  nextToken(parser, context);
6327
6558
  switch (parser.getToken()) {
6328
- case 67108990:
6559
+ case 67108991:
6329
6560
  parser.report(167);
6330
6561
  case 67174411: {
6331
6562
  if ((context & 512) === 0)
@@ -6372,10 +6603,13 @@ function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGr
6372
6603
  switch (parser.getToken()) {
6373
6604
  case 67108877: {
6374
6605
  nextToken(parser, (context | 262144 | 8) ^ 8);
6375
- if (context & 16 && parser.getToken() === 130 && parser.tokenValue === 'super') {
6606
+ if (context & 16 && parser.getToken() === 131 && parser.tokenValue === 'super') {
6376
6607
  parser.report(173);
6377
6608
  }
6378
- parser.assignable = 1;
6609
+ parser.assignable =
6610
+ (parser.flags & 2048) === 2048
6611
+ ? 2
6612
+ : 1;
6379
6613
  const property = parsePropertyOrPrivatePropertyName(parser, context | 64, privateScope);
6380
6614
  expr = parser.finishNode({
6381
6615
  type: 'MemberExpression',
@@ -6400,7 +6634,7 @@ function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGr
6400
6634
  const { tokenStart } = parser;
6401
6635
  const property = parseExpressions(parser, context, privateScope, inGroup, 1, tokenStart);
6402
6636
  consume(parser, context, 20);
6403
- parser.assignable = 1;
6637
+ parser.assignable = restoreHasOptionalChaining ? 2 : 1;
6404
6638
  expr = parser.finishNode({
6405
6639
  type: 'MemberExpression',
6406
6640
  object: expr,
@@ -6441,7 +6675,7 @@ function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGr
6441
6675
  }
6442
6676
  break;
6443
6677
  }
6444
- case 67108990: {
6678
+ case 67108991: {
6445
6679
  nextToken(parser, (context | 262144 | 8) ^ 8);
6446
6680
  parser.flags |= 2048;
6447
6681
  parser.assignable = 2;
@@ -6528,12 +6762,12 @@ function parseOptionalChain(parser, context, privateScope, expr, start) {
6528
6762
  }
6529
6763
  function parsePropertyOrPrivatePropertyName(parser, context, privateScope) {
6530
6764
  if ((parser.getToken() & 143360) === 0 &&
6531
- parser.getToken() !== -2147483528 &&
6532
6765
  parser.getToken() !== -2147483527 &&
6533
- parser.getToken() !== 130) {
6766
+ parser.getToken() !== -2147483526 &&
6767
+ parser.getToken() !== 131) {
6534
6768
  parser.report(160);
6535
6769
  }
6536
- return parser.getToken() === 130
6770
+ return parser.getToken() === 131
6537
6771
  ? parsePrivateIdentifier(parser, context, privateScope, 0)
6538
6772
  : parseIdentifier(parser, context);
6539
6773
  }
@@ -6626,7 +6860,7 @@ function parsePrimaryExpression(parser, context, privateScope, kind, inNew, canA
6626
6860
  return parseThisExpression(parser, context);
6627
6861
  case 65540:
6628
6862
  return parseRegExpLiteral(parser, context);
6629
- case 132:
6863
+ case 133:
6630
6864
  case 86094:
6631
6865
  return parseClassExpression(parser, context, privateScope, inGroup, start);
6632
6866
  case 86109:
@@ -6637,9 +6871,9 @@ function parsePrimaryExpression(parser, context, privateScope, kind, inNew, canA
6637
6871
  return parseTemplate(parser, context, privateScope);
6638
6872
  case 86107:
6639
6873
  return parseNewExpression(parser, context, privateScope, inGroup);
6640
- case 134283388:
6874
+ case 134283389:
6641
6875
  return parseBigIntLiteral(parser, context);
6642
- case 130:
6876
+ case 131:
6643
6877
  return parsePrivateIdentifier(parser, context, privateScope, 0);
6644
6878
  case 86106:
6645
6879
  return parseImportCallOrMetaExpression(parser, context, privateScope, inNew, inGroup, start);
@@ -6668,7 +6902,7 @@ function parseImportMetaExpression(parser, context, meta, start) {
6668
6902
  parser.report(169);
6669
6903
  nextToken(parser, context);
6670
6904
  const token = parser.getToken();
6671
- if (token !== 209030 && parser.tokenValue !== 'meta') {
6905
+ if (token !== 209031 && parser.tokenValue !== 'meta') {
6672
6906
  parser.report(174);
6673
6907
  }
6674
6908
  else if (token & -2147483648) {
@@ -6716,7 +6950,7 @@ function parseImportAttributes(parser, context) {
6716
6950
  const value = parseStringLiteral(parser, context);
6717
6951
  const keyContent = key.type === 'Literal' ? key.value : key.name;
6718
6952
  if (keysContent.has(keyContent)) {
6719
- parser.report(145, `${keyContent}`);
6953
+ parser.report(145, keyContent);
6720
6954
  }
6721
6955
  keysContent.add(keyContent);
6722
6956
  attributes.push(parser.finishNode({
@@ -6813,6 +7047,7 @@ function parseTemplate(parser, context, privateScope) {
6813
7047
  consume(parser, context, 67174409);
6814
7048
  quasis.push(parseTemplateElement(parser, tokenValue, tokenRaw, tokenStart, true));
6815
7049
  }
7050
+ parser.assignable = 2;
6816
7051
  return parser.finishNode({
6817
7052
  type: 'TemplateLiteral',
6818
7053
  expressions,
@@ -6891,7 +7126,7 @@ function parseIdentifier(parser, context) {
6891
7126
  }
6892
7127
  function parseLiteral(parser, context) {
6893
7128
  const { tokenValue, tokenRaw, tokenStart } = parser;
6894
- if (parser.getToken() === 134283388) {
7129
+ if (parser.getToken() === 134283389) {
6895
7130
  return parseBigIntLiteral(parser, context);
6896
7131
  }
6897
7132
  const node = {
@@ -7408,9 +7643,9 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7408
7643
  let key = null;
7409
7644
  let value;
7410
7645
  if (parser.getToken() & 143360 ||
7411
- parser.getToken() === -2147483528 ||
7412
- parser.getToken() === -2147483527) {
7413
- if (parser.getToken() === -2147483527)
7646
+ parser.getToken() === -2147483527 ||
7647
+ parser.getToken() === -2147483526) {
7648
+ if (parser.getToken() === -2147483526)
7414
7649
  destructible |= 16;
7415
7650
  key = parseIdentifier(parser, context);
7416
7651
  if (parser.getToken() === 18 ||
@@ -7442,7 +7677,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7442
7677
  else {
7443
7678
  destructible |=
7444
7679
  (token === 209006 ? 128 : 0) |
7445
- (token === -2147483528 ? 16 : 0);
7680
+ (token === -2147483527 ? 16 : 0);
7446
7681
  value = parser.cloneIdentifier(key);
7447
7682
  }
7448
7683
  }
@@ -7569,7 +7804,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7569
7804
  }
7570
7805
  else if (parser.getToken() & 143360) {
7571
7806
  destructible |= 16;
7572
- if (token === -2147483528)
7807
+ if (token === -2147483527)
7573
7808
  parser.report(95);
7574
7809
  if (token === 209005) {
7575
7810
  if (parser.flags & 1)
@@ -8380,7 +8615,7 @@ function parseNewExpression(parser, context, privateScope, inGroup) {
8380
8615
  const id = parseIdentifier(parser, context | 32);
8381
8616
  const { tokenStart } = parser;
8382
8617
  if (consumeOpt(parser, context, 67108877)) {
8383
- if (context & 65536 && parser.getToken() === 209029) {
8618
+ if (context & 65536 && parser.getToken() === 209030) {
8384
8619
  parser.assignable = 2;
8385
8620
  return parseMetaProperty(parser, context, id, start);
8386
8621
  }
@@ -8392,7 +8627,7 @@ function parseNewExpression(parser, context, privateScope, inGroup) {
8392
8627
  }
8393
8628
  const expr = parsePrimaryExpression(parser, context, privateScope, 2, 1, 0, inGroup, 1, tokenStart);
8394
8629
  context = (context | 131072) ^ 131072;
8395
- if (parser.getToken() === 67108990)
8630
+ if (parser.getToken() === 67108991)
8396
8631
  parser.report(168);
8397
8632
  const callee = parseMemberExpressionNoCall(parser, context, privateScope, expr, inGroup, tokenStart);
8398
8633
  parser.assignable = 2;
@@ -8446,7 +8681,7 @@ function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee,
8446
8681
  }, start);
8447
8682
  }
8448
8683
  let destructible = 0;
8449
- let expr = null;
8684
+ let expr;
8450
8685
  let isNonSimpleParameterList = 0;
8451
8686
  parser.destructible =
8452
8687
  (parser.destructible | 256 | 128) ^
@@ -8593,7 +8828,7 @@ function parseClassDeclaration(parser, context, scope, privateScope, flags) {
8593
8828
  let start;
8594
8829
  let decorators;
8595
8830
  if (parser.leadingDecorators.decorators.length) {
8596
- if (parser.getToken() === 132) {
8831
+ if (parser.getToken() === 133) {
8597
8832
  parser.report(30, '@');
8598
8833
  }
8599
8834
  start = parser.leadingDecorators.start;
@@ -8682,7 +8917,7 @@ function parseClassExpression(parser, context, privateScope, inGroup, start) {
8682
8917
  function parseDecorators(parser, context, privateScope) {
8683
8918
  const list = [];
8684
8919
  if (parser.options.next) {
8685
- while (parser.getToken() === 132) {
8920
+ while (parser.getToken() === 133) {
8686
8921
  list.push(parseDecoratorList(parser, context, privateScope));
8687
8922
  }
8688
8923
  }
@@ -8735,7 +8970,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8735
8970
  let kind = isStatic ? 32 : 0;
8736
8971
  let key = null;
8737
8972
  const token = parser.getToken();
8738
- if (token & (143360 | 36864) || token === -2147483528) {
8973
+ if (token & (143360 | 36864) || token === -2147483527) {
8739
8974
  key = parseIdentifier(parser, context);
8740
8975
  switch (token) {
8741
8976
  case 36970:
@@ -8756,6 +8991,9 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8756
8991
  break;
8757
8992
  case 209008:
8758
8993
  if (parser.getToken() !== 67174411) {
8994
+ if (parser.getToken() === 8391476 && parser.flags & 1) {
8995
+ return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
8996
+ }
8759
8997
  if ((parser.getToken() & 1073741824) === 1073741824) {
8760
8998
  return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
8761
8999
  }
@@ -8764,6 +9002,9 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8764
9002
  break;
8765
9003
  case 209009:
8766
9004
  if (parser.getToken() !== 67174411) {
9005
+ if (parser.getToken() === 8391476 && parser.flags & 1) {
9006
+ return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
9007
+ }
8767
9008
  if ((parser.getToken() & 1073741824) === 1073741824) {
8768
9009
  return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
8769
9010
  }
@@ -8792,7 +9033,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8792
9033
  kind |= 8;
8793
9034
  nextToken(parser, context);
8794
9035
  }
8795
- else if (parser.getToken() === 130) {
9036
+ else if (parser.getToken() === 131) {
8796
9037
  kind |= 8192;
8797
9038
  key = parsePrivateIdentifier(parser, context | 16, privateScope, 768);
8798
9039
  }
@@ -8802,7 +9043,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8802
9043
  else if (isStatic && token === 2162700) {
8803
9044
  return parseStaticBlock(parser, context | 16, scope, privateScope, start);
8804
9045
  }
8805
- else if (token === -2147483527) {
9046
+ else if (token === -2147483526) {
8806
9047
  key = parseIdentifier(parser, context);
8807
9048
  if (parser.getToken() !== 67174411)
8808
9049
  parser.report(30, KeywordDescTable[parser.getToken() & 255]);
@@ -8812,8 +9053,8 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8812
9053
  }
8813
9054
  if (kind & (8 | 16 | 768 | 1024)) {
8814
9055
  if (parser.getToken() & 143360 ||
8815
- parser.getToken() === -2147483528 ||
8816
- parser.getToken() === -2147483527) {
9056
+ parser.getToken() === -2147483527 ||
9057
+ parser.getToken() === -2147483526) {
8817
9058
  key = parseIdentifier(parser, context);
8818
9059
  }
8819
9060
  else if ((parser.getToken() & 134217728) === 134217728) {
@@ -8823,7 +9064,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8823
9064
  kind |= 2;
8824
9065
  key = parseComputedPropertyName(parser, context, privateScope, 0);
8825
9066
  }
8826
- else if (parser.getToken() === 130) {
9067
+ else if (parser.getToken() === 131) {
8827
9068
  kind |= 8192;
8828
9069
  key = parsePrivateIdentifier(parser, context, privateScope, kind);
8829
9070
  }
@@ -8903,7 +9144,7 @@ function parsePropertyDefinition(parser, context, privateScope, key, state, deco
8903
9144
  if (parser.getToken() === 1077936155) {
8904
9145
  nextToken(parser, context | 32);
8905
9146
  const { tokenStart } = parser;
8906
- if (parser.getToken() === 537079927)
9147
+ if (parser.getToken() === 537079928)
8907
9148
  parser.report(119);
8908
9149
  const modifierFlags = 1024 |
8909
9150
  2048 |
@@ -8935,7 +9176,7 @@ function parsePropertyDefinition(parser, context, privateScope, key, state, deco
8935
9176
  }
8936
9177
  function parseBindingPattern(parser, context, scope, privateScope, type, origin) {
8937
9178
  if (parser.getToken() & 143360 ||
8938
- ((context & 1) === 0 && parser.getToken() === -2147483527))
9179
+ ((context & 1) === 0 && parser.getToken() === -2147483526))
8939
9180
  return parseAndClassifyIdentifier(parser, context, scope, type, origin);
8940
9181
  if ((parser.getToken() & 2097152) !== 2097152)
8941
9182
  parser.report(30, KeywordDescTable[parser.getToken() & 255]);
@@ -8954,7 +9195,7 @@ function parseAndClassifyIdentifier(parser, context, scope, kind, origin) {
8954
9195
  if ((token & 537079808) === 537079808) {
8955
9196
  parser.report(119);
8956
9197
  }
8957
- else if ((token & 36864) === 36864 || token === -2147483527) {
9198
+ else if ((token & 36864) === 36864 || token === -2147483526) {
8958
9199
  parser.report(118);
8959
9200
  }
8960
9201
  }
@@ -9075,7 +9316,7 @@ function parseJSXChildrenAndClosingFragment(parser, context, privateScope, inJSX
9075
9316
  }
9076
9317
  }
9077
9318
  function parseJSXChildOrClosingElement(parser, context, privateScope, inJSXChild) {
9078
- if (parser.getToken() === 137)
9319
+ if (parser.getToken() === 138)
9079
9320
  return parseJSXText(parser, context);
9080
9321
  if (parser.getToken() === 2162700)
9081
9322
  return parseJSXExpressionContainer(parser, context, privateScope, 1, 0);
@@ -9089,7 +9330,7 @@ function parseJSXChildOrClosingElement(parser, context, privateScope, inJSXChild
9089
9330
  parser.report(0);
9090
9331
  }
9091
9332
  function parseJSXChildOrClosingFragment(parser, context, privateScope, inJSXChild) {
9092
- if (parser.getToken() === 137)
9333
+ if (parser.getToken() === 138)
9093
9334
  return parseJSXText(parser, context);
9094
9335
  if (parser.getToken() === 2162700)
9095
9336
  return parseJSXExpressionContainer(parser, context, privateScope, 1, 0);
@@ -9226,7 +9467,7 @@ function parseJSXExpressionContainer(parser, context, privateScope, inJSXChild,
9226
9467
  const { tokenStart } = parser;
9227
9468
  if (parser.getToken() === 14)
9228
9469
  return parseJSXSpreadChild(parser, context, privateScope, start);
9229
- let expression = null;
9470
+ let expression;
9230
9471
  if (parser.getToken() === 1074790415) {
9231
9472
  if (isAttr)
9232
9473
  parser.report(157);
@@ -9280,7 +9521,7 @@ function parseJSXIdentifier(parser, context) {
9280
9521
  }, start);
9281
9522
  }
9282
9523
 
9283
- const version = version$1;
9524
+ const { version } = packageJson;
9284
9525
  function parseScript(source, options) {
9285
9526
  return parseSource(source, { ...options, sourceType: 'script' });
9286
9527
  }