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/CHANGELOG.md +25 -0
- package/README.md +2 -3
- package/dist/meriyah.cjs +397 -156
- package/dist/meriyah.min.mjs +1 -1
- package/dist/meriyah.mjs +397 -156
- package/dist/meriyah.umd.js +397 -156
- package/dist/meriyah.umd.min.js +1 -1
- package/dist/types/common.d.ts +2 -2
- package/dist/types/errors.d.ts +2 -2
- package/dist/types/estree.d.ts +1 -1
- package/dist/types/lexer/comments.d.ts +3 -3
- package/dist/types/lexer/common.d.ts +2 -2
- package/dist/types/lexer/identifier.d.ts +3 -3
- package/dist/types/lexer/index.d.ts +3 -3
- package/dist/types/lexer/jsx.d.ts +3 -3
- package/dist/types/lexer/numeric.d.ts +4 -4
- package/dist/types/lexer/regexp.d.ts +2 -2
- package/dist/types/lexer/scan.d.ts +4 -4
- package/dist/types/lexer/string.d.ts +3 -3
- package/dist/types/lexer/template.d.ts +3 -3
- package/dist/types/meriyah.d.ts +6 -6
- package/dist/types/options.d.ts +3 -3
- package/dist/types/parser/parser.d.ts +7 -7
- package/dist/types/parser/private-scope.d.ts +2 -2
- package/dist/types/parser/scope.d.ts +3 -3
- package/dist/types/parser.d.ts +3 -3
- package/dist/types/token.d.ts +22 -21
- package/package.json +2 -1
package/dist/meriyah.umd.js
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
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.
|
|
7
|
+
var version$1 = "7.2.0";
|
|
8
|
+
var packageJson = {
|
|
9
|
+
version: version$1};
|
|
8
10
|
|
|
9
11
|
const unicodeLookup = ((compressed, lookup) => {
|
|
10
12
|
const result = new Uint32Array(69632);
|
|
@@ -490,7 +492,7 @@
|
|
|
490
492
|
return 'RegularExpression';
|
|
491
493
|
case 67174408:
|
|
492
494
|
case 67174409:
|
|
493
|
-
case
|
|
495
|
+
case 132:
|
|
494
496
|
return 'TemplateLiteral';
|
|
495
497
|
default:
|
|
496
498
|
if ((t & 143360) === 143360)
|
|
@@ -798,7 +800,7 @@
|
|
|
798
800
|
loc;
|
|
799
801
|
description;
|
|
800
802
|
constructor(start, end, type, ...params) {
|
|
801
|
-
const description = errorMessages[type].
|
|
803
|
+
const description = errorMessages[type].replaceAll(/%(\d+)/g, (_, i) => params[i]);
|
|
802
804
|
const message = '[' + start.line + ':' + start.column + '-' + end.line + ':' + end.column + ']: ' + description;
|
|
803
805
|
super(message);
|
|
804
806
|
this.start = start.index;
|
|
@@ -833,7 +835,7 @@
|
|
|
833
835
|
'extends', 'finally', 'for', 'function', 'if', 'import', 'new', 'return', 'super', 'switch',
|
|
834
836
|
'this', 'throw', 'try', 'while', 'with',
|
|
835
837
|
'implements', 'interface', 'package', 'private', 'protected', 'public', 'static', 'yield',
|
|
836
|
-
'as', 'async', 'await', 'constructor', 'get', 'set', 'accessor', 'from', 'of',
|
|
838
|
+
'as', 'async', 'await', 'constructor', 'get', 'set', 'accessor', 'from', 'of', 'using',
|
|
837
839
|
'enum', 'eval', 'arguments', 'escaped keyword', 'escaped future reserved keyword', 'reserved if strict', '#',
|
|
838
840
|
'BigIntLiteral', '??', '?.', 'WhiteSpace', 'Illegal', 'LineTerminator', 'PrivateField',
|
|
839
841
|
'Template', '@', 'target', 'meta', 'LineFeed', 'Escaped', 'JSXText'
|
|
@@ -880,6 +882,7 @@
|
|
|
880
882
|
let: 241737,
|
|
881
883
|
null: 86023,
|
|
882
884
|
of: 471156,
|
|
885
|
+
using: 209013,
|
|
883
886
|
package: 36966,
|
|
884
887
|
private: 36967,
|
|
885
888
|
protected: 36968,
|
|
@@ -890,12 +893,12 @@
|
|
|
890
893
|
true: 86022,
|
|
891
894
|
with: 20579,
|
|
892
895
|
yield: 241771,
|
|
893
|
-
enum:
|
|
894
|
-
eval:
|
|
896
|
+
enum: 86134,
|
|
897
|
+
eval: 537079927,
|
|
895
898
|
as: 77932,
|
|
896
|
-
arguments:
|
|
897
|
-
target:
|
|
898
|
-
meta:
|
|
899
|
+
arguments: 537079928,
|
|
900
|
+
target: 209030,
|
|
901
|
+
meta: 209031,
|
|
899
902
|
accessor: 12402,
|
|
900
903
|
};
|
|
901
904
|
|
|
@@ -957,24 +960,24 @@
|
|
|
957
960
|
if ((context & (2 | 2048)) === 0) {
|
|
958
961
|
return token | -2147483648;
|
|
959
962
|
}
|
|
960
|
-
return -
|
|
963
|
+
return -2147483527;
|
|
961
964
|
}
|
|
962
965
|
if (context & 1) {
|
|
963
966
|
if (token === 36970) {
|
|
964
|
-
return -
|
|
967
|
+
return -2147483526;
|
|
965
968
|
}
|
|
966
969
|
if ((token & 36864) === 36864) {
|
|
967
|
-
return -
|
|
970
|
+
return -2147483526;
|
|
968
971
|
}
|
|
969
972
|
if ((token & 20480) === 20480) {
|
|
970
973
|
if (context & 262144 && (context & 8) === 0) {
|
|
971
974
|
return token | -2147483648;
|
|
972
975
|
}
|
|
973
976
|
else {
|
|
974
|
-
return -
|
|
977
|
+
return -2147483527;
|
|
975
978
|
}
|
|
976
979
|
}
|
|
977
|
-
return
|
|
980
|
+
return 209019 | -2147483648;
|
|
978
981
|
}
|
|
979
982
|
if (context & 262144 &&
|
|
980
983
|
(context & 8) === 0 &&
|
|
@@ -983,31 +986,31 @@
|
|
|
983
986
|
}
|
|
984
987
|
if (token === 241771) {
|
|
985
988
|
return context & 262144
|
|
986
|
-
?
|
|
989
|
+
? 209019 | -2147483648
|
|
987
990
|
: context & 1024
|
|
988
|
-
? -
|
|
991
|
+
? -2147483527
|
|
989
992
|
: token | -2147483648;
|
|
990
993
|
}
|
|
991
994
|
if (token === 209005) {
|
|
992
|
-
return
|
|
995
|
+
return 209019 | -2147483648;
|
|
993
996
|
}
|
|
994
997
|
if ((token & 36864) === 36864) {
|
|
995
998
|
return token | 12288 | -2147483648;
|
|
996
999
|
}
|
|
997
|
-
return -
|
|
1000
|
+
return -2147483527;
|
|
998
1001
|
}
|
|
999
1002
|
return 208897 | (hasEscape ? -2147483648 : 0);
|
|
1000
1003
|
}
|
|
1001
1004
|
function scanPrivateIdentifier(parser) {
|
|
1002
1005
|
let char = advanceChar(parser);
|
|
1003
1006
|
if (char === 92)
|
|
1004
|
-
return
|
|
1007
|
+
return 131;
|
|
1005
1008
|
const merged = consumePossibleSurrogatePair(parser);
|
|
1006
1009
|
if (merged)
|
|
1007
1010
|
char = merged;
|
|
1008
1011
|
if (!isIdentifierStart(char))
|
|
1009
1012
|
parser.report(96);
|
|
1010
|
-
return
|
|
1013
|
+
return 131;
|
|
1011
1014
|
}
|
|
1012
1015
|
function scanIdentifierUnicodeEscape(parser) {
|
|
1013
1016
|
if (parser.source.charCodeAt(parser.index + 1) !== 117) {
|
|
@@ -1213,7 +1216,7 @@
|
|
|
1213
1216
|
if (isBigInt) {
|
|
1214
1217
|
parser.tokenRaw = parser.source.slice(parser.tokenIndex, parser.index);
|
|
1215
1218
|
parser.tokenValue = BigInt(parser.tokenRaw.slice(0, -1).replaceAll('_', ''));
|
|
1216
|
-
return
|
|
1219
|
+
return 134283389;
|
|
1217
1220
|
}
|
|
1218
1221
|
parser.tokenValue =
|
|
1219
1222
|
kind & (1 | 2 | 8 | 4)
|
|
@@ -1524,12 +1527,14 @@
|
|
|
1524
1527
|
const ch = advanceChar(parser);
|
|
1525
1528
|
if (parser.currentChar === 123) {
|
|
1526
1529
|
let code = 0;
|
|
1530
|
+
let digits = 0;
|
|
1527
1531
|
while ((CharTypes[advanceChar(parser)] & 64) !== 0) {
|
|
1528
1532
|
code = (code << 4) | toHex(parser.currentChar);
|
|
1529
1533
|
if (code > 1114111)
|
|
1530
1534
|
return -5;
|
|
1535
|
+
digits++;
|
|
1531
1536
|
}
|
|
1532
|
-
if (parser.currentChar < 1 || parser.currentChar !== 125) {
|
|
1537
|
+
if (digits === 0 || parser.currentChar < 1 || parser.currentChar !== 125) {
|
|
1533
1538
|
return -4;
|
|
1534
1539
|
}
|
|
1535
1540
|
return code;
|
|
@@ -1580,6 +1585,7 @@
|
|
|
1580
1585
|
const { index: start } = parser;
|
|
1581
1586
|
let token = 67174409;
|
|
1582
1587
|
let ret = '';
|
|
1588
|
+
let hasCarriageReturn = false;
|
|
1583
1589
|
let char = advanceChar(parser);
|
|
1584
1590
|
while (char !== 96) {
|
|
1585
1591
|
if (char === 36 && parser.source.charCodeAt(parser.index + 1) === 123) {
|
|
@@ -1589,6 +1595,8 @@
|
|
|
1589
1595
|
}
|
|
1590
1596
|
else if (char === 92) {
|
|
1591
1597
|
char = advanceChar(parser);
|
|
1598
|
+
if (char === 13)
|
|
1599
|
+
hasCarriageReturn = true;
|
|
1592
1600
|
if (char > 0x7e) {
|
|
1593
1601
|
ret += String.fromCodePoint(char);
|
|
1594
1602
|
}
|
|
@@ -1603,7 +1611,9 @@
|
|
|
1603
1611
|
parser.line = line;
|
|
1604
1612
|
parser.column = column;
|
|
1605
1613
|
ret = null;
|
|
1606
|
-
char = scanBadTemplate(parser, char)
|
|
1614
|
+
char = scanBadTemplate(parser, char, () => {
|
|
1615
|
+
hasCarriageReturn = true;
|
|
1616
|
+
});
|
|
1607
1617
|
if (char < 0)
|
|
1608
1618
|
token = 67174408;
|
|
1609
1619
|
break;
|
|
@@ -1614,10 +1624,13 @@
|
|
|
1614
1624
|
}
|
|
1615
1625
|
}
|
|
1616
1626
|
else if (parser.index < parser.end) {
|
|
1617
|
-
if (char === 13
|
|
1618
|
-
|
|
1627
|
+
if (char === 13)
|
|
1628
|
+
hasCarriageReturn = true;
|
|
1629
|
+
if (char === 13 && parser.source.charCodeAt(parser.index + 1) === 10) {
|
|
1619
1630
|
parser.currentChar = parser.source.charCodeAt(++parser.index);
|
|
1620
1631
|
}
|
|
1632
|
+
if (char === 13)
|
|
1633
|
+
char = 10;
|
|
1621
1634
|
if (((char & 83) < 3 && char === 10) || (char ^ 8232) <= 1) {
|
|
1622
1635
|
parser.column = -1;
|
|
1623
1636
|
parser.line++;
|
|
@@ -1630,12 +1643,16 @@
|
|
|
1630
1643
|
}
|
|
1631
1644
|
advanceChar(parser);
|
|
1632
1645
|
parser.tokenValue = ret;
|
|
1633
|
-
|
|
1646
|
+
const tokenRaw = parser.source.slice(start + 1, parser.index - (token === 67174409 ? 1 : 2));
|
|
1647
|
+
parser.tokenRaw = hasCarriageReturn ? tokenRaw.replaceAll(/\r\n?/g, '\n') : tokenRaw;
|
|
1634
1648
|
return token;
|
|
1635
1649
|
}
|
|
1636
|
-
function scanBadTemplate(parser, ch) {
|
|
1650
|
+
function scanBadTemplate(parser, ch, onCarriageReturn) {
|
|
1637
1651
|
while (ch !== 96) {
|
|
1638
1652
|
switch (ch) {
|
|
1653
|
+
case 13:
|
|
1654
|
+
onCarriageReturn();
|
|
1655
|
+
break;
|
|
1639
1656
|
case 36: {
|
|
1640
1657
|
const index = parser.index + 1;
|
|
1641
1658
|
if (index < parser.end && parser.source.charCodeAt(index) === 123) {
|
|
@@ -1666,42 +1683,42 @@
|
|
|
1666
1683
|
}
|
|
1667
1684
|
|
|
1668
1685
|
const TokenLookup = [
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
128,
|
|
1678
|
-
127,
|
|
1679
|
-
135,
|
|
1680
|
-
127,
|
|
1681
|
-
127,
|
|
1686
|
+
129,
|
|
1687
|
+
129,
|
|
1688
|
+
129,
|
|
1689
|
+
129,
|
|
1690
|
+
129,
|
|
1691
|
+
129,
|
|
1692
|
+
129,
|
|
1693
|
+
129,
|
|
1682
1694
|
129,
|
|
1683
1695
|
128,
|
|
1696
|
+
136,
|
|
1684
1697
|
128,
|
|
1685
1698
|
128,
|
|
1699
|
+
130,
|
|
1700
|
+
129,
|
|
1701
|
+
129,
|
|
1702
|
+
129,
|
|
1703
|
+
129,
|
|
1704
|
+
129,
|
|
1705
|
+
129,
|
|
1706
|
+
129,
|
|
1707
|
+
129,
|
|
1708
|
+
129,
|
|
1709
|
+
129,
|
|
1710
|
+
129,
|
|
1711
|
+
129,
|
|
1712
|
+
129,
|
|
1713
|
+
129,
|
|
1714
|
+
129,
|
|
1715
|
+
129,
|
|
1716
|
+
129,
|
|
1717
|
+
129,
|
|
1686
1718
|
128,
|
|
1687
|
-
128,
|
|
1688
|
-
128,
|
|
1689
|
-
128,
|
|
1690
|
-
128,
|
|
1691
|
-
128,
|
|
1692
|
-
128,
|
|
1693
|
-
128,
|
|
1694
|
-
128,
|
|
1695
|
-
128,
|
|
1696
|
-
128,
|
|
1697
|
-
128,
|
|
1698
|
-
128,
|
|
1699
|
-
128,
|
|
1700
|
-
128,
|
|
1701
|
-
127,
|
|
1702
1719
|
16842798,
|
|
1703
1720
|
134283267,
|
|
1704
|
-
|
|
1721
|
+
131,
|
|
1705
1722
|
208897,
|
|
1706
1723
|
8391477,
|
|
1707
1724
|
8390213,
|
|
@@ -1730,7 +1747,7 @@
|
|
|
1730
1747
|
1077936155,
|
|
1731
1748
|
8390721,
|
|
1732
1749
|
22,
|
|
1733
|
-
|
|
1750
|
+
133,
|
|
1734
1751
|
208897,
|
|
1735
1752
|
208897,
|
|
1736
1753
|
208897,
|
|
@@ -1758,11 +1775,11 @@
|
|
|
1758
1775
|
208897,
|
|
1759
1776
|
208897,
|
|
1760
1777
|
69271571,
|
|
1761
|
-
|
|
1778
|
+
137,
|
|
1762
1779
|
20,
|
|
1763
1780
|
8389959,
|
|
1764
1781
|
208897,
|
|
1765
|
-
|
|
1782
|
+
132,
|
|
1766
1783
|
4096,
|
|
1767
1784
|
4096,
|
|
1768
1785
|
4096,
|
|
@@ -1793,7 +1810,7 @@
|
|
|
1793
1810
|
8389702,
|
|
1794
1811
|
1074790415,
|
|
1795
1812
|
16842799,
|
|
1796
|
-
|
|
1813
|
+
129,
|
|
1797
1814
|
];
|
|
1798
1815
|
function nextToken(parser, context) {
|
|
1799
1816
|
parser.flags = (parser.flags | 1) ^ 1;
|
|
@@ -1823,8 +1840,8 @@
|
|
|
1823
1840
|
case 1074790417:
|
|
1824
1841
|
case 18:
|
|
1825
1842
|
case 16842799:
|
|
1826
|
-
case
|
|
1827
|
-
case
|
|
1843
|
+
case 133:
|
|
1844
|
+
case 129:
|
|
1828
1845
|
advanceChar(parser);
|
|
1829
1846
|
return token;
|
|
1830
1847
|
case 208897:
|
|
@@ -1835,20 +1852,20 @@
|
|
|
1835
1852
|
return scanNumber(parser, context, 16 | 128);
|
|
1836
1853
|
case 134283267:
|
|
1837
1854
|
return scanString(parser, context, char);
|
|
1838
|
-
case
|
|
1855
|
+
case 132:
|
|
1839
1856
|
return scanTemplate(parser, context);
|
|
1840
|
-
case
|
|
1857
|
+
case 137:
|
|
1841
1858
|
return scanUnicodeIdentifier(parser, context);
|
|
1842
|
-
case
|
|
1859
|
+
case 131:
|
|
1843
1860
|
return scanPrivateIdentifier(parser);
|
|
1844
|
-
case
|
|
1861
|
+
case 128:
|
|
1845
1862
|
advanceChar(parser);
|
|
1846
1863
|
break;
|
|
1847
|
-
case
|
|
1864
|
+
case 130:
|
|
1848
1865
|
state |= 1 | 4;
|
|
1849
1866
|
scanNewLine(parser);
|
|
1850
1867
|
break;
|
|
1851
|
-
case
|
|
1868
|
+
case 136:
|
|
1852
1869
|
consumeLineFeed(parser, state);
|
|
1853
1870
|
state = (state & -5) | 1;
|
|
1854
1871
|
break;
|
|
@@ -2071,7 +2088,7 @@
|
|
|
2071
2088
|
advanceChar(parser);
|
|
2072
2089
|
return 4718634;
|
|
2073
2090
|
}
|
|
2074
|
-
return
|
|
2091
|
+
return 276824446;
|
|
2075
2092
|
}
|
|
2076
2093
|
if (ch === 46) {
|
|
2077
2094
|
const index = parser.index + 1;
|
|
@@ -2079,7 +2096,7 @@
|
|
|
2079
2096
|
ch = source.charCodeAt(index);
|
|
2080
2097
|
if (!(ch >= 48 && ch <= 57)) {
|
|
2081
2098
|
advanceChar(parser);
|
|
2082
|
-
return
|
|
2099
|
+
return 67108991;
|
|
2083
2100
|
}
|
|
2084
2101
|
}
|
|
2085
2102
|
}
|
|
@@ -2187,7 +2204,7 @@
|
|
|
2187
2204
|
parser.report(119);
|
|
2188
2205
|
}
|
|
2189
2206
|
}
|
|
2190
|
-
if ((t & 20480) === 20480 || t === -
|
|
2207
|
+
if ((t & 20480) === 20480 || t === -2147483527) {
|
|
2191
2208
|
parser.report(102);
|
|
2192
2209
|
}
|
|
2193
2210
|
if (kind & (8 | 16) && (t & 255) === (241737 & 255)) {
|
|
@@ -2208,10 +2225,10 @@
|
|
|
2208
2225
|
if ((t & 537079808) === 537079808) {
|
|
2209
2226
|
parser.report(119);
|
|
2210
2227
|
}
|
|
2211
|
-
if (t === -
|
|
2228
|
+
if (t === -2147483526) {
|
|
2212
2229
|
parser.report(95);
|
|
2213
2230
|
}
|
|
2214
|
-
if (t === -
|
|
2231
|
+
if (t === -2147483527) {
|
|
2215
2232
|
parser.report(95);
|
|
2216
2233
|
}
|
|
2217
2234
|
}
|
|
@@ -2235,7 +2252,7 @@
|
|
|
2235
2252
|
parser.report(97, 'yield');
|
|
2236
2253
|
return ((t & 20480) === 20480 ||
|
|
2237
2254
|
(t & 36864) === 36864 ||
|
|
2238
|
-
t == -
|
|
2255
|
+
t == -2147483526);
|
|
2239
2256
|
}
|
|
2240
2257
|
function isPropertyWithPrivateFieldKey(expr) {
|
|
2241
2258
|
return !expr.property ? false : expr.property.type === 'PrivateIdentifier';
|
|
@@ -4450,7 +4467,7 @@
|
|
|
4450
4467
|
'159': 376,
|
|
4451
4468
|
};
|
|
4452
4469
|
function decodeHTMLStrict(text) {
|
|
4453
|
-
return text.
|
|
4470
|
+
return text.replaceAll(/&(?:[a-zA-Z]+|#[xX][\da-fA-F]+|#\d+);/g, (key) => {
|
|
4454
4471
|
if (key.charAt(1) === '#') {
|
|
4455
4472
|
const secondChar = key.charAt(2);
|
|
4456
4473
|
const codePoint = secondChar === 'X' || secondChar === 'x' ? parseInt(key.slice(3), 16) : parseInt(key.slice(2), 10);
|
|
@@ -4533,7 +4550,7 @@
|
|
|
4533
4550
|
if (parser.options.raw)
|
|
4534
4551
|
parser.tokenRaw = raw;
|
|
4535
4552
|
parser.tokenValue = decodeHTMLStrict(raw);
|
|
4536
|
-
parser.setToken(
|
|
4553
|
+
parser.setToken(138);
|
|
4537
4554
|
}
|
|
4538
4555
|
function rescanJSXIdentifier(parser) {
|
|
4539
4556
|
if ((parser.getToken() & 143360) === 143360) {
|
|
@@ -4936,7 +4953,7 @@
|
|
|
4936
4953
|
context |= 1;
|
|
4937
4954
|
skipHashBang(parser);
|
|
4938
4955
|
const scope = parser.createScopeIfLexical();
|
|
4939
|
-
let body
|
|
4956
|
+
let body;
|
|
4940
4957
|
let sourceType = 'script';
|
|
4941
4958
|
if (context & 2) {
|
|
4942
4959
|
sourceType = 'module';
|
|
@@ -4994,7 +5011,7 @@
|
|
|
4994
5011
|
return statements;
|
|
4995
5012
|
}
|
|
4996
5013
|
function parseModuleItem(parser, context, scope) {
|
|
4997
|
-
if (parser.getToken() ===
|
|
5014
|
+
if (parser.getToken() === 133) {
|
|
4998
5015
|
Object.assign(parser.leadingDecorators, {
|
|
4999
5016
|
start: parser.tokenStart,
|
|
5000
5017
|
decorators: parseDecorators(parser, context, undefined),
|
|
@@ -5021,13 +5038,21 @@
|
|
|
5021
5038
|
switch (parser.getToken()) {
|
|
5022
5039
|
case 86104:
|
|
5023
5040
|
return parseFunctionDeclaration(parser, context, scope, privateScope, origin, 1, 0, 0, start);
|
|
5024
|
-
case
|
|
5041
|
+
case 133:
|
|
5025
5042
|
case 86094:
|
|
5026
5043
|
return parseClassDeclaration(parser, context, scope, privateScope, 0);
|
|
5027
5044
|
case 86090:
|
|
5028
5045
|
return parseLexicalDeclaration(parser, context, scope, privateScope, 16, 0);
|
|
5029
5046
|
case 241737:
|
|
5030
5047
|
return parseLetIdentOrVarDeclarationStatement(parser, context, scope, privateScope, origin);
|
|
5048
|
+
case 209013:
|
|
5049
|
+
return parseUsingDeclarationOrExpressionStatement(parser, context, scope, privateScope, origin, labels);
|
|
5050
|
+
case 209006:
|
|
5051
|
+
if ((context & 2048 || (context & 2 && context & 8)) &&
|
|
5052
|
+
nextTokenIsUsingOnSameLine(parser)) {
|
|
5053
|
+
return parseAwaitUsingDeclarationOrExpressionStatement(parser, context, scope, privateScope, origin, labels);
|
|
5054
|
+
}
|
|
5055
|
+
return parseStatement(parser, context, scope, privateScope, origin, labels, 1);
|
|
5031
5056
|
case 20564:
|
|
5032
5057
|
parser.report(103, 'export');
|
|
5033
5058
|
case 86106:
|
|
@@ -5111,15 +5136,18 @@
|
|
|
5111
5136
|
default:
|
|
5112
5137
|
expr = parsePrimaryExpression(parser, context, privateScope, 2, 0, 1, 0, 1, parser.tokenStart);
|
|
5113
5138
|
}
|
|
5139
|
+
return finishExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl, expr, token, tokenValue, tokenStart);
|
|
5140
|
+
}
|
|
5141
|
+
function finishExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl, initialExpression, token, tokenValue, tokenStart) {
|
|
5114
5142
|
if (token & 143360 && parser.getToken() === 21) {
|
|
5115
|
-
return parseLabelledStatement(parser, context, scope, privateScope, origin, labels, tokenValue,
|
|
5143
|
+
return parseLabelledStatement(parser, context, scope, privateScope, origin, labels, tokenValue, initialExpression, token, allowFuncDecl, tokenStart);
|
|
5116
5144
|
}
|
|
5117
|
-
|
|
5118
|
-
|
|
5145
|
+
let expression = parseMemberOrUpdateExpression(parser, context, privateScope, initialExpression, 0, 0, tokenStart);
|
|
5146
|
+
expression = parseAssignmentExpression(parser, context, privateScope, 0, 0, tokenStart, expression);
|
|
5119
5147
|
if (parser.getToken() === 18) {
|
|
5120
|
-
|
|
5148
|
+
expression = parseSequenceExpression(parser, context, privateScope, 0, tokenStart, expression);
|
|
5121
5149
|
}
|
|
5122
|
-
return parseExpressionStatement(parser, context,
|
|
5150
|
+
return parseExpressionStatement(parser, context, expression, tokenStart);
|
|
5123
5151
|
}
|
|
5124
5152
|
function parseBlock(parser, context, scope, privateScope, labels, start = parser.tokenStart, type = 'BlockStatement') {
|
|
5125
5153
|
const body = [];
|
|
@@ -5308,9 +5336,14 @@
|
|
|
5308
5336
|
while (parser.getToken() !== 20556 &&
|
|
5309
5337
|
parser.getToken() !== 1074790415 &&
|
|
5310
5338
|
parser.getToken() !== 20561) {
|
|
5311
|
-
|
|
5339
|
+
const statement = parseStatementListItem(parser, context | 4, scope, privateScope, 2, {
|
|
5312
5340
|
$: labels,
|
|
5313
|
-
})
|
|
5341
|
+
});
|
|
5342
|
+
if (statement.type === 'VariableDeclaration' &&
|
|
5343
|
+
(statement.kind === 'using' || statement.kind === 'await using')) {
|
|
5344
|
+
parser.report(30, statement.kind);
|
|
5345
|
+
}
|
|
5346
|
+
consequent.push(statement);
|
|
5314
5347
|
}
|
|
5315
5348
|
cases.push(parser.finishNode({
|
|
5316
5349
|
type: 'SwitchCase',
|
|
@@ -5429,7 +5462,6 @@
|
|
|
5429
5462
|
}
|
|
5430
5463
|
function parseCatchBlock(parser, context, scope, privateScope, labels, start) {
|
|
5431
5464
|
let param = null;
|
|
5432
|
-
let additionalScope = scope;
|
|
5433
5465
|
if (consumeOpt(parser, context, 67174411)) {
|
|
5434
5466
|
scope = scope?.createChildScope(4);
|
|
5435
5467
|
param = parseBindingPattern(parser, context, scope, privateScope, (parser.getToken() & 2097152) === 2097152
|
|
@@ -5443,7 +5475,7 @@
|
|
|
5443
5475
|
}
|
|
5444
5476
|
consume(parser, context | 32, 16);
|
|
5445
5477
|
}
|
|
5446
|
-
additionalScope = scope?.createChildScope(32);
|
|
5478
|
+
const additionalScope = scope?.createChildScope(32);
|
|
5447
5479
|
const body = parseBlock(parser, context, additionalScope, privateScope, { $: labels });
|
|
5448
5480
|
return parser.finishNode({
|
|
5449
5481
|
type: 'CatchClause',
|
|
@@ -5481,7 +5513,8 @@
|
|
|
5481
5513
|
const { tokenValue, tokenStart } = parser;
|
|
5482
5514
|
const token = parser.getToken();
|
|
5483
5515
|
let expr = parseIdentifier(parser, context);
|
|
5484
|
-
if (parser.getToken() & (143360 | 2097152)
|
|
5516
|
+
if (parser.getToken() & (143360 | 2097152) &&
|
|
5517
|
+
(parser.getToken() & 20480) !== 20480) {
|
|
5485
5518
|
const declarations = parseVariableDeclarationList(parser, context, scope, privateScope, 8, 0);
|
|
5486
5519
|
matchOrInsertSemicolon(parser, context | 32);
|
|
5487
5520
|
return parser.finishNode({
|
|
@@ -5512,14 +5545,90 @@
|
|
|
5512
5545
|
}
|
|
5513
5546
|
return parseExpressionStatement(parser, context, expr, tokenStart);
|
|
5514
5547
|
}
|
|
5515
|
-
function
|
|
5548
|
+
function nextTokenIsUsingOnSameLine(parser) {
|
|
5549
|
+
const { index: parserIndex, source } = parser;
|
|
5550
|
+
let index = parserIndex;
|
|
5551
|
+
while (index < parser.end) {
|
|
5552
|
+
const char = source.charCodeAt(index);
|
|
5553
|
+
if (char === 0x0a || char === 0x0d || char === 0x2028 || char === 0x2029)
|
|
5554
|
+
return false;
|
|
5555
|
+
if (/\s/u.test(source[index])) {
|
|
5556
|
+
index++;
|
|
5557
|
+
continue;
|
|
5558
|
+
}
|
|
5559
|
+
if (char === 0x2f && source.charCodeAt(index + 1) === 0x2a) {
|
|
5560
|
+
index += 2;
|
|
5561
|
+
while (index < parser.end) {
|
|
5562
|
+
const commentChar = source.charCodeAt(index);
|
|
5563
|
+
if (commentChar === 0x0a || commentChar === 0x0d || commentChar === 0x2028 || commentChar === 0x2029) {
|
|
5564
|
+
return false;
|
|
5565
|
+
}
|
|
5566
|
+
if (commentChar === 0x2a && source.charCodeAt(index + 1) === 0x2f) {
|
|
5567
|
+
index += 2;
|
|
5568
|
+
break;
|
|
5569
|
+
}
|
|
5570
|
+
index++;
|
|
5571
|
+
}
|
|
5572
|
+
continue;
|
|
5573
|
+
}
|
|
5574
|
+
break;
|
|
5575
|
+
}
|
|
5576
|
+
if (source.slice(index, index + 5) !== 'using')
|
|
5577
|
+
return false;
|
|
5578
|
+
const following = source.codePointAt(index + 5);
|
|
5579
|
+
return following === undefined || (following !== 0x5c && !isIdentifierPart(following));
|
|
5580
|
+
}
|
|
5581
|
+
function isResourceBindingStart(token) {
|
|
5582
|
+
return (token & 143360) === 143360 && (token & 20480) !== 20480;
|
|
5583
|
+
}
|
|
5584
|
+
function parseUsingDeclarationOrExpressionStatement(parser, context, scope, privateScope, origin, labels) {
|
|
5585
|
+
const { tokenStart, tokenValue } = parser;
|
|
5586
|
+
const token = parser.getToken();
|
|
5587
|
+
const expression = parseIdentifier(parser, context);
|
|
5588
|
+
if ((parser.flags & 1) === 0 && isResourceBindingStart(parser.getToken())) {
|
|
5589
|
+
if (origin & 4 && context & 8 && (context & 2) === 0) {
|
|
5590
|
+
parser.report(30, KeywordDescTable[parser.getToken() & 255]);
|
|
5591
|
+
}
|
|
5592
|
+
return parseLexicalDeclaration(parser, context, scope, privateScope, 16, origin, 'using', tokenStart, 1);
|
|
5593
|
+
}
|
|
5594
|
+
parser.assignable = 1;
|
|
5595
|
+
return finishExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, 1, expression, token, tokenValue, tokenStart);
|
|
5596
|
+
}
|
|
5597
|
+
function parseAwaitUsingDeclarationOrExpressionStatement(parser, context, scope, privateScope, origin, labels) {
|
|
5516
5598
|
const start = parser.tokenStart;
|
|
5517
|
-
|
|
5518
|
-
|
|
5599
|
+
if (context & 524288)
|
|
5600
|
+
parser.report(177);
|
|
5601
|
+
nextToken(parser, context | 32);
|
|
5602
|
+
let argument;
|
|
5603
|
+
if ((parser.flags & 1) === 0 && parser.getToken() === 209013) {
|
|
5604
|
+
const usingStart = parser.tokenStart;
|
|
5605
|
+
const usingIdentifier = parseIdentifier(parser, context);
|
|
5606
|
+
if ((parser.flags & 1) === 0 && isResourceBindingStart(parser.getToken())) {
|
|
5607
|
+
return parseLexicalDeclaration(parser, context, scope, privateScope, 16, origin, 'await using', start, 1);
|
|
5608
|
+
}
|
|
5609
|
+
argument = parseMemberOrUpdateExpression(parser, context, privateScope, usingIdentifier, 0, 0, usingStart);
|
|
5610
|
+
}
|
|
5611
|
+
else {
|
|
5612
|
+
argument = parseLeftHandSideExpression(parser, context, privateScope, 0, 0, 1);
|
|
5613
|
+
}
|
|
5614
|
+
if (parser.getToken() === 8391735)
|
|
5615
|
+
parser.report(33);
|
|
5616
|
+
parser.assignable = 2;
|
|
5617
|
+
const expression = parser.finishNode({
|
|
5618
|
+
type: 'AwaitExpression',
|
|
5619
|
+
argument,
|
|
5620
|
+
}, start);
|
|
5621
|
+
return finishExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, 0, expression, 1048576, '', start);
|
|
5622
|
+
}
|
|
5623
|
+
function parseLexicalDeclaration(parser, context, scope, privateScope, kind, origin, declarationKind, declarationStart = parser.tokenStart, keywordConsumed = 0) {
|
|
5624
|
+
const start = declarationStart;
|
|
5625
|
+
if (!keywordConsumed)
|
|
5626
|
+
nextToken(parser, context);
|
|
5627
|
+
const declarations = parseVariableDeclarationList(parser, context, scope, privateScope, kind, origin, declarationKind);
|
|
5519
5628
|
matchOrInsertSemicolon(parser, context | 32);
|
|
5520
5629
|
return parser.finishNode({
|
|
5521
5630
|
type: 'VariableDeclaration',
|
|
5522
|
-
kind: kind & 8 ? 'let' : 'const',
|
|
5631
|
+
kind: declarationKind ?? (kind & 8 ? 'let' : 'const'),
|
|
5523
5632
|
declarations,
|
|
5524
5633
|
}, start);
|
|
5525
5634
|
}
|
|
@@ -5534,24 +5643,34 @@
|
|
|
5534
5643
|
declarations,
|
|
5535
5644
|
}, start);
|
|
5536
5645
|
}
|
|
5537
|
-
function parseVariableDeclarationList(parser, context, scope, privateScope, kind, origin) {
|
|
5646
|
+
function parseVariableDeclarationList(parser, context, scope, privateScope, kind, origin, declarationKind) {
|
|
5538
5647
|
let bindingCount = 1;
|
|
5539
|
-
const
|
|
5540
|
-
|
|
5541
|
-
];
|
|
5648
|
+
const firstDeclaration = parseVariableDeclaration(parser, context, scope, privateScope, kind, origin, declarationKind);
|
|
5649
|
+
const list = [firstDeclaration];
|
|
5650
|
+
const resourceNames = declarationKind && parser.options.lexical ? new Set([firstDeclaration.id.name]) : undefined;
|
|
5542
5651
|
while (consumeOpt(parser, context, 18)) {
|
|
5543
5652
|
bindingCount++;
|
|
5544
|
-
|
|
5653
|
+
const declaration = parseVariableDeclaration(parser, context, scope, privateScope, kind, origin, declarationKind);
|
|
5654
|
+
if (resourceNames) {
|
|
5655
|
+
const { name } = declaration.id;
|
|
5656
|
+
if (resourceNames.has(name))
|
|
5657
|
+
parser.report(145, name);
|
|
5658
|
+
resourceNames.add(name);
|
|
5659
|
+
}
|
|
5660
|
+
list.push(declaration);
|
|
5545
5661
|
}
|
|
5546
5662
|
if (bindingCount > 1 && origin & 32 && parser.getToken() & 262144) {
|
|
5547
5663
|
parser.report(61, KeywordDescTable[parser.getToken() & 255]);
|
|
5548
5664
|
}
|
|
5549
5665
|
return list;
|
|
5550
5666
|
}
|
|
5551
|
-
function parseVariableDeclaration(parser, context, scope, privateScope, kind, origin) {
|
|
5667
|
+
function parseVariableDeclaration(parser, context, scope, privateScope, kind, origin, declarationKind) {
|
|
5552
5668
|
const { tokenStart } = parser;
|
|
5553
5669
|
const token = parser.getToken();
|
|
5554
5670
|
let init = null;
|
|
5671
|
+
if (declarationKind && (token & 2097152) === 2097152) {
|
|
5672
|
+
parser.report(50);
|
|
5673
|
+
}
|
|
5555
5674
|
const id = parseBindingPattern(parser, context, scope, privateScope, kind, origin);
|
|
5556
5675
|
if (parser.getToken() === 1077936155) {
|
|
5557
5676
|
nextToken(parser, context | 32);
|
|
@@ -5566,7 +5685,7 @@
|
|
|
5566
5685
|
}
|
|
5567
5686
|
else if ((kind & 16 || (token & 2097152) > 0) &&
|
|
5568
5687
|
(parser.getToken() & 262144) !== 262144) {
|
|
5569
|
-
parser.report(59, kind & 16 ? 'const' : 'destructuring');
|
|
5688
|
+
parser.report(59, declarationKind ?? (kind & 16 ? 'const' : 'destructuring'));
|
|
5570
5689
|
}
|
|
5571
5690
|
return parser.finishNode({
|
|
5572
5691
|
type: 'VariableDeclarator',
|
|
@@ -5587,25 +5706,23 @@
|
|
|
5587
5706
|
let init = null;
|
|
5588
5707
|
let isVarDecl = parser.getToken() === 86088 ||
|
|
5589
5708
|
parser.getToken() === 241737 ||
|
|
5590
|
-
parser.getToken() === 86090
|
|
5709
|
+
parser.getToken() === 86090 ||
|
|
5710
|
+
parser.getToken() === 209013;
|
|
5711
|
+
let resourceDeclarationKind;
|
|
5712
|
+
let consumedForOfDelimiter = false;
|
|
5591
5713
|
let right;
|
|
5592
5714
|
const { tokenStart } = parser;
|
|
5593
5715
|
const token = parser.getToken();
|
|
5594
5716
|
if (isVarDecl) {
|
|
5595
5717
|
if (token === 241737) {
|
|
5596
5718
|
init = parseIdentifier(parser, context);
|
|
5597
|
-
if (parser.getToken() & (143360 | 2097152)
|
|
5598
|
-
|
|
5599
|
-
|
|
5600
|
-
|
|
5601
|
-
|
|
5602
|
-
|
|
5603
|
-
|
|
5604
|
-
type: 'VariableDeclaration',
|
|
5605
|
-
kind: 'let',
|
|
5606
|
-
declarations: parseVariableDeclarationList(parser, context | 131072, scope, privateScope, 8, 32),
|
|
5607
|
-
}, tokenStart);
|
|
5608
|
-
}
|
|
5719
|
+
if (parser.getToken() & (143360 | 2097152) &&
|
|
5720
|
+
(parser.getToken() & 20480) !== 20480) {
|
|
5721
|
+
init = parser.finishNode({
|
|
5722
|
+
type: 'VariableDeclaration',
|
|
5723
|
+
kind: 'let',
|
|
5724
|
+
declarations: parseVariableDeclarationList(parser, context | 131072, scope, privateScope, 8, 32),
|
|
5725
|
+
}, tokenStart);
|
|
5609
5726
|
parser.assignable = 1;
|
|
5610
5727
|
}
|
|
5611
5728
|
else if (context & 1) {
|
|
@@ -5619,6 +5736,81 @@
|
|
|
5619
5736
|
parser.report(115);
|
|
5620
5737
|
}
|
|
5621
5738
|
}
|
|
5739
|
+
else if (token === 209013) {
|
|
5740
|
+
const usingIdentifier = parseIdentifier(parser, context);
|
|
5741
|
+
if ((parser.flags & 1) !== 0 || !isResourceBindingStart(parser.getToken())) {
|
|
5742
|
+
isVarDecl = false;
|
|
5743
|
+
parser.assignable = 1;
|
|
5744
|
+
init = parseMemberOrUpdateExpression(parser, context, privateScope, usingIdentifier, 0, 0, tokenStart);
|
|
5745
|
+
}
|
|
5746
|
+
else if (parser.getToken() === 471156) {
|
|
5747
|
+
const ofStart = parser.tokenStart;
|
|
5748
|
+
const ofToken = parser.getToken();
|
|
5749
|
+
const ofValue = parser.tokenValue;
|
|
5750
|
+
const ofIdentifier = parseIdentifier(parser, context);
|
|
5751
|
+
if (parser.getToken() !== 1077936155 &&
|
|
5752
|
+
parser.getToken() !== 8673330 &&
|
|
5753
|
+
parser.getToken() !== 1074790417 &&
|
|
5754
|
+
parser.getToken() !== 18) {
|
|
5755
|
+
isVarDecl = false;
|
|
5756
|
+
consumedForOfDelimiter = true;
|
|
5757
|
+
parser.assignable = 1;
|
|
5758
|
+
init = usingIdentifier;
|
|
5759
|
+
}
|
|
5760
|
+
else {
|
|
5761
|
+
resourceDeclarationKind = 'using';
|
|
5762
|
+
validateBindingIdentifier(parser, context, 16, ofToken, 0);
|
|
5763
|
+
scope?.addBlockName(context, ofValue, 16, 32);
|
|
5764
|
+
let declarationInitializer = null;
|
|
5765
|
+
if (parser.getToken() === 1077936155) {
|
|
5766
|
+
nextToken(parser, context | 32);
|
|
5767
|
+
declarationInitializer = parseExpression(parser, context | 131072, privateScope, 1, 0, parser.tokenStart);
|
|
5768
|
+
if ((parser.getToken() & 262144) === 262144) {
|
|
5769
|
+
throw new ParseError(ofStart, parser.currentLocation, 60, parser.getToken() === 471156 ? 'of' : 'in');
|
|
5770
|
+
}
|
|
5771
|
+
}
|
|
5772
|
+
else if (parser.getToken() !== 8673330) {
|
|
5773
|
+
parser.report(59, resourceDeclarationKind);
|
|
5774
|
+
}
|
|
5775
|
+
const declarations = [
|
|
5776
|
+
parser.finishNode({
|
|
5777
|
+
type: 'VariableDeclarator',
|
|
5778
|
+
id: ofIdentifier,
|
|
5779
|
+
init: declarationInitializer,
|
|
5780
|
+
}, ofStart),
|
|
5781
|
+
];
|
|
5782
|
+
const resourceNames = parser.options.lexical ? new Set([ofValue]) : undefined;
|
|
5783
|
+
while (consumeOpt(parser, context | 131072, 18)) {
|
|
5784
|
+
const declaration = parseVariableDeclaration(parser, context | 131072, scope, privateScope, 16, 32, resourceDeclarationKind);
|
|
5785
|
+
if (resourceNames) {
|
|
5786
|
+
const { name } = declaration.id;
|
|
5787
|
+
if (resourceNames.has(name))
|
|
5788
|
+
parser.report(145, name);
|
|
5789
|
+
resourceNames.add(name);
|
|
5790
|
+
}
|
|
5791
|
+
declarations.push(declaration);
|
|
5792
|
+
}
|
|
5793
|
+
if (declarations.length > 1 && parser.getToken() & 262144) {
|
|
5794
|
+
parser.report(61, KeywordDescTable[parser.getToken() & 255]);
|
|
5795
|
+
}
|
|
5796
|
+
init = parser.finishNode({
|
|
5797
|
+
type: 'VariableDeclaration',
|
|
5798
|
+
kind: resourceDeclarationKind,
|
|
5799
|
+
declarations,
|
|
5800
|
+
}, tokenStart);
|
|
5801
|
+
parser.assignable = 1;
|
|
5802
|
+
}
|
|
5803
|
+
}
|
|
5804
|
+
else {
|
|
5805
|
+
resourceDeclarationKind = 'using';
|
|
5806
|
+
init = parser.finishNode({
|
|
5807
|
+
type: 'VariableDeclaration',
|
|
5808
|
+
kind: resourceDeclarationKind,
|
|
5809
|
+
declarations: parseVariableDeclarationList(parser, context | 131072, scope, privateScope, 16, 32, resourceDeclarationKind),
|
|
5810
|
+
}, tokenStart);
|
|
5811
|
+
parser.assignable = 1;
|
|
5812
|
+
}
|
|
5813
|
+
}
|
|
5622
5814
|
else {
|
|
5623
5815
|
nextToken(parser, context);
|
|
5624
5816
|
init = parser.finishNode(token === 86088
|
|
@@ -5635,6 +5827,42 @@
|
|
|
5635
5827
|
parser.assignable = 1;
|
|
5636
5828
|
}
|
|
5637
5829
|
}
|
|
5830
|
+
else if (token === 209006 &&
|
|
5831
|
+
(context & 2048 || (context & 2 && context & 8))) {
|
|
5832
|
+
if (context & 524288)
|
|
5833
|
+
parser.report(177);
|
|
5834
|
+
nextToken(parser, context | 32);
|
|
5835
|
+
let awaitArgument;
|
|
5836
|
+
if ((parser.flags & 1) === 0 && parser.getToken() === 209013) {
|
|
5837
|
+
const usingStart = parser.tokenStart;
|
|
5838
|
+
const usingIdentifier = parseIdentifier(parser, context);
|
|
5839
|
+
if ((parser.flags & 1) === 0 && isResourceBindingStart(parser.getToken())) {
|
|
5840
|
+
resourceDeclarationKind = 'await using';
|
|
5841
|
+
isVarDecl = true;
|
|
5842
|
+
init = parser.finishNode({
|
|
5843
|
+
type: 'VariableDeclaration',
|
|
5844
|
+
kind: resourceDeclarationKind,
|
|
5845
|
+
declarations: parseVariableDeclarationList(parser, context | 131072, scope, privateScope, 16, 32, resourceDeclarationKind),
|
|
5846
|
+
}, tokenStart);
|
|
5847
|
+
parser.assignable = 1;
|
|
5848
|
+
}
|
|
5849
|
+
else {
|
|
5850
|
+
awaitArgument = parseMemberOrUpdateExpression(parser, context, privateScope, usingIdentifier, 0, 0, usingStart);
|
|
5851
|
+
}
|
|
5852
|
+
}
|
|
5853
|
+
else {
|
|
5854
|
+
awaitArgument = parseLeftHandSideExpression(parser, context, privateScope, 0, 0, 1);
|
|
5855
|
+
}
|
|
5856
|
+
if (!isVarDecl) {
|
|
5857
|
+
if (parser.getToken() === 8391735)
|
|
5858
|
+
parser.report(33);
|
|
5859
|
+
parser.assignable = 2;
|
|
5860
|
+
init = parser.finishNode({
|
|
5861
|
+
type: 'AwaitExpression',
|
|
5862
|
+
argument: awaitArgument,
|
|
5863
|
+
}, tokenStart);
|
|
5864
|
+
}
|
|
5865
|
+
}
|
|
5638
5866
|
else if (token === 1074790417) {
|
|
5639
5867
|
if (forAwait)
|
|
5640
5868
|
parser.report(82);
|
|
@@ -5656,12 +5884,13 @@
|
|
|
5656
5884
|
else {
|
|
5657
5885
|
init = parseLeftHandSideExpression(parser, context | 131072, privateScope, 1, 0, 1);
|
|
5658
5886
|
}
|
|
5659
|
-
if ((parser.getToken() & 262144) === 262144) {
|
|
5660
|
-
if (parser.getToken() === 471156) {
|
|
5887
|
+
if (consumedForOfDelimiter || (parser.getToken() & 262144) === 262144) {
|
|
5888
|
+
if (consumedForOfDelimiter || parser.getToken() === 471156) {
|
|
5661
5889
|
if (parser.assignable & 2)
|
|
5662
5890
|
parser.report(80, forAwait ? 'await' : 'of');
|
|
5663
5891
|
reinterpretToPattern(parser, init);
|
|
5664
|
-
|
|
5892
|
+
if (!consumedForOfDelimiter)
|
|
5893
|
+
nextToken(parser, context | 32);
|
|
5665
5894
|
right = parseExpression(parser, context, privateScope, 1, 0, parser.tokenStart);
|
|
5666
5895
|
consume(parser, context | 32, 16);
|
|
5667
5896
|
const body = parseIterationStatementBody(parser, context, scope, privateScope, labels);
|
|
@@ -5673,6 +5902,8 @@
|
|
|
5673
5902
|
await: forAwait,
|
|
5674
5903
|
}, start);
|
|
5675
5904
|
}
|
|
5905
|
+
if (resourceDeclarationKind)
|
|
5906
|
+
parser.report(30, 'in');
|
|
5676
5907
|
if (parser.assignable & 2)
|
|
5677
5908
|
parser.report(80, 'in');
|
|
5678
5909
|
reinterpretToPattern(parser, init);
|
|
@@ -5726,7 +5957,7 @@
|
|
|
5726
5957
|
function parseImportDeclaration(parser, context, scope) {
|
|
5727
5958
|
const start = parser.tokenStart;
|
|
5728
5959
|
nextToken(parser, context);
|
|
5729
|
-
let source
|
|
5960
|
+
let source;
|
|
5730
5961
|
const { tokenStart } = parser;
|
|
5731
5962
|
let specifiers = [];
|
|
5732
5963
|
if (parser.getToken() === 134283267) {
|
|
@@ -5870,7 +6101,7 @@
|
|
|
5870
6101
|
declaration = parseFunctionDeclaration(parser, context, scope, undefined, 4, 1, 1, 0, parser.tokenStart);
|
|
5871
6102
|
break;
|
|
5872
6103
|
}
|
|
5873
|
-
case
|
|
6104
|
+
case 133:
|
|
5874
6105
|
case 86094:
|
|
5875
6106
|
declaration = parseClassDeclaration(parser, context, scope, undefined, 1);
|
|
5876
6107
|
break;
|
|
@@ -5993,7 +6224,7 @@
|
|
|
5993
6224
|
matchOrInsertSemicolon(parser, context | 32);
|
|
5994
6225
|
break;
|
|
5995
6226
|
}
|
|
5996
|
-
case
|
|
6227
|
+
case 133:
|
|
5997
6228
|
case 86094:
|
|
5998
6229
|
declaration = parseClassDeclaration(parser, context, scope, undefined, 2);
|
|
5999
6230
|
break;
|
|
@@ -6331,7 +6562,7 @@
|
|
|
6331
6562
|
const { tokenStart } = parser;
|
|
6332
6563
|
nextToken(parser, context);
|
|
6333
6564
|
switch (parser.getToken()) {
|
|
6334
|
-
case
|
|
6565
|
+
case 67108991:
|
|
6335
6566
|
parser.report(167);
|
|
6336
6567
|
case 67174411: {
|
|
6337
6568
|
if ((context & 512) === 0)
|
|
@@ -6378,10 +6609,13 @@
|
|
|
6378
6609
|
switch (parser.getToken()) {
|
|
6379
6610
|
case 67108877: {
|
|
6380
6611
|
nextToken(parser, (context | 262144 | 8) ^ 8);
|
|
6381
|
-
if (context & 16 && parser.getToken() ===
|
|
6612
|
+
if (context & 16 && parser.getToken() === 131 && parser.tokenValue === 'super') {
|
|
6382
6613
|
parser.report(173);
|
|
6383
6614
|
}
|
|
6384
|
-
parser.assignable =
|
|
6615
|
+
parser.assignable =
|
|
6616
|
+
(parser.flags & 2048) === 2048
|
|
6617
|
+
? 2
|
|
6618
|
+
: 1;
|
|
6385
6619
|
const property = parsePropertyOrPrivatePropertyName(parser, context | 64, privateScope);
|
|
6386
6620
|
expr = parser.finishNode({
|
|
6387
6621
|
type: 'MemberExpression',
|
|
@@ -6406,7 +6640,7 @@
|
|
|
6406
6640
|
const { tokenStart } = parser;
|
|
6407
6641
|
const property = parseExpressions(parser, context, privateScope, inGroup, 1, tokenStart);
|
|
6408
6642
|
consume(parser, context, 20);
|
|
6409
|
-
parser.assignable = 1;
|
|
6643
|
+
parser.assignable = restoreHasOptionalChaining ? 2 : 1;
|
|
6410
6644
|
expr = parser.finishNode({
|
|
6411
6645
|
type: 'MemberExpression',
|
|
6412
6646
|
object: expr,
|
|
@@ -6447,7 +6681,7 @@
|
|
|
6447
6681
|
}
|
|
6448
6682
|
break;
|
|
6449
6683
|
}
|
|
6450
|
-
case
|
|
6684
|
+
case 67108991: {
|
|
6451
6685
|
nextToken(parser, (context | 262144 | 8) ^ 8);
|
|
6452
6686
|
parser.flags |= 2048;
|
|
6453
6687
|
parser.assignable = 2;
|
|
@@ -6534,12 +6768,12 @@
|
|
|
6534
6768
|
}
|
|
6535
6769
|
function parsePropertyOrPrivatePropertyName(parser, context, privateScope) {
|
|
6536
6770
|
if ((parser.getToken() & 143360) === 0 &&
|
|
6537
|
-
parser.getToken() !== -2147483528 &&
|
|
6538
6771
|
parser.getToken() !== -2147483527 &&
|
|
6539
|
-
parser.getToken() !==
|
|
6772
|
+
parser.getToken() !== -2147483526 &&
|
|
6773
|
+
parser.getToken() !== 131) {
|
|
6540
6774
|
parser.report(160);
|
|
6541
6775
|
}
|
|
6542
|
-
return parser.getToken() ===
|
|
6776
|
+
return parser.getToken() === 131
|
|
6543
6777
|
? parsePrivateIdentifier(parser, context, privateScope, 0)
|
|
6544
6778
|
: parseIdentifier(parser, context);
|
|
6545
6779
|
}
|
|
@@ -6632,7 +6866,7 @@
|
|
|
6632
6866
|
return parseThisExpression(parser, context);
|
|
6633
6867
|
case 65540:
|
|
6634
6868
|
return parseRegExpLiteral(parser, context);
|
|
6635
|
-
case
|
|
6869
|
+
case 133:
|
|
6636
6870
|
case 86094:
|
|
6637
6871
|
return parseClassExpression(parser, context, privateScope, inGroup, start);
|
|
6638
6872
|
case 86109:
|
|
@@ -6643,9 +6877,9 @@
|
|
|
6643
6877
|
return parseTemplate(parser, context, privateScope);
|
|
6644
6878
|
case 86107:
|
|
6645
6879
|
return parseNewExpression(parser, context, privateScope, inGroup);
|
|
6646
|
-
case
|
|
6880
|
+
case 134283389:
|
|
6647
6881
|
return parseBigIntLiteral(parser, context);
|
|
6648
|
-
case
|
|
6882
|
+
case 131:
|
|
6649
6883
|
return parsePrivateIdentifier(parser, context, privateScope, 0);
|
|
6650
6884
|
case 86106:
|
|
6651
6885
|
return parseImportCallOrMetaExpression(parser, context, privateScope, inNew, inGroup, start);
|
|
@@ -6674,7 +6908,7 @@
|
|
|
6674
6908
|
parser.report(169);
|
|
6675
6909
|
nextToken(parser, context);
|
|
6676
6910
|
const token = parser.getToken();
|
|
6677
|
-
if (token !==
|
|
6911
|
+
if (token !== 209031 && parser.tokenValue !== 'meta') {
|
|
6678
6912
|
parser.report(174);
|
|
6679
6913
|
}
|
|
6680
6914
|
else if (token & -2147483648) {
|
|
@@ -6722,7 +6956,7 @@
|
|
|
6722
6956
|
const value = parseStringLiteral(parser, context);
|
|
6723
6957
|
const keyContent = key.type === 'Literal' ? key.value : key.name;
|
|
6724
6958
|
if (keysContent.has(keyContent)) {
|
|
6725
|
-
parser.report(145,
|
|
6959
|
+
parser.report(145, keyContent);
|
|
6726
6960
|
}
|
|
6727
6961
|
keysContent.add(keyContent);
|
|
6728
6962
|
attributes.push(parser.finishNode({
|
|
@@ -6819,6 +7053,7 @@
|
|
|
6819
7053
|
consume(parser, context, 67174409);
|
|
6820
7054
|
quasis.push(parseTemplateElement(parser, tokenValue, tokenRaw, tokenStart, true));
|
|
6821
7055
|
}
|
|
7056
|
+
parser.assignable = 2;
|
|
6822
7057
|
return parser.finishNode({
|
|
6823
7058
|
type: 'TemplateLiteral',
|
|
6824
7059
|
expressions,
|
|
@@ -6897,7 +7132,7 @@
|
|
|
6897
7132
|
}
|
|
6898
7133
|
function parseLiteral(parser, context) {
|
|
6899
7134
|
const { tokenValue, tokenRaw, tokenStart } = parser;
|
|
6900
|
-
if (parser.getToken() ===
|
|
7135
|
+
if (parser.getToken() === 134283389) {
|
|
6901
7136
|
return parseBigIntLiteral(parser, context);
|
|
6902
7137
|
}
|
|
6903
7138
|
const node = {
|
|
@@ -7414,9 +7649,9 @@
|
|
|
7414
7649
|
let key = null;
|
|
7415
7650
|
let value;
|
|
7416
7651
|
if (parser.getToken() & 143360 ||
|
|
7417
|
-
parser.getToken() === -
|
|
7418
|
-
parser.getToken() === -
|
|
7419
|
-
if (parser.getToken() === -
|
|
7652
|
+
parser.getToken() === -2147483527 ||
|
|
7653
|
+
parser.getToken() === -2147483526) {
|
|
7654
|
+
if (parser.getToken() === -2147483526)
|
|
7420
7655
|
destructible |= 16;
|
|
7421
7656
|
key = parseIdentifier(parser, context);
|
|
7422
7657
|
if (parser.getToken() === 18 ||
|
|
@@ -7448,7 +7683,7 @@
|
|
|
7448
7683
|
else {
|
|
7449
7684
|
destructible |=
|
|
7450
7685
|
(token === 209006 ? 128 : 0) |
|
|
7451
|
-
(token === -
|
|
7686
|
+
(token === -2147483527 ? 16 : 0);
|
|
7452
7687
|
value = parser.cloneIdentifier(key);
|
|
7453
7688
|
}
|
|
7454
7689
|
}
|
|
@@ -7575,7 +7810,7 @@
|
|
|
7575
7810
|
}
|
|
7576
7811
|
else if (parser.getToken() & 143360) {
|
|
7577
7812
|
destructible |= 16;
|
|
7578
|
-
if (token === -
|
|
7813
|
+
if (token === -2147483527)
|
|
7579
7814
|
parser.report(95);
|
|
7580
7815
|
if (token === 209005) {
|
|
7581
7816
|
if (parser.flags & 1)
|
|
@@ -8386,7 +8621,7 @@
|
|
|
8386
8621
|
const id = parseIdentifier(parser, context | 32);
|
|
8387
8622
|
const { tokenStart } = parser;
|
|
8388
8623
|
if (consumeOpt(parser, context, 67108877)) {
|
|
8389
|
-
if (context & 65536 && parser.getToken() ===
|
|
8624
|
+
if (context & 65536 && parser.getToken() === 209030) {
|
|
8390
8625
|
parser.assignable = 2;
|
|
8391
8626
|
return parseMetaProperty(parser, context, id, start);
|
|
8392
8627
|
}
|
|
@@ -8398,7 +8633,7 @@
|
|
|
8398
8633
|
}
|
|
8399
8634
|
const expr = parsePrimaryExpression(parser, context, privateScope, 2, 1, 0, inGroup, 1, tokenStart);
|
|
8400
8635
|
context = (context | 131072) ^ 131072;
|
|
8401
|
-
if (parser.getToken() ===
|
|
8636
|
+
if (parser.getToken() === 67108991)
|
|
8402
8637
|
parser.report(168);
|
|
8403
8638
|
const callee = parseMemberExpressionNoCall(parser, context, privateScope, expr, inGroup, tokenStart);
|
|
8404
8639
|
parser.assignable = 2;
|
|
@@ -8452,7 +8687,7 @@
|
|
|
8452
8687
|
}, start);
|
|
8453
8688
|
}
|
|
8454
8689
|
let destructible = 0;
|
|
8455
|
-
let expr
|
|
8690
|
+
let expr;
|
|
8456
8691
|
let isNonSimpleParameterList = 0;
|
|
8457
8692
|
parser.destructible =
|
|
8458
8693
|
(parser.destructible | 256 | 128) ^
|
|
@@ -8599,7 +8834,7 @@
|
|
|
8599
8834
|
let start;
|
|
8600
8835
|
let decorators;
|
|
8601
8836
|
if (parser.leadingDecorators.decorators.length) {
|
|
8602
|
-
if (parser.getToken() ===
|
|
8837
|
+
if (parser.getToken() === 133) {
|
|
8603
8838
|
parser.report(30, '@');
|
|
8604
8839
|
}
|
|
8605
8840
|
start = parser.leadingDecorators.start;
|
|
@@ -8688,7 +8923,7 @@
|
|
|
8688
8923
|
function parseDecorators(parser, context, privateScope) {
|
|
8689
8924
|
const list = [];
|
|
8690
8925
|
if (parser.options.next) {
|
|
8691
|
-
while (parser.getToken() ===
|
|
8926
|
+
while (parser.getToken() === 133) {
|
|
8692
8927
|
list.push(parseDecoratorList(parser, context, privateScope));
|
|
8693
8928
|
}
|
|
8694
8929
|
}
|
|
@@ -8741,7 +8976,7 @@
|
|
|
8741
8976
|
let kind = isStatic ? 32 : 0;
|
|
8742
8977
|
let key = null;
|
|
8743
8978
|
const token = parser.getToken();
|
|
8744
|
-
if (token & (143360 | 36864) || token === -
|
|
8979
|
+
if (token & (143360 | 36864) || token === -2147483527) {
|
|
8745
8980
|
key = parseIdentifier(parser, context);
|
|
8746
8981
|
switch (token) {
|
|
8747
8982
|
case 36970:
|
|
@@ -8762,6 +8997,9 @@
|
|
|
8762
8997
|
break;
|
|
8763
8998
|
case 209008:
|
|
8764
8999
|
if (parser.getToken() !== 67174411) {
|
|
9000
|
+
if (parser.getToken() === 8391476 && parser.flags & 1) {
|
|
9001
|
+
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
|
|
9002
|
+
}
|
|
8765
9003
|
if ((parser.getToken() & 1073741824) === 1073741824) {
|
|
8766
9004
|
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
|
|
8767
9005
|
}
|
|
@@ -8770,6 +9008,9 @@
|
|
|
8770
9008
|
break;
|
|
8771
9009
|
case 209009:
|
|
8772
9010
|
if (parser.getToken() !== 67174411) {
|
|
9011
|
+
if (parser.getToken() === 8391476 && parser.flags & 1) {
|
|
9012
|
+
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
|
|
9013
|
+
}
|
|
8773
9014
|
if ((parser.getToken() & 1073741824) === 1073741824) {
|
|
8774
9015
|
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
|
|
8775
9016
|
}
|
|
@@ -8798,7 +9039,7 @@
|
|
|
8798
9039
|
kind |= 8;
|
|
8799
9040
|
nextToken(parser, context);
|
|
8800
9041
|
}
|
|
8801
|
-
else if (parser.getToken() ===
|
|
9042
|
+
else if (parser.getToken() === 131) {
|
|
8802
9043
|
kind |= 8192;
|
|
8803
9044
|
key = parsePrivateIdentifier(parser, context | 16, privateScope, 768);
|
|
8804
9045
|
}
|
|
@@ -8808,7 +9049,7 @@
|
|
|
8808
9049
|
else if (isStatic && token === 2162700) {
|
|
8809
9050
|
return parseStaticBlock(parser, context | 16, scope, privateScope, start);
|
|
8810
9051
|
}
|
|
8811
|
-
else if (token === -
|
|
9052
|
+
else if (token === -2147483526) {
|
|
8812
9053
|
key = parseIdentifier(parser, context);
|
|
8813
9054
|
if (parser.getToken() !== 67174411)
|
|
8814
9055
|
parser.report(30, KeywordDescTable[parser.getToken() & 255]);
|
|
@@ -8818,8 +9059,8 @@
|
|
|
8818
9059
|
}
|
|
8819
9060
|
if (kind & (8 | 16 | 768 | 1024)) {
|
|
8820
9061
|
if (parser.getToken() & 143360 ||
|
|
8821
|
-
parser.getToken() === -
|
|
8822
|
-
parser.getToken() === -
|
|
9062
|
+
parser.getToken() === -2147483527 ||
|
|
9063
|
+
parser.getToken() === -2147483526) {
|
|
8823
9064
|
key = parseIdentifier(parser, context);
|
|
8824
9065
|
}
|
|
8825
9066
|
else if ((parser.getToken() & 134217728) === 134217728) {
|
|
@@ -8829,7 +9070,7 @@
|
|
|
8829
9070
|
kind |= 2;
|
|
8830
9071
|
key = parseComputedPropertyName(parser, context, privateScope, 0);
|
|
8831
9072
|
}
|
|
8832
|
-
else if (parser.getToken() ===
|
|
9073
|
+
else if (parser.getToken() === 131) {
|
|
8833
9074
|
kind |= 8192;
|
|
8834
9075
|
key = parsePrivateIdentifier(parser, context, privateScope, kind);
|
|
8835
9076
|
}
|
|
@@ -8909,7 +9150,7 @@
|
|
|
8909
9150
|
if (parser.getToken() === 1077936155) {
|
|
8910
9151
|
nextToken(parser, context | 32);
|
|
8911
9152
|
const { tokenStart } = parser;
|
|
8912
|
-
if (parser.getToken() ===
|
|
9153
|
+
if (parser.getToken() === 537079928)
|
|
8913
9154
|
parser.report(119);
|
|
8914
9155
|
const modifierFlags = 1024 |
|
|
8915
9156
|
2048 |
|
|
@@ -8941,7 +9182,7 @@
|
|
|
8941
9182
|
}
|
|
8942
9183
|
function parseBindingPattern(parser, context, scope, privateScope, type, origin) {
|
|
8943
9184
|
if (parser.getToken() & 143360 ||
|
|
8944
|
-
((context & 1) === 0 && parser.getToken() === -
|
|
9185
|
+
((context & 1) === 0 && parser.getToken() === -2147483526))
|
|
8945
9186
|
return parseAndClassifyIdentifier(parser, context, scope, type, origin);
|
|
8946
9187
|
if ((parser.getToken() & 2097152) !== 2097152)
|
|
8947
9188
|
parser.report(30, KeywordDescTable[parser.getToken() & 255]);
|
|
@@ -8960,7 +9201,7 @@
|
|
|
8960
9201
|
if ((token & 537079808) === 537079808) {
|
|
8961
9202
|
parser.report(119);
|
|
8962
9203
|
}
|
|
8963
|
-
else if ((token & 36864) === 36864 || token === -
|
|
9204
|
+
else if ((token & 36864) === 36864 || token === -2147483526) {
|
|
8964
9205
|
parser.report(118);
|
|
8965
9206
|
}
|
|
8966
9207
|
}
|
|
@@ -9081,7 +9322,7 @@
|
|
|
9081
9322
|
}
|
|
9082
9323
|
}
|
|
9083
9324
|
function parseJSXChildOrClosingElement(parser, context, privateScope, inJSXChild) {
|
|
9084
|
-
if (parser.getToken() ===
|
|
9325
|
+
if (parser.getToken() === 138)
|
|
9085
9326
|
return parseJSXText(parser, context);
|
|
9086
9327
|
if (parser.getToken() === 2162700)
|
|
9087
9328
|
return parseJSXExpressionContainer(parser, context, privateScope, 1, 0);
|
|
@@ -9095,7 +9336,7 @@
|
|
|
9095
9336
|
parser.report(0);
|
|
9096
9337
|
}
|
|
9097
9338
|
function parseJSXChildOrClosingFragment(parser, context, privateScope, inJSXChild) {
|
|
9098
|
-
if (parser.getToken() ===
|
|
9339
|
+
if (parser.getToken() === 138)
|
|
9099
9340
|
return parseJSXText(parser, context);
|
|
9100
9341
|
if (parser.getToken() === 2162700)
|
|
9101
9342
|
return parseJSXExpressionContainer(parser, context, privateScope, 1, 0);
|
|
@@ -9232,7 +9473,7 @@
|
|
|
9232
9473
|
const { tokenStart } = parser;
|
|
9233
9474
|
if (parser.getToken() === 14)
|
|
9234
9475
|
return parseJSXSpreadChild(parser, context, privateScope, start);
|
|
9235
|
-
let expression
|
|
9476
|
+
let expression;
|
|
9236
9477
|
if (parser.getToken() === 1074790415) {
|
|
9237
9478
|
if (isAttr)
|
|
9238
9479
|
parser.report(157);
|
|
@@ -9286,7 +9527,7 @@
|
|
|
9286
9527
|
}, start);
|
|
9287
9528
|
}
|
|
9288
9529
|
|
|
9289
|
-
const version =
|
|
9530
|
+
const { version } = packageJson;
|
|
9290
9531
|
function parseScript(source, options) {
|
|
9291
9532
|
return parseSource(source, { ...options, sourceType: 'script' });
|
|
9292
9533
|
}
|