meriyah 6.1.0 → 6.1.2
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 +27 -0
- package/README.md +2 -2
- package/dist/meriyah.cjs +1022 -978
- package/dist/meriyah.min.mjs +1 -1
- package/dist/meriyah.mjs +1022 -978
- package/dist/meriyah.umd.js +1022 -978
- package/dist/meriyah.umd.min.js +1 -1
- package/dist/types/common.d.ts +32 -65
- package/dist/types/errors.d.ts +6 -5
- package/dist/types/estree.d.ts +5 -7
- package/dist/types/lexer/comments.d.ts +8 -6
- package/dist/types/lexer/common.d.ts +5 -5
- package/dist/types/lexer/identifier.d.ts +8 -7
- package/dist/types/lexer/jsx.d.ts +6 -5
- package/dist/types/lexer/numeric.d.ts +4 -3
- package/dist/types/lexer/regexp.d.ts +3 -2
- package/dist/types/lexer/scan.d.ts +4 -3
- package/dist/types/lexer/string.d.ts +5 -4
- package/dist/types/lexer/template.d.ts +4 -3
- package/dist/types/parser/parser.d.ts +51 -0
- package/dist/types/parser.d.ts +99 -99
- package/package.json +9 -9
package/dist/meriyah.cjs
CHANGED
|
@@ -180,31 +180,36 @@ const errorMessages = {
|
|
|
180
180
|
[177]: 'cannot use "await" in static blocks',
|
|
181
181
|
};
|
|
182
182
|
class ParseError extends SyntaxError {
|
|
183
|
-
|
|
183
|
+
start;
|
|
184
|
+
end;
|
|
185
|
+
range;
|
|
186
|
+
loc;
|
|
187
|
+
description;
|
|
188
|
+
constructor(start, end, type, ...params) {
|
|
184
189
|
const description = errorMessages[type].replace(/%(\d+)/g, (_, i) => params[i]);
|
|
185
|
-
const message = '[' +
|
|
190
|
+
const message = '[' + start.line + ':' + start.column + '-' + end.line + ':' + end.column + ']: ' + description;
|
|
186
191
|
super(message);
|
|
187
|
-
this.start = start;
|
|
188
|
-
this.end = end;
|
|
189
|
-
this.range = [start, end];
|
|
192
|
+
this.start = start.index;
|
|
193
|
+
this.end = end.index;
|
|
194
|
+
this.range = [start.index, end.index];
|
|
190
195
|
this.loc = {
|
|
191
|
-
start: { line:
|
|
192
|
-
end: { line:
|
|
196
|
+
start: { line: start.line, column: start.column },
|
|
197
|
+
end: { line: end.line, column: end.column },
|
|
193
198
|
};
|
|
194
199
|
this.description = description;
|
|
195
200
|
}
|
|
196
201
|
}
|
|
197
202
|
function report(parser, type, ...params) {
|
|
198
|
-
throw new ParseError(parser.
|
|
203
|
+
throw new ParseError(parser.tokenStart, parser.currentLocation, type, ...params);
|
|
199
204
|
}
|
|
200
205
|
function reportScopeError(scope) {
|
|
201
|
-
throw new ParseError(scope.
|
|
206
|
+
throw new ParseError(scope.start, scope.end, scope.type, ...scope.params);
|
|
202
207
|
}
|
|
203
|
-
function reportMessageAt(
|
|
204
|
-
throw new ParseError(
|
|
208
|
+
function reportMessageAt(start, end, type, ...params) {
|
|
209
|
+
throw new ParseError(start, end, type, ...params);
|
|
205
210
|
}
|
|
206
|
-
function reportScannerError(
|
|
207
|
-
throw new ParseError(
|
|
211
|
+
function reportScannerError(start, end, type) {
|
|
212
|
+
throw new ParseError(start, end, type);
|
|
208
213
|
}
|
|
209
214
|
|
|
210
215
|
const unicodeLookup = ((compressed, lookup) => {
|
|
@@ -702,7 +707,13 @@ function isIdentifierPart(code) {
|
|
|
702
707
|
: isIDContinue(code) || (code === 8204 || code === 8205);
|
|
703
708
|
}
|
|
704
709
|
|
|
705
|
-
const CommentTypes = [
|
|
710
|
+
const CommentTypes = [
|
|
711
|
+
'SingleLine',
|
|
712
|
+
'MultiLine',
|
|
713
|
+
'HTMLOpen',
|
|
714
|
+
'HTMLClose',
|
|
715
|
+
'HashbangComment',
|
|
716
|
+
];
|
|
706
717
|
function skipHashBang(parser) {
|
|
707
718
|
const { source } = parser;
|
|
708
719
|
if (parser.currentChar === 35 && source.charCodeAt(parser.index + 1) === 33) {
|
|
@@ -738,7 +749,7 @@ function skipSingleLineComment(parser, source, state, type, start, line, column)
|
|
|
738
749
|
parser.tokenLine = parser.line;
|
|
739
750
|
parser.tokenColumn = parser.column;
|
|
740
751
|
}
|
|
741
|
-
if (parser.onComment) {
|
|
752
|
+
if (parser.options.onComment) {
|
|
742
753
|
const loc = {
|
|
743
754
|
start: {
|
|
744
755
|
line,
|
|
@@ -749,7 +760,7 @@ function skipSingleLineComment(parser, source, state, type, start, line, column)
|
|
|
749
760
|
column: parser.tokenColumn,
|
|
750
761
|
},
|
|
751
762
|
};
|
|
752
|
-
parser.onComment(CommentTypes[type & 0xff], source.slice(index, parser.tokenIndex), start, parser.tokenIndex, loc);
|
|
763
|
+
parser.options.onComment(CommentTypes[type & 0xff], source.slice(index, parser.tokenIndex), start, parser.tokenIndex, loc);
|
|
753
764
|
}
|
|
754
765
|
return state | 1;
|
|
755
766
|
}
|
|
@@ -765,7 +776,7 @@ function skipMultiLineComment(parser, source, state) {
|
|
|
765
776
|
}
|
|
766
777
|
if (advanceChar(parser) === 47) {
|
|
767
778
|
advanceChar(parser);
|
|
768
|
-
if (parser.onComment) {
|
|
779
|
+
if (parser.options.onComment) {
|
|
769
780
|
const loc = {
|
|
770
781
|
start: {
|
|
771
782
|
line: parser.tokenLine,
|
|
@@ -776,7 +787,7 @@ function skipMultiLineComment(parser, source, state) {
|
|
|
776
787
|
column: parser.column,
|
|
777
788
|
},
|
|
778
789
|
};
|
|
779
|
-
parser.onComment(CommentTypes[1 & 0xff], source.slice(index, parser.index - 2), index - 2, parser.index, loc);
|
|
790
|
+
parser.options.onComment(CommentTypes[1 & 0xff], source.slice(index, parser.index - 2), index - 2, parser.index, loc);
|
|
780
791
|
}
|
|
781
792
|
parser.tokenIndex = parser.index;
|
|
782
793
|
parser.tokenLine = parser.line;
|
|
@@ -1335,7 +1346,7 @@ function scanNumber(parser, context, kind) {
|
|
|
1335
1346
|
if (char === 95) {
|
|
1336
1347
|
char = advanceChar(parser);
|
|
1337
1348
|
if (char === 95 || kind & 32) {
|
|
1338
|
-
reportScannerError(parser.
|
|
1349
|
+
reportScannerError(parser.currentLocation, { index: parser.index + 1, line: parser.line, column: parser.column }, 152);
|
|
1339
1350
|
}
|
|
1340
1351
|
allowSeparator = 1;
|
|
1341
1352
|
continue;
|
|
@@ -1346,7 +1357,7 @@ function scanNumber(parser, context, kind) {
|
|
|
1346
1357
|
--digit;
|
|
1347
1358
|
}
|
|
1348
1359
|
if (allowSeparator) {
|
|
1349
|
-
reportScannerError(parser.
|
|
1360
|
+
reportScannerError(parser.currentLocation, { index: parser.index + 1, line: parser.line, column: parser.column }, 153);
|
|
1350
1361
|
}
|
|
1351
1362
|
if (digit >= 0 && !isIdentifierStart(char) && char !== 46) {
|
|
1352
1363
|
parser.tokenValue = value;
|
|
@@ -1411,7 +1422,7 @@ function scanDecimalDigitsOrSeparator(parser, char) {
|
|
|
1411
1422
|
const { index } = parser;
|
|
1412
1423
|
char = advanceChar(parser);
|
|
1413
1424
|
if (char === 95) {
|
|
1414
|
-
reportScannerError(parser.
|
|
1425
|
+
reportScannerError(parser.currentLocation, { index: parser.index + 1, line: parser.line, column: parser.column }, 152);
|
|
1415
1426
|
}
|
|
1416
1427
|
allowSeparator = 1;
|
|
1417
1428
|
ret += parser.source.substring(start, index);
|
|
@@ -1422,7 +1433,7 @@ function scanDecimalDigitsOrSeparator(parser, char) {
|
|
|
1422
1433
|
char = advanceChar(parser);
|
|
1423
1434
|
}
|
|
1424
1435
|
if (allowSeparator) {
|
|
1425
|
-
reportScannerError(parser.
|
|
1436
|
+
reportScannerError(parser.currentLocation, { index: parser.index + 1, line: parser.line, column: parser.column }, 153);
|
|
1426
1437
|
}
|
|
1427
1438
|
return ret + parser.source.substring(start, parser.index);
|
|
1428
1439
|
}
|
|
@@ -1624,6 +1635,7 @@ function scanIdentifierUnicodeEscape(parser) {
|
|
|
1624
1635
|
report(parser, 5);
|
|
1625
1636
|
}
|
|
1626
1637
|
parser.currentChar = parser.source.charCodeAt((parser.index += 2));
|
|
1638
|
+
parser.column += 2;
|
|
1627
1639
|
return scanUnicodeEscape(parser);
|
|
1628
1640
|
}
|
|
1629
1641
|
function scanUnicodeEscape(parser) {
|
|
@@ -1634,10 +1646,10 @@ function scanUnicodeEscape(parser) {
|
|
|
1634
1646
|
while (CharTypes[advanceChar(parser)] & 64) {
|
|
1635
1647
|
codePoint = (codePoint << 4) | toHex(parser.currentChar);
|
|
1636
1648
|
if (codePoint > 1114111)
|
|
1637
|
-
reportScannerError(begin, parser.line,
|
|
1649
|
+
reportScannerError({ index: begin, line: parser.line, column: parser.column }, parser.currentLocation, 104);
|
|
1638
1650
|
}
|
|
1639
1651
|
if (parser.currentChar !== 125) {
|
|
1640
|
-
reportScannerError(begin, parser.line,
|
|
1652
|
+
reportScannerError({ index: begin, line: parser.line, column: parser.column }, parser.currentLocation, 7);
|
|
1641
1653
|
}
|
|
1642
1654
|
advanceChar(parser);
|
|
1643
1655
|
return codePoint;
|
|
@@ -1655,6 +1667,7 @@ function scanUnicodeEscape(parser) {
|
|
|
1655
1667
|
report(parser, 7);
|
|
1656
1668
|
codePoint = (toHex(char) << 12) | (toHex(char2) << 8) | (toHex(char3) << 4) | toHex(char4);
|
|
1657
1669
|
parser.currentChar = parser.source.charCodeAt((parser.index += 4));
|
|
1670
|
+
parser.column += 4;
|
|
1658
1671
|
return codePoint;
|
|
1659
1672
|
}
|
|
1660
1673
|
|
|
@@ -4382,7 +4395,7 @@ function matchOrInsertSemicolon(parser, context) {
|
|
|
4382
4395
|
report(parser, 30, KeywordDescTable[parser.getToken() & 255]);
|
|
4383
4396
|
}
|
|
4384
4397
|
if (!consumeOpt(parser, context, 1074790417)) {
|
|
4385
|
-
parser.onInsertedSemicolon?.(parser.startIndex);
|
|
4398
|
+
parser.options.onInsertedSemicolon?.(parser.startIndex);
|
|
4386
4399
|
}
|
|
4387
4400
|
}
|
|
4388
4401
|
function isValidStrictMode(parser, index, tokenIndex, tokenValue) {
|
|
@@ -4529,29 +4542,6 @@ function validateAndDeclareLabel(parser, labels, name) {
|
|
|
4529
4542
|
}
|
|
4530
4543
|
labels['$' + name] = 1;
|
|
4531
4544
|
}
|
|
4532
|
-
function finishNode(parser, context, start, line, column, node) {
|
|
4533
|
-
if (context & 2) {
|
|
4534
|
-
node.start = start;
|
|
4535
|
-
node.end = parser.startIndex;
|
|
4536
|
-
node.range = [start, parser.startIndex];
|
|
4537
|
-
}
|
|
4538
|
-
if (context & 4) {
|
|
4539
|
-
node.loc = {
|
|
4540
|
-
start: {
|
|
4541
|
-
line,
|
|
4542
|
-
column,
|
|
4543
|
-
},
|
|
4544
|
-
end: {
|
|
4545
|
-
line: parser.startLine,
|
|
4546
|
-
column: parser.startColumn,
|
|
4547
|
-
},
|
|
4548
|
-
};
|
|
4549
|
-
if (parser.sourceFile) {
|
|
4550
|
-
node.loc.source = parser.sourceFile;
|
|
4551
|
-
}
|
|
4552
|
-
}
|
|
4553
|
-
return node;
|
|
4554
|
-
}
|
|
4555
4545
|
function isEqualTagName(elementName) {
|
|
4556
4546
|
switch (elementName.type) {
|
|
4557
4547
|
case 'JSXIdentifier':
|
|
@@ -4568,16 +4558,11 @@ function createArrowHeadParsingScope(parser, context, value) {
|
|
|
4568
4558
|
return scope;
|
|
4569
4559
|
}
|
|
4570
4560
|
function recordScopeError(parser, type, ...params) {
|
|
4571
|
-
const { index, line, column, tokenIndex, tokenLine, tokenColumn } = parser;
|
|
4572
4561
|
return {
|
|
4573
4562
|
type,
|
|
4574
4563
|
params,
|
|
4575
|
-
|
|
4576
|
-
|
|
4577
|
-
column,
|
|
4578
|
-
tokenIndex,
|
|
4579
|
-
tokenLine,
|
|
4580
|
-
tokenColumn,
|
|
4564
|
+
start: parser.tokenStart,
|
|
4565
|
+
end: parser.currentLocation,
|
|
4581
4566
|
};
|
|
4582
4567
|
}
|
|
4583
4568
|
function createScope() {
|
|
@@ -4697,7 +4682,7 @@ function validatePrivateIdentifierRefs(scope) {
|
|
|
4697
4682
|
for (const name in scope.refs) {
|
|
4698
4683
|
if (!isPrivateIdentifierDefined(name, scope)) {
|
|
4699
4684
|
const { index, line, column } = scope.refs[name][0];
|
|
4700
|
-
throw new ParseError(index, line, column, index + name.length, line, column + name.length, 4, name);
|
|
4685
|
+
throw new ParseError({ index, line, column }, { index: index + name.length, line, column: column + name.length }, 4, name);
|
|
4701
4686
|
}
|
|
4702
4687
|
}
|
|
4703
4688
|
}
|
|
@@ -4714,39 +4699,6 @@ function addBindingToExports(parser, name) {
|
|
|
4714
4699
|
parser.exportedBindings['#' + name] = 1;
|
|
4715
4700
|
}
|
|
4716
4701
|
}
|
|
4717
|
-
function pushComment(context, array) {
|
|
4718
|
-
return function (type, value, start, end, loc) {
|
|
4719
|
-
const comment = {
|
|
4720
|
-
type,
|
|
4721
|
-
value,
|
|
4722
|
-
};
|
|
4723
|
-
if (context & 2) {
|
|
4724
|
-
comment.start = start;
|
|
4725
|
-
comment.end = end;
|
|
4726
|
-
comment.range = [start, end];
|
|
4727
|
-
}
|
|
4728
|
-
if (context & 4) {
|
|
4729
|
-
comment.loc = loc;
|
|
4730
|
-
}
|
|
4731
|
-
array.push(comment);
|
|
4732
|
-
};
|
|
4733
|
-
}
|
|
4734
|
-
function pushToken(context, array) {
|
|
4735
|
-
return function (token, start, end, loc) {
|
|
4736
|
-
const tokens = {
|
|
4737
|
-
token,
|
|
4738
|
-
};
|
|
4739
|
-
if (context & 2) {
|
|
4740
|
-
tokens.start = start;
|
|
4741
|
-
tokens.end = end;
|
|
4742
|
-
tokens.range = [start, end];
|
|
4743
|
-
}
|
|
4744
|
-
if (context & 4) {
|
|
4745
|
-
tokens.loc = loc;
|
|
4746
|
-
}
|
|
4747
|
-
array.push(tokens);
|
|
4748
|
-
};
|
|
4749
|
-
}
|
|
4750
4702
|
function isValidIdentifier(context, t) {
|
|
4751
4703
|
if (context & (256 | 262144)) {
|
|
4752
4704
|
if (context & 512 && t === 209006)
|
|
@@ -4767,72 +4719,136 @@ function classifyIdentifier(parser, context, t) {
|
|
|
4767
4719
|
report(parser, 0);
|
|
4768
4720
|
}
|
|
4769
4721
|
|
|
4770
|
-
|
|
4771
|
-
|
|
4772
|
-
|
|
4773
|
-
|
|
4774
|
-
|
|
4775
|
-
|
|
4776
|
-
|
|
4777
|
-
|
|
4778
|
-
|
|
4779
|
-
|
|
4780
|
-
|
|
4781
|
-
|
|
4782
|
-
|
|
4783
|
-
|
|
4784
|
-
|
|
4785
|
-
|
|
4786
|
-
|
|
4787
|
-
|
|
4788
|
-
|
|
4789
|
-
|
|
4790
|
-
|
|
4791
|
-
|
|
4792
|
-
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
|
|
4799
|
-
|
|
4800
|
-
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
|
|
4804
|
-
|
|
4805
|
-
|
|
4806
|
-
|
|
4807
|
-
|
|
4722
|
+
class Parser {
|
|
4723
|
+
source;
|
|
4724
|
+
options;
|
|
4725
|
+
lastOnToken = null;
|
|
4726
|
+
token = 1048576;
|
|
4727
|
+
flags = 0;
|
|
4728
|
+
index = 0;
|
|
4729
|
+
line = 1;
|
|
4730
|
+
column = 0;
|
|
4731
|
+
startIndex = 0;
|
|
4732
|
+
end = 0;
|
|
4733
|
+
tokenIndex = 0;
|
|
4734
|
+
startColumn = 0;
|
|
4735
|
+
tokenColumn = 0;
|
|
4736
|
+
tokenLine = 1;
|
|
4737
|
+
startLine = 1;
|
|
4738
|
+
tokenValue = '';
|
|
4739
|
+
tokenRaw = '';
|
|
4740
|
+
tokenRegExp = void 0;
|
|
4741
|
+
currentChar = 0;
|
|
4742
|
+
exportedNames = {};
|
|
4743
|
+
exportedBindings = {};
|
|
4744
|
+
assignable = 1;
|
|
4745
|
+
destructible = 0;
|
|
4746
|
+
leadingDecorators = { decorators: [] };
|
|
4747
|
+
constructor(source, options = {}) {
|
|
4748
|
+
this.source = source;
|
|
4749
|
+
this.options = options;
|
|
4750
|
+
this.end = source.length;
|
|
4751
|
+
this.currentChar = source.charCodeAt(0);
|
|
4752
|
+
}
|
|
4753
|
+
getToken() {
|
|
4754
|
+
return this.token;
|
|
4755
|
+
}
|
|
4756
|
+
setToken(value, replaceLast = false) {
|
|
4757
|
+
this.token = value;
|
|
4758
|
+
const { onToken } = this.options;
|
|
4759
|
+
if (onToken) {
|
|
4760
|
+
if (value !== 1048576) {
|
|
4761
|
+
const loc = {
|
|
4762
|
+
start: {
|
|
4763
|
+
line: this.tokenLine,
|
|
4764
|
+
column: this.tokenColumn,
|
|
4765
|
+
},
|
|
4766
|
+
end: {
|
|
4767
|
+
line: this.line,
|
|
4768
|
+
column: this.column,
|
|
4769
|
+
},
|
|
4770
|
+
};
|
|
4771
|
+
if (!replaceLast && this.lastOnToken) {
|
|
4772
|
+
onToken(...this.lastOnToken);
|
|
4808
4773
|
}
|
|
4809
|
-
|
|
4810
|
-
|
|
4811
|
-
|
|
4812
|
-
|
|
4813
|
-
|
|
4774
|
+
this.lastOnToken = [convertTokenType(value), this.tokenIndex, this.index, loc];
|
|
4775
|
+
}
|
|
4776
|
+
else {
|
|
4777
|
+
if (this.lastOnToken) {
|
|
4778
|
+
onToken(...this.lastOnToken);
|
|
4779
|
+
this.lastOnToken = null;
|
|
4814
4780
|
}
|
|
4815
4781
|
}
|
|
4816
|
-
|
|
4817
|
-
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
|
|
4822
|
-
|
|
4823
|
-
|
|
4824
|
-
|
|
4825
|
-
|
|
4826
|
-
|
|
4827
|
-
|
|
4828
|
-
|
|
4782
|
+
}
|
|
4783
|
+
return value;
|
|
4784
|
+
}
|
|
4785
|
+
get tokenStart() {
|
|
4786
|
+
return {
|
|
4787
|
+
index: this.tokenIndex,
|
|
4788
|
+
line: this.tokenLine,
|
|
4789
|
+
column: this.tokenColumn,
|
|
4790
|
+
};
|
|
4791
|
+
}
|
|
4792
|
+
get currentLocation() {
|
|
4793
|
+
return { index: this.index, line: this.line, column: this.column };
|
|
4794
|
+
}
|
|
4795
|
+
finishNode(node, start, end) {
|
|
4796
|
+
if (this.options.shouldAddRanges) {
|
|
4797
|
+
node.start = start.index;
|
|
4798
|
+
const endIndex = end ? end.index : this.startIndex;
|
|
4799
|
+
node.end = endIndex;
|
|
4800
|
+
node.range = [start.index, endIndex];
|
|
4801
|
+
}
|
|
4802
|
+
if (this.options.shouldAddLoc) {
|
|
4803
|
+
node.loc = {
|
|
4804
|
+
start: {
|
|
4805
|
+
line: start.line,
|
|
4806
|
+
column: start.column,
|
|
4807
|
+
},
|
|
4808
|
+
end: end ? { line: end.line, column: end.column } : { line: this.startLine, column: this.startColumn },
|
|
4809
|
+
};
|
|
4810
|
+
if (this.options.sourceFile) {
|
|
4811
|
+
node.loc.source = this.options.sourceFile;
|
|
4812
|
+
}
|
|
4813
|
+
}
|
|
4814
|
+
return node;
|
|
4815
|
+
}
|
|
4816
|
+
}
|
|
4817
|
+
function pushComment(comments, options) {
|
|
4818
|
+
return function (type, value, start, end, loc) {
|
|
4819
|
+
const comment = {
|
|
4820
|
+
type,
|
|
4821
|
+
value,
|
|
4822
|
+
};
|
|
4823
|
+
if (options.shouldAddRanges) {
|
|
4824
|
+
comment.start = start;
|
|
4825
|
+
comment.end = end;
|
|
4826
|
+
comment.range = [start, end];
|
|
4827
|
+
}
|
|
4828
|
+
if (options.shouldAddLoc) {
|
|
4829
|
+
comment.loc = loc;
|
|
4830
|
+
}
|
|
4831
|
+
comments.push(comment);
|
|
4829
4832
|
};
|
|
4830
4833
|
}
|
|
4834
|
+
function pushToken(tokens, options) {
|
|
4835
|
+
return function (type, start, end, loc) {
|
|
4836
|
+
const token = {
|
|
4837
|
+
token: type,
|
|
4838
|
+
};
|
|
4839
|
+
if (options.shouldAddRanges) {
|
|
4840
|
+
token.start = start;
|
|
4841
|
+
token.end = end;
|
|
4842
|
+
token.range = [start, end];
|
|
4843
|
+
}
|
|
4844
|
+
if (options.shouldAddLoc) {
|
|
4845
|
+
token.loc = loc;
|
|
4846
|
+
}
|
|
4847
|
+
tokens.push(token);
|
|
4848
|
+
};
|
|
4849
|
+
}
|
|
4850
|
+
|
|
4831
4851
|
function parseSource(source, options, context) {
|
|
4832
|
-
let sourceFile = '';
|
|
4833
|
-
let onComment;
|
|
4834
|
-
let onInsertedSemicolon;
|
|
4835
|
-
let onToken;
|
|
4836
4852
|
if (options != null) {
|
|
4837
4853
|
if (options.module)
|
|
4838
4854
|
context |= 512 | 256;
|
|
@@ -4858,18 +4874,28 @@ function parseSource(source, options, context) {
|
|
|
4858
4874
|
context |= 256;
|
|
4859
4875
|
if (options.jsx)
|
|
4860
4876
|
context |= 8;
|
|
4877
|
+
}
|
|
4878
|
+
const parserOptions = {
|
|
4879
|
+
shouldAddLoc: Boolean(context & 4),
|
|
4880
|
+
shouldAddRanges: Boolean(context & 2),
|
|
4881
|
+
};
|
|
4882
|
+
if (options != null) {
|
|
4861
4883
|
if (options.source)
|
|
4862
|
-
sourceFile = options.source;
|
|
4884
|
+
parserOptions.sourceFile = options.source;
|
|
4863
4885
|
if (options.onComment != null) {
|
|
4864
|
-
onComment = Array.isArray(options.onComment)
|
|
4886
|
+
parserOptions.onComment = Array.isArray(options.onComment)
|
|
4887
|
+
? pushComment(options.onComment, parserOptions)
|
|
4888
|
+
: options.onComment;
|
|
4865
4889
|
}
|
|
4866
4890
|
if (options.onInsertedSemicolon != null)
|
|
4867
|
-
onInsertedSemicolon = options.onInsertedSemicolon;
|
|
4891
|
+
parserOptions.onInsertedSemicolon = options.onInsertedSemicolon;
|
|
4868
4892
|
if (options.onToken != null) {
|
|
4869
|
-
onToken = Array.isArray(options.onToken)
|
|
4893
|
+
parserOptions.onToken = Array.isArray(options.onToken)
|
|
4894
|
+
? pushToken(options.onToken, parserOptions)
|
|
4895
|
+
: options.onToken;
|
|
4870
4896
|
}
|
|
4871
4897
|
}
|
|
4872
|
-
const parser =
|
|
4898
|
+
const parser = new Parser(source, parserOptions);
|
|
4873
4899
|
skipHashBang(parser);
|
|
4874
4900
|
const scope = context & 16 ? createScope() : void 0;
|
|
4875
4901
|
let body = [];
|
|
@@ -4887,43 +4913,29 @@ function parseSource(source, options, context) {
|
|
|
4887
4913
|
else {
|
|
4888
4914
|
body = parseStatementList(parser, context | 2048, scope);
|
|
4889
4915
|
}
|
|
4890
|
-
|
|
4916
|
+
return parser.finishNode({
|
|
4891
4917
|
type: 'Program',
|
|
4892
4918
|
sourceType,
|
|
4893
4919
|
body,
|
|
4894
|
-
};
|
|
4895
|
-
if (context & 2) {
|
|
4896
|
-
node.start = 0;
|
|
4897
|
-
node.end = source.length;
|
|
4898
|
-
node.range = [0, source.length];
|
|
4899
|
-
}
|
|
4900
|
-
if (context & 4) {
|
|
4901
|
-
node.loc = {
|
|
4902
|
-
start: { line: 1, column: 0 },
|
|
4903
|
-
end: { line: parser.line, column: parser.column },
|
|
4904
|
-
};
|
|
4905
|
-
if (parser.sourceFile)
|
|
4906
|
-
node.loc.source = sourceFile;
|
|
4907
|
-
}
|
|
4908
|
-
return node;
|
|
4920
|
+
}, { index: 0, line: 1, column: 0 }, parser.currentLocation);
|
|
4909
4921
|
}
|
|
4910
4922
|
function parseStatementList(parser, context, scope) {
|
|
4911
4923
|
nextToken(parser, context | 8192 | 67108864);
|
|
4912
4924
|
const statements = [];
|
|
4913
4925
|
while (parser.getToken() === 134283267) {
|
|
4914
|
-
const { index,
|
|
4926
|
+
const { index, tokenValue, tokenStart, tokenIndex } = parser;
|
|
4915
4927
|
const token = parser.getToken();
|
|
4916
4928
|
const expr = parseLiteral(parser, context);
|
|
4917
4929
|
if (isValidStrictMode(parser, index, tokenIndex, tokenValue)) {
|
|
4918
4930
|
context |= 256;
|
|
4919
4931
|
if (parser.flags & 64) {
|
|
4920
|
-
reportMessageAt(parser.
|
|
4932
|
+
reportMessageAt(parser.tokenStart, parser.currentLocation, 9);
|
|
4921
4933
|
}
|
|
4922
4934
|
if (parser.flags & 4096) {
|
|
4923
|
-
reportMessageAt(parser.
|
|
4935
|
+
reportMessageAt(parser.tokenStart, parser.currentLocation, 15);
|
|
4924
4936
|
}
|
|
4925
4937
|
}
|
|
4926
|
-
statements.push(parseDirective(parser, context, expr, token,
|
|
4938
|
+
statements.push(parseDirective(parser, context, expr, token, tokenStart));
|
|
4927
4939
|
}
|
|
4928
4940
|
while (parser.getToken() !== 1048576) {
|
|
4929
4941
|
statements.push(parseStatementListItem(parser, context, scope, undefined, 4, {}));
|
|
@@ -4934,9 +4946,9 @@ function parseModuleItemList(parser, context, scope) {
|
|
|
4934
4946
|
nextToken(parser, context | 8192);
|
|
4935
4947
|
const statements = [];
|
|
4936
4948
|
while (parser.getToken() === 134283267) {
|
|
4937
|
-
const {
|
|
4949
|
+
const { tokenStart } = parser;
|
|
4938
4950
|
const token = parser.getToken();
|
|
4939
|
-
statements.push(parseDirective(parser, context, parseLiteral(parser, context), token,
|
|
4951
|
+
statements.push(parseDirective(parser, context, parseLiteral(parser, context), token, tokenStart));
|
|
4940
4952
|
}
|
|
4941
4953
|
while (parser.getToken() !== 1048576) {
|
|
4942
4954
|
statements.push(parseModuleItem(parser, context, scope));
|
|
@@ -4944,7 +4956,12 @@ function parseModuleItemList(parser, context, scope) {
|
|
|
4944
4956
|
return statements;
|
|
4945
4957
|
}
|
|
4946
4958
|
function parseModuleItem(parser, context, scope) {
|
|
4947
|
-
parser.
|
|
4959
|
+
if (parser.getToken() === 132) {
|
|
4960
|
+
Object.assign(parser.leadingDecorators, {
|
|
4961
|
+
start: parser.tokenStart,
|
|
4962
|
+
decorators: parseDecorators(parser, context, undefined),
|
|
4963
|
+
});
|
|
4964
|
+
}
|
|
4948
4965
|
let moduleItem;
|
|
4949
4966
|
switch (parser.getToken()) {
|
|
4950
4967
|
case 20564:
|
|
@@ -4956,77 +4973,75 @@ function parseModuleItem(parser, context, scope) {
|
|
|
4956
4973
|
default:
|
|
4957
4974
|
moduleItem = parseStatementListItem(parser, context, scope, undefined, 4, {});
|
|
4958
4975
|
}
|
|
4959
|
-
if (parser.leadingDecorators.length) {
|
|
4976
|
+
if (parser.leadingDecorators?.decorators.length) {
|
|
4960
4977
|
report(parser, 170);
|
|
4961
4978
|
}
|
|
4962
4979
|
return moduleItem;
|
|
4963
4980
|
}
|
|
4964
4981
|
function parseStatementListItem(parser, context, scope, privateScope, origin, labels) {
|
|
4965
|
-
const start = parser.
|
|
4966
|
-
const line = parser.tokenLine;
|
|
4967
|
-
const column = parser.tokenColumn;
|
|
4982
|
+
const start = parser.tokenStart;
|
|
4968
4983
|
switch (parser.getToken()) {
|
|
4969
4984
|
case 86104:
|
|
4970
|
-
return parseFunctionDeclaration(parser, context, scope, privateScope, origin, 1, 0, 0, start
|
|
4985
|
+
return parseFunctionDeclaration(parser, context, scope, privateScope, origin, 1, 0, 0, start);
|
|
4971
4986
|
case 132:
|
|
4972
4987
|
case 86094:
|
|
4973
|
-
return parseClassDeclaration(parser, context, scope, privateScope, 0
|
|
4988
|
+
return parseClassDeclaration(parser, context, scope, privateScope, 0);
|
|
4974
4989
|
case 86090:
|
|
4975
|
-
return parseLexicalDeclaration(parser, context, scope, privateScope, 16, 0
|
|
4990
|
+
return parseLexicalDeclaration(parser, context, scope, privateScope, 16, 0);
|
|
4976
4991
|
case 241737:
|
|
4977
|
-
return parseLetIdentOrVarDeclarationStatement(parser, context, scope, privateScope, origin
|
|
4992
|
+
return parseLetIdentOrVarDeclarationStatement(parser, context, scope, privateScope, origin);
|
|
4978
4993
|
case 20564:
|
|
4979
4994
|
report(parser, 103, 'export');
|
|
4980
4995
|
case 86106:
|
|
4981
4996
|
nextToken(parser, context);
|
|
4982
4997
|
switch (parser.getToken()) {
|
|
4983
4998
|
case 67174411:
|
|
4984
|
-
return parseImportCallDeclaration(parser, context, privateScope, start
|
|
4999
|
+
return parseImportCallDeclaration(parser, context, privateScope, start);
|
|
4985
5000
|
case 67108877:
|
|
4986
|
-
return parseImportMetaDeclaration(parser, context, start
|
|
5001
|
+
return parseImportMetaDeclaration(parser, context, start);
|
|
4987
5002
|
default:
|
|
4988
5003
|
report(parser, 103, 'import');
|
|
4989
5004
|
}
|
|
4990
5005
|
case 209005:
|
|
4991
|
-
return parseAsyncArrowOrAsyncFunctionDeclaration(parser, context, scope, privateScope, origin, labels, 1
|
|
5006
|
+
return parseAsyncArrowOrAsyncFunctionDeclaration(parser, context, scope, privateScope, origin, labels, 1);
|
|
4992
5007
|
default:
|
|
4993
|
-
return parseStatement(parser, context, scope, privateScope, origin, labels, 1
|
|
5008
|
+
return parseStatement(parser, context, scope, privateScope, origin, labels, 1);
|
|
4994
5009
|
}
|
|
4995
5010
|
}
|
|
4996
|
-
function parseStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl
|
|
5011
|
+
function parseStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl) {
|
|
4997
5012
|
switch (parser.getToken()) {
|
|
4998
5013
|
case 86088:
|
|
4999
|
-
return parseVariableStatement(parser, context, scope, privateScope, 0
|
|
5014
|
+
return parseVariableStatement(parser, context, scope, privateScope, 0);
|
|
5000
5015
|
case 20572:
|
|
5001
|
-
return parseReturnStatement(parser, context, privateScope
|
|
5016
|
+
return parseReturnStatement(parser, context, privateScope);
|
|
5002
5017
|
case 20569:
|
|
5003
|
-
return parseIfStatement(parser, context, scope, privateScope, labels
|
|
5018
|
+
return parseIfStatement(parser, context, scope, privateScope, labels);
|
|
5004
5019
|
case 20567:
|
|
5005
|
-
return parseForStatement(parser, context, scope, privateScope, labels
|
|
5020
|
+
return parseForStatement(parser, context, scope, privateScope, labels);
|
|
5006
5021
|
case 20562:
|
|
5007
|
-
return parseDoWhileStatement(parser, context, scope, privateScope, labels
|
|
5022
|
+
return parseDoWhileStatement(parser, context, scope, privateScope, labels);
|
|
5008
5023
|
case 20578:
|
|
5009
|
-
return parseWhileStatement(parser, context, scope, privateScope, labels
|
|
5024
|
+
return parseWhileStatement(parser, context, scope, privateScope, labels);
|
|
5010
5025
|
case 86110:
|
|
5011
|
-
return parseSwitchStatement(parser, context, scope, privateScope, labels
|
|
5026
|
+
return parseSwitchStatement(parser, context, scope, privateScope, labels);
|
|
5012
5027
|
case 1074790417:
|
|
5013
|
-
return parseEmptyStatement(parser, context
|
|
5028
|
+
return parseEmptyStatement(parser, context);
|
|
5014
5029
|
case 2162700:
|
|
5015
|
-
return parseBlock(parser, context, scope ? addChildScope(scope, 2) : scope, privateScope, labels,
|
|
5030
|
+
return parseBlock(parser, context, scope ? addChildScope(scope, 2) : scope, privateScope, labels, parser.tokenStart);
|
|
5016
5031
|
case 86112:
|
|
5017
|
-
return parseThrowStatement(parser, context, privateScope
|
|
5032
|
+
return parseThrowStatement(parser, context, privateScope);
|
|
5018
5033
|
case 20555:
|
|
5019
|
-
return parseBreakStatement(parser, context, labels
|
|
5034
|
+
return parseBreakStatement(parser, context, labels);
|
|
5020
5035
|
case 20559:
|
|
5021
|
-
return parseContinueStatement(parser, context, labels
|
|
5036
|
+
return parseContinueStatement(parser, context, labels);
|
|
5022
5037
|
case 20577:
|
|
5023
|
-
return parseTryStatement(parser, context, scope, privateScope, labels
|
|
5038
|
+
return parseTryStatement(parser, context, scope, privateScope, labels);
|
|
5024
5039
|
case 20579:
|
|
5025
|
-
return parseWithStatement(parser, context, scope, privateScope, labels
|
|
5040
|
+
return parseWithStatement(parser, context, scope, privateScope, labels);
|
|
5026
5041
|
case 20560:
|
|
5027
|
-
return parseDebuggerStatement(parser, context
|
|
5042
|
+
return parseDebuggerStatement(parser, context);
|
|
5028
5043
|
case 209005:
|
|
5029
|
-
return parseAsyncArrowOrAsyncFunctionDeclaration(parser, context, scope, privateScope, origin, labels, 0
|
|
5044
|
+
return parseAsyncArrowOrAsyncFunctionDeclaration(parser, context, scope, privateScope, origin, labels, 0);
|
|
5030
5045
|
case 20557:
|
|
5031
5046
|
report(parser, 162);
|
|
5032
5047
|
case 20566:
|
|
@@ -5040,11 +5055,11 @@ function parseStatement(parser, context, scope, privateScope, origin, labels, al
|
|
|
5040
5055
|
case 86094:
|
|
5041
5056
|
report(parser, 79);
|
|
5042
5057
|
default:
|
|
5043
|
-
return parseExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl
|
|
5058
|
+
return parseExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl);
|
|
5044
5059
|
}
|
|
5045
5060
|
}
|
|
5046
|
-
function parseExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl
|
|
5047
|
-
const { tokenValue } = parser;
|
|
5061
|
+
function parseExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl) {
|
|
5062
|
+
const { tokenValue, tokenStart } = parser;
|
|
5048
5063
|
const token = parser.getToken();
|
|
5049
5064
|
let expr;
|
|
5050
5065
|
switch (token) {
|
|
@@ -5056,51 +5071,52 @@ function parseExpressionOrLabelledStatement(parser, context, scope, privateScope
|
|
|
5056
5071
|
report(parser, 84);
|
|
5057
5072
|
break;
|
|
5058
5073
|
default:
|
|
5059
|
-
expr = parsePrimaryExpression(parser, context, privateScope, 2, 0, 1, 0, 1, parser.
|
|
5074
|
+
expr = parsePrimaryExpression(parser, context, privateScope, 2, 0, 1, 0, 1, parser.tokenStart);
|
|
5060
5075
|
}
|
|
5061
5076
|
if (token & 143360 && parser.getToken() === 21) {
|
|
5062
|
-
return parseLabelledStatement(parser, context, scope, privateScope, origin, labels, tokenValue, expr, token, allowFuncDecl,
|
|
5077
|
+
return parseLabelledStatement(parser, context, scope, privateScope, origin, labels, tokenValue, expr, token, allowFuncDecl, tokenStart);
|
|
5063
5078
|
}
|
|
5064
|
-
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0,
|
|
5065
|
-
expr = parseAssignmentExpression(parser, context, privateScope, 0, 0,
|
|
5079
|
+
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0, tokenStart);
|
|
5080
|
+
expr = parseAssignmentExpression(parser, context, privateScope, 0, 0, tokenStart, expr);
|
|
5066
5081
|
if (parser.getToken() === 18) {
|
|
5067
|
-
expr = parseSequenceExpression(parser, context, privateScope, 0,
|
|
5082
|
+
expr = parseSequenceExpression(parser, context, privateScope, 0, tokenStart, expr);
|
|
5068
5083
|
}
|
|
5069
|
-
return parseExpressionStatement(parser, context, expr,
|
|
5084
|
+
return parseExpressionStatement(parser, context, expr, tokenStart);
|
|
5070
5085
|
}
|
|
5071
|
-
function parseBlock(parser, context, scope, privateScope, labels, start,
|
|
5086
|
+
function parseBlock(parser, context, scope, privateScope, labels, start, type = 'BlockStatement') {
|
|
5072
5087
|
const body = [];
|
|
5073
5088
|
consume(parser, context | 8192, 2162700);
|
|
5074
5089
|
while (parser.getToken() !== 1074790415) {
|
|
5075
5090
|
body.push(parseStatementListItem(parser, context, scope, privateScope, 2, { $: labels }));
|
|
5076
5091
|
}
|
|
5077
5092
|
consume(parser, context | 8192, 1074790415);
|
|
5078
|
-
return finishNode(
|
|
5093
|
+
return parser.finishNode({
|
|
5079
5094
|
type,
|
|
5080
5095
|
body,
|
|
5081
|
-
});
|
|
5096
|
+
}, start);
|
|
5082
5097
|
}
|
|
5083
|
-
function parseReturnStatement(parser, context, privateScope
|
|
5098
|
+
function parseReturnStatement(parser, context, privateScope) {
|
|
5084
5099
|
if ((context & 1048576) === 0)
|
|
5085
5100
|
report(parser, 92);
|
|
5101
|
+
const start = parser.tokenStart;
|
|
5086
5102
|
nextToken(parser, context | 8192);
|
|
5087
5103
|
const argument = parser.flags & 1 || parser.getToken() & 1048576
|
|
5088
5104
|
? null
|
|
5089
|
-
: parseExpressions(parser, context, privateScope, 0, 1, parser.
|
|
5105
|
+
: parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart);
|
|
5090
5106
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5091
|
-
return finishNode(
|
|
5107
|
+
return parser.finishNode({
|
|
5092
5108
|
type: 'ReturnStatement',
|
|
5093
5109
|
argument,
|
|
5094
|
-
});
|
|
5110
|
+
}, start);
|
|
5095
5111
|
}
|
|
5096
|
-
function parseExpressionStatement(parser, context, expression, start
|
|
5112
|
+
function parseExpressionStatement(parser, context, expression, start) {
|
|
5097
5113
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5098
|
-
return finishNode(
|
|
5114
|
+
return parser.finishNode({
|
|
5099
5115
|
type: 'ExpressionStatement',
|
|
5100
5116
|
expression,
|
|
5101
|
-
});
|
|
5117
|
+
}, start);
|
|
5102
5118
|
}
|
|
5103
|
-
function parseLabelledStatement(parser, context, scope, privateScope, origin, labels, value, expr, token, allowFuncDecl, start
|
|
5119
|
+
function parseLabelledStatement(parser, context, scope, privateScope, origin, labels, value, expr, token, allowFuncDecl, start) {
|
|
5104
5120
|
validateBindingIdentifier(parser, context, 0, token, 1);
|
|
5105
5121
|
validateAndDeclareLabel(parser, labels, value);
|
|
5106
5122
|
nextToken(parser, context | 8192);
|
|
@@ -5108,37 +5124,37 @@ function parseLabelledStatement(parser, context, scope, privateScope, origin, la
|
|
|
5108
5124
|
(context & 256) === 0 &&
|
|
5109
5125
|
context & 64 &&
|
|
5110
5126
|
parser.getToken() === 86104
|
|
5111
|
-
? parseFunctionDeclaration(parser, context, addChildScope(scope, 2), privateScope, origin, 0, 0, 0, parser.
|
|
5112
|
-
: parseStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl
|
|
5113
|
-
return finishNode(
|
|
5127
|
+
? parseFunctionDeclaration(parser, context, addChildScope(scope, 2), privateScope, origin, 0, 0, 0, parser.tokenStart)
|
|
5128
|
+
: parseStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl);
|
|
5129
|
+
return parser.finishNode({
|
|
5114
5130
|
type: 'LabeledStatement',
|
|
5115
5131
|
label: expr,
|
|
5116
5132
|
body,
|
|
5117
|
-
});
|
|
5133
|
+
}, start);
|
|
5118
5134
|
}
|
|
5119
|
-
function parseAsyncArrowOrAsyncFunctionDeclaration(parser, context, scope, privateScope, origin, labels, allowFuncDecl
|
|
5120
|
-
const { tokenValue } = parser;
|
|
5135
|
+
function parseAsyncArrowOrAsyncFunctionDeclaration(parser, context, scope, privateScope, origin, labels, allowFuncDecl) {
|
|
5136
|
+
const { tokenValue, tokenStart: start } = parser;
|
|
5121
5137
|
const token = parser.getToken();
|
|
5122
5138
|
let expr = parseIdentifier(parser, context);
|
|
5123
5139
|
if (parser.getToken() === 21) {
|
|
5124
|
-
return parseLabelledStatement(parser, context, scope, privateScope, origin, labels, tokenValue, expr, token, 1, start
|
|
5140
|
+
return parseLabelledStatement(parser, context, scope, privateScope, origin, labels, tokenValue, expr, token, 1, start);
|
|
5125
5141
|
}
|
|
5126
5142
|
const asyncNewLine = parser.flags & 1;
|
|
5127
5143
|
if (!asyncNewLine) {
|
|
5128
5144
|
if (parser.getToken() === 86104) {
|
|
5129
5145
|
if (!allowFuncDecl)
|
|
5130
5146
|
report(parser, 123);
|
|
5131
|
-
return parseFunctionDeclaration(parser, context, scope, privateScope, origin, 1, 0, 1, start
|
|
5147
|
+
return parseFunctionDeclaration(parser, context, scope, privateScope, origin, 1, 0, 1, start);
|
|
5132
5148
|
}
|
|
5133
5149
|
if (isValidIdentifier(context, parser.getToken())) {
|
|
5134
|
-
expr = parseAsyncArrowAfterIdent(parser, context, privateScope, 1, start
|
|
5150
|
+
expr = parseAsyncArrowAfterIdent(parser, context, privateScope, 1, start);
|
|
5135
5151
|
if (parser.getToken() === 18)
|
|
5136
|
-
expr = parseSequenceExpression(parser, context, privateScope, 0, start,
|
|
5137
|
-
return parseExpressionStatement(parser, context, expr, start
|
|
5152
|
+
expr = parseSequenceExpression(parser, context, privateScope, 0, start, expr);
|
|
5153
|
+
return parseExpressionStatement(parser, context, expr, start);
|
|
5138
5154
|
}
|
|
5139
5155
|
}
|
|
5140
5156
|
if (parser.getToken() === 67174411) {
|
|
5141
|
-
expr = parseAsyncArrowOrCallExpression(parser, context, privateScope, expr, 1, 1, 0, asyncNewLine, start
|
|
5157
|
+
expr = parseAsyncArrowOrCallExpression(parser, context, privateScope, expr, 1, 1, 0, asyncNewLine, start);
|
|
5142
5158
|
}
|
|
5143
5159
|
else {
|
|
5144
5160
|
if (parser.getToken() === 10) {
|
|
@@ -5146,89 +5162,92 @@ function parseAsyncArrowOrAsyncFunctionDeclaration(parser, context, scope, priva
|
|
|
5146
5162
|
if ((token & 36864) === 36864) {
|
|
5147
5163
|
parser.flags |= 256;
|
|
5148
5164
|
}
|
|
5149
|
-
expr = parseArrowFromIdentifier(parser, context | 524288, privateScope, parser.tokenValue, expr, 0, 1, 0, start
|
|
5165
|
+
expr = parseArrowFromIdentifier(parser, context | 524288, privateScope, parser.tokenValue, expr, 0, 1, 0, start);
|
|
5150
5166
|
}
|
|
5151
5167
|
parser.assignable = 1;
|
|
5152
5168
|
}
|
|
5153
|
-
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0, start
|
|
5154
|
-
expr = parseAssignmentExpression(parser, context, privateScope, 0, 0, start,
|
|
5169
|
+
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0, start);
|
|
5170
|
+
expr = parseAssignmentExpression(parser, context, privateScope, 0, 0, start, expr);
|
|
5155
5171
|
parser.assignable = 1;
|
|
5156
5172
|
if (parser.getToken() === 18) {
|
|
5157
|
-
expr = parseSequenceExpression(parser, context, privateScope, 0, start,
|
|
5173
|
+
expr = parseSequenceExpression(parser, context, privateScope, 0, start, expr);
|
|
5158
5174
|
}
|
|
5159
|
-
return parseExpressionStatement(parser, context, expr, start
|
|
5175
|
+
return parseExpressionStatement(parser, context, expr, start);
|
|
5160
5176
|
}
|
|
5161
|
-
function parseDirective(parser, context, expression, token, start
|
|
5177
|
+
function parseDirective(parser, context, expression, token, start) {
|
|
5162
5178
|
const endIndex = parser.startIndex;
|
|
5163
5179
|
if (token !== 1074790417) {
|
|
5164
5180
|
parser.assignable = 2;
|
|
5165
|
-
expression = parseMemberOrUpdateExpression(parser, context, undefined, expression, 0, 0, start
|
|
5181
|
+
expression = parseMemberOrUpdateExpression(parser, context, undefined, expression, 0, 0, start);
|
|
5166
5182
|
if (parser.getToken() !== 1074790417) {
|
|
5167
|
-
expression = parseAssignmentExpression(parser, context, undefined, 0, 0, start,
|
|
5183
|
+
expression = parseAssignmentExpression(parser, context, undefined, 0, 0, start, expression);
|
|
5168
5184
|
if (parser.getToken() === 18) {
|
|
5169
|
-
expression = parseSequenceExpression(parser, context, undefined, 0, start,
|
|
5185
|
+
expression = parseSequenceExpression(parser, context, undefined, 0, start, expression);
|
|
5170
5186
|
}
|
|
5171
5187
|
}
|
|
5172
5188
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5173
5189
|
}
|
|
5174
|
-
|
|
5175
|
-
|
|
5176
|
-
|
|
5177
|
-
|
|
5178
|
-
|
|
5179
|
-
|
|
5180
|
-
|
|
5181
|
-
|
|
5182
|
-
expression,
|
|
5183
|
-
});
|
|
5190
|
+
const node = {
|
|
5191
|
+
type: 'ExpressionStatement',
|
|
5192
|
+
expression,
|
|
5193
|
+
};
|
|
5194
|
+
if (expression.type === 'Literal' && typeof expression.value === 'string') {
|
|
5195
|
+
node.directive = parser.source.slice(start.index + 1, endIndex - 1);
|
|
5196
|
+
}
|
|
5197
|
+
return parser.finishNode(node, start);
|
|
5184
5198
|
}
|
|
5185
|
-
function parseEmptyStatement(parser, context
|
|
5199
|
+
function parseEmptyStatement(parser, context) {
|
|
5200
|
+
const start = parser.tokenStart;
|
|
5186
5201
|
nextToken(parser, context | 8192);
|
|
5187
|
-
return finishNode(
|
|
5202
|
+
return parser.finishNode({
|
|
5188
5203
|
type: 'EmptyStatement',
|
|
5189
|
-
});
|
|
5204
|
+
}, start);
|
|
5190
5205
|
}
|
|
5191
|
-
function parseThrowStatement(parser, context, privateScope
|
|
5206
|
+
function parseThrowStatement(parser, context, privateScope) {
|
|
5207
|
+
const start = parser.tokenStart;
|
|
5192
5208
|
nextToken(parser, context | 8192);
|
|
5193
5209
|
if (parser.flags & 1)
|
|
5194
5210
|
report(parser, 90);
|
|
5195
|
-
const argument = parseExpressions(parser, context, privateScope, 0, 1, parser.
|
|
5211
|
+
const argument = parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart);
|
|
5196
5212
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5197
|
-
return finishNode(
|
|
5213
|
+
return parser.finishNode({
|
|
5198
5214
|
type: 'ThrowStatement',
|
|
5199
5215
|
argument,
|
|
5200
|
-
});
|
|
5216
|
+
}, start);
|
|
5201
5217
|
}
|
|
5202
|
-
function parseIfStatement(parser, context, scope, privateScope, labels
|
|
5218
|
+
function parseIfStatement(parser, context, scope, privateScope, labels) {
|
|
5219
|
+
const start = parser.tokenStart;
|
|
5203
5220
|
nextToken(parser, context);
|
|
5204
5221
|
consume(parser, context | 8192, 67174411);
|
|
5205
5222
|
parser.assignable = 1;
|
|
5206
|
-
const test = parseExpressions(parser, context, privateScope, 0, 1, parser.
|
|
5223
|
+
const test = parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart);
|
|
5207
5224
|
consume(parser, context | 8192, 16);
|
|
5208
|
-
const consequent = parseConsequentOrAlternative(parser, context, scope, privateScope, labels
|
|
5225
|
+
const consequent = parseConsequentOrAlternative(parser, context, scope, privateScope, labels);
|
|
5209
5226
|
let alternate = null;
|
|
5210
5227
|
if (parser.getToken() === 20563) {
|
|
5211
5228
|
nextToken(parser, context | 8192);
|
|
5212
|
-
alternate = parseConsequentOrAlternative(parser, context, scope, privateScope, labels
|
|
5229
|
+
alternate = parseConsequentOrAlternative(parser, context, scope, privateScope, labels);
|
|
5213
5230
|
}
|
|
5214
|
-
return finishNode(
|
|
5231
|
+
return parser.finishNode({
|
|
5215
5232
|
type: 'IfStatement',
|
|
5216
5233
|
test,
|
|
5217
5234
|
consequent,
|
|
5218
5235
|
alternate,
|
|
5219
|
-
});
|
|
5236
|
+
}, start);
|
|
5220
5237
|
}
|
|
5221
|
-
function parseConsequentOrAlternative(parser, context, scope, privateScope, labels
|
|
5238
|
+
function parseConsequentOrAlternative(parser, context, scope, privateScope, labels) {
|
|
5239
|
+
const { tokenStart } = parser;
|
|
5222
5240
|
return context & 256 ||
|
|
5223
5241
|
(context & 64) === 0 ||
|
|
5224
5242
|
parser.getToken() !== 86104
|
|
5225
|
-
? parseStatement(parser, context, scope, privateScope, 0, { $: labels }, 0
|
|
5226
|
-
: parseFunctionDeclaration(parser, context, addChildScope(scope, 2), privateScope, 0, 0, 0, 0,
|
|
5243
|
+
? parseStatement(parser, context, scope, privateScope, 0, { $: labels }, 0)
|
|
5244
|
+
: parseFunctionDeclaration(parser, context, addChildScope(scope, 2), privateScope, 0, 0, 0, 0, tokenStart);
|
|
5227
5245
|
}
|
|
5228
|
-
function parseSwitchStatement(parser, context, scope, privateScope, labels
|
|
5246
|
+
function parseSwitchStatement(parser, context, scope, privateScope, labels) {
|
|
5247
|
+
const start = parser.tokenStart;
|
|
5229
5248
|
nextToken(parser, context);
|
|
5230
5249
|
consume(parser, context | 8192, 67174411);
|
|
5231
|
-
const discriminant = parseExpressions(parser, context, privateScope, 0, 1, parser.
|
|
5250
|
+
const discriminant = parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart);
|
|
5232
5251
|
consume(parser, context, 16);
|
|
5233
5252
|
consume(parser, context, 2162700);
|
|
5234
5253
|
const cases = [];
|
|
@@ -5236,11 +5255,11 @@ function parseSwitchStatement(parser, context, scope, privateScope, labels, star
|
|
|
5236
5255
|
if (scope)
|
|
5237
5256
|
scope = addChildScope(scope, 8);
|
|
5238
5257
|
while (parser.getToken() !== 1074790415) {
|
|
5239
|
-
const {
|
|
5258
|
+
const { tokenStart } = parser;
|
|
5240
5259
|
let test = null;
|
|
5241
5260
|
const consequent = [];
|
|
5242
5261
|
if (consumeOpt(parser, context | 8192, 20556)) {
|
|
5243
|
-
test = parseExpressions(parser, context, privateScope, 0, 1, parser.
|
|
5262
|
+
test = parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart);
|
|
5244
5263
|
}
|
|
5245
5264
|
else {
|
|
5246
5265
|
consume(parser, context | 8192, 20561);
|
|
@@ -5256,37 +5275,39 @@ function parseSwitchStatement(parser, context, scope, privateScope, labels, star
|
|
|
5256
5275
|
$: labels,
|
|
5257
5276
|
}));
|
|
5258
5277
|
}
|
|
5259
|
-
cases.push(finishNode(
|
|
5278
|
+
cases.push(parser.finishNode({
|
|
5260
5279
|
type: 'SwitchCase',
|
|
5261
5280
|
test,
|
|
5262
5281
|
consequent,
|
|
5263
|
-
}));
|
|
5282
|
+
}, tokenStart));
|
|
5264
5283
|
}
|
|
5265
5284
|
consume(parser, context | 8192, 1074790415);
|
|
5266
|
-
return finishNode(
|
|
5285
|
+
return parser.finishNode({
|
|
5267
5286
|
type: 'SwitchStatement',
|
|
5268
5287
|
discriminant,
|
|
5269
5288
|
cases,
|
|
5270
|
-
});
|
|
5289
|
+
}, start);
|
|
5271
5290
|
}
|
|
5272
|
-
function parseWhileStatement(parser, context, scope, privateScope, labels
|
|
5291
|
+
function parseWhileStatement(parser, context, scope, privateScope, labels) {
|
|
5292
|
+
const start = parser.tokenStart;
|
|
5273
5293
|
nextToken(parser, context);
|
|
5274
5294
|
consume(parser, context | 8192, 67174411);
|
|
5275
|
-
const test = parseExpressions(parser, context, privateScope, 0, 1, parser.
|
|
5295
|
+
const test = parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart);
|
|
5276
5296
|
consume(parser, context | 8192, 16);
|
|
5277
5297
|
const body = parseIterationStatementBody(parser, context, scope, privateScope, labels);
|
|
5278
|
-
return finishNode(
|
|
5298
|
+
return parser.finishNode({
|
|
5279
5299
|
type: 'WhileStatement',
|
|
5280
5300
|
test,
|
|
5281
5301
|
body,
|
|
5282
|
-
});
|
|
5302
|
+
}, start);
|
|
5283
5303
|
}
|
|
5284
5304
|
function parseIterationStatementBody(parser, context, scope, privateScope, labels) {
|
|
5285
|
-
return parseStatement(parser, ((context | 33554432) ^ 33554432) | 32768, scope, privateScope, 0, { loop: 1, $: labels }, 0
|
|
5305
|
+
return parseStatement(parser, ((context | 33554432) ^ 33554432) | 32768, scope, privateScope, 0, { loop: 1, $: labels }, 0);
|
|
5286
5306
|
}
|
|
5287
|
-
function parseContinueStatement(parser, context, labels
|
|
5307
|
+
function parseContinueStatement(parser, context, labels) {
|
|
5288
5308
|
if ((context & 32768) === 0)
|
|
5289
5309
|
report(parser, 68);
|
|
5310
|
+
const start = parser.tokenStart;
|
|
5290
5311
|
nextToken(parser, context);
|
|
5291
5312
|
let label = null;
|
|
5292
5313
|
if ((parser.flags & 1) === 0 && parser.getToken() & 143360) {
|
|
@@ -5296,12 +5317,13 @@ function parseContinueStatement(parser, context, labels, start, line, column) {
|
|
|
5296
5317
|
report(parser, 138, tokenValue);
|
|
5297
5318
|
}
|
|
5298
5319
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5299
|
-
return finishNode(
|
|
5320
|
+
return parser.finishNode({
|
|
5300
5321
|
type: 'ContinueStatement',
|
|
5301
5322
|
label,
|
|
5302
|
-
});
|
|
5323
|
+
}, start);
|
|
5303
5324
|
}
|
|
5304
|
-
function parseBreakStatement(parser, context, labels
|
|
5325
|
+
function parseBreakStatement(parser, context, labels) {
|
|
5326
|
+
const start = parser.tokenStart;
|
|
5305
5327
|
nextToken(parser, context | 8192);
|
|
5306
5328
|
let label = null;
|
|
5307
5329
|
if ((parser.flags & 1) === 0 && parser.getToken() & 143360) {
|
|
@@ -5314,58 +5336,61 @@ function parseBreakStatement(parser, context, labels, start, line, column) {
|
|
|
5314
5336
|
report(parser, 69);
|
|
5315
5337
|
}
|
|
5316
5338
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5317
|
-
return finishNode(
|
|
5339
|
+
return parser.finishNode({
|
|
5318
5340
|
type: 'BreakStatement',
|
|
5319
5341
|
label,
|
|
5320
|
-
});
|
|
5342
|
+
}, start);
|
|
5321
5343
|
}
|
|
5322
|
-
function parseWithStatement(parser, context, scope, privateScope, labels
|
|
5344
|
+
function parseWithStatement(parser, context, scope, privateScope, labels) {
|
|
5345
|
+
const start = parser.tokenStart;
|
|
5323
5346
|
nextToken(parser, context);
|
|
5324
5347
|
if (context & 256)
|
|
5325
5348
|
report(parser, 91);
|
|
5326
5349
|
consume(parser, context | 8192, 67174411);
|
|
5327
|
-
const object = parseExpressions(parser, context, privateScope, 0, 1, parser.
|
|
5350
|
+
const object = parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart);
|
|
5328
5351
|
consume(parser, context | 8192, 16);
|
|
5329
|
-
const body = parseStatement(parser, context, scope, privateScope, 2, labels, 0
|
|
5330
|
-
return finishNode(
|
|
5352
|
+
const body = parseStatement(parser, context, scope, privateScope, 2, labels, 0);
|
|
5353
|
+
return parser.finishNode({
|
|
5331
5354
|
type: 'WithStatement',
|
|
5332
5355
|
object,
|
|
5333
5356
|
body,
|
|
5334
|
-
});
|
|
5357
|
+
}, start);
|
|
5335
5358
|
}
|
|
5336
|
-
function parseDebuggerStatement(parser, context
|
|
5359
|
+
function parseDebuggerStatement(parser, context) {
|
|
5360
|
+
const start = parser.tokenStart;
|
|
5337
5361
|
nextToken(parser, context | 8192);
|
|
5338
5362
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5339
|
-
return finishNode(
|
|
5363
|
+
return parser.finishNode({
|
|
5340
5364
|
type: 'DebuggerStatement',
|
|
5341
|
-
});
|
|
5365
|
+
}, start);
|
|
5342
5366
|
}
|
|
5343
|
-
function parseTryStatement(parser, context, scope, privateScope, labels
|
|
5367
|
+
function parseTryStatement(parser, context, scope, privateScope, labels) {
|
|
5368
|
+
const start = parser.tokenStart;
|
|
5344
5369
|
nextToken(parser, context | 8192);
|
|
5345
5370
|
const firstScope = scope ? addChildScope(scope, 32) : void 0;
|
|
5346
|
-
const block = parseBlock(parser, context, firstScope, privateScope, { $: labels }, parser.
|
|
5347
|
-
const {
|
|
5371
|
+
const block = parseBlock(parser, context, firstScope, privateScope, { $: labels }, parser.tokenStart);
|
|
5372
|
+
const { tokenStart } = parser;
|
|
5348
5373
|
const handler = consumeOpt(parser, context | 8192, 20557)
|
|
5349
|
-
? parseCatchBlock(parser, context, scope, privateScope, labels,
|
|
5374
|
+
? parseCatchBlock(parser, context, scope, privateScope, labels, tokenStart)
|
|
5350
5375
|
: null;
|
|
5351
5376
|
let finalizer = null;
|
|
5352
5377
|
if (parser.getToken() === 20566) {
|
|
5353
5378
|
nextToken(parser, context | 8192);
|
|
5354
5379
|
const finalizerScope = firstScope ? addChildScope(scope, 4) : void 0;
|
|
5355
|
-
const block = parseBlock(parser, context, finalizerScope, privateScope, { $: labels }, parser.
|
|
5380
|
+
const block = parseBlock(parser, context, finalizerScope, privateScope, { $: labels }, parser.tokenStart);
|
|
5356
5381
|
finalizer = block;
|
|
5357
5382
|
}
|
|
5358
5383
|
if (!handler && !finalizer) {
|
|
5359
5384
|
report(parser, 88);
|
|
5360
5385
|
}
|
|
5361
|
-
return finishNode(
|
|
5386
|
+
return parser.finishNode({
|
|
5362
5387
|
type: 'TryStatement',
|
|
5363
5388
|
block,
|
|
5364
5389
|
handler,
|
|
5365
5390
|
finalizer,
|
|
5366
|
-
});
|
|
5391
|
+
}, start);
|
|
5367
5392
|
}
|
|
5368
|
-
function parseCatchBlock(parser, context, scope, privateScope, labels, start
|
|
5393
|
+
function parseCatchBlock(parser, context, scope, privateScope, labels, start) {
|
|
5369
5394
|
let param = null;
|
|
5370
5395
|
let additionalScope = scope;
|
|
5371
5396
|
if (consumeOpt(parser, context, 67174411)) {
|
|
@@ -5373,7 +5398,7 @@ function parseCatchBlock(parser, context, scope, privateScope, labels, start, li
|
|
|
5373
5398
|
scope = addChildScope(scope, 4);
|
|
5374
5399
|
param = parseBindingPattern(parser, context, scope, privateScope, (parser.getToken() & 2097152) === 2097152
|
|
5375
5400
|
? 256
|
|
5376
|
-
: 512, 0
|
|
5401
|
+
: 512, 0);
|
|
5377
5402
|
if (parser.getToken() === 18) {
|
|
5378
5403
|
report(parser, 86);
|
|
5379
5404
|
}
|
|
@@ -5384,14 +5409,14 @@ function parseCatchBlock(parser, context, scope, privateScope, labels, start, li
|
|
|
5384
5409
|
}
|
|
5385
5410
|
if (scope)
|
|
5386
5411
|
additionalScope = addChildScope(scope, 64);
|
|
5387
|
-
const body = parseBlock(parser, context, additionalScope, privateScope, { $: labels }, parser.
|
|
5388
|
-
return finishNode(
|
|
5412
|
+
const body = parseBlock(parser, context, additionalScope, privateScope, { $: labels }, parser.tokenStart);
|
|
5413
|
+
return parser.finishNode({
|
|
5389
5414
|
type: 'CatchClause',
|
|
5390
5415
|
param,
|
|
5391
5416
|
body,
|
|
5392
|
-
});
|
|
5417
|
+
}, start);
|
|
5393
5418
|
}
|
|
5394
|
-
function parseStaticBlock(parser, context, scope, privateScope, start
|
|
5419
|
+
function parseStaticBlock(parser, context, scope, privateScope, start) {
|
|
5395
5420
|
if (scope)
|
|
5396
5421
|
scope = addChildScope(scope, 2);
|
|
5397
5422
|
const ctorContext = 131072 | 1048576 | 262144 | 1024 | 32768;
|
|
@@ -5401,76 +5426,79 @@ function parseStaticBlock(parser, context, scope, privateScope, start, line, col
|
|
|
5401
5426
|
524288 |
|
|
5402
5427
|
268435456 |
|
|
5403
5428
|
16777216;
|
|
5404
|
-
return parseBlock(parser, context, scope, privateScope, {}, start,
|
|
5429
|
+
return parseBlock(parser, context, scope, privateScope, {}, start, 'StaticBlock');
|
|
5405
5430
|
}
|
|
5406
|
-
function parseDoWhileStatement(parser, context, scope, privateScope, labels
|
|
5431
|
+
function parseDoWhileStatement(parser, context, scope, privateScope, labels) {
|
|
5432
|
+
const start = parser.tokenStart;
|
|
5407
5433
|
nextToken(parser, context | 8192);
|
|
5408
5434
|
const body = parseIterationStatementBody(parser, context, scope, privateScope, labels);
|
|
5409
5435
|
consume(parser, context, 20578);
|
|
5410
5436
|
consume(parser, context | 8192, 67174411);
|
|
5411
|
-
const test = parseExpressions(parser, context, privateScope, 0, 1, parser.
|
|
5437
|
+
const test = parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart);
|
|
5412
5438
|
consume(parser, context | 8192, 16);
|
|
5413
5439
|
consumeOpt(parser, context | 8192, 1074790417);
|
|
5414
|
-
return finishNode(
|
|
5440
|
+
return parser.finishNode({
|
|
5415
5441
|
type: 'DoWhileStatement',
|
|
5416
5442
|
body,
|
|
5417
5443
|
test,
|
|
5418
|
-
});
|
|
5444
|
+
}, start);
|
|
5419
5445
|
}
|
|
5420
|
-
function parseLetIdentOrVarDeclarationStatement(parser, context, scope, privateScope, origin
|
|
5421
|
-
const { tokenValue } = parser;
|
|
5446
|
+
function parseLetIdentOrVarDeclarationStatement(parser, context, scope, privateScope, origin) {
|
|
5447
|
+
const { tokenValue, tokenStart } = parser;
|
|
5422
5448
|
const token = parser.getToken();
|
|
5423
5449
|
let expr = parseIdentifier(parser, context);
|
|
5424
5450
|
if (parser.getToken() & (143360 | 2097152)) {
|
|
5425
5451
|
const declarations = parseVariableDeclarationList(parser, context, scope, privateScope, 8, 0);
|
|
5426
5452
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5427
|
-
return finishNode(
|
|
5453
|
+
return parser.finishNode({
|
|
5428
5454
|
type: 'VariableDeclaration',
|
|
5429
5455
|
kind: 'let',
|
|
5430
5456
|
declarations,
|
|
5431
|
-
});
|
|
5457
|
+
}, tokenStart);
|
|
5432
5458
|
}
|
|
5433
5459
|
parser.assignable = 1;
|
|
5434
5460
|
if (context & 256)
|
|
5435
5461
|
report(parser, 85);
|
|
5436
5462
|
if (parser.getToken() === 21) {
|
|
5437
|
-
return parseLabelledStatement(parser, context, scope, privateScope, origin, {}, tokenValue, expr, token, 0,
|
|
5463
|
+
return parseLabelledStatement(parser, context, scope, privateScope, origin, {}, tokenValue, expr, token, 0, tokenStart);
|
|
5438
5464
|
}
|
|
5439
5465
|
if (parser.getToken() === 10) {
|
|
5440
5466
|
let scope = void 0;
|
|
5441
5467
|
if (context & 16)
|
|
5442
5468
|
scope = createArrowHeadParsingScope(parser, context, tokenValue);
|
|
5443
5469
|
parser.flags = (parser.flags | 128) ^ 128;
|
|
5444
|
-
expr = parseArrowFunctionExpression(parser, context, scope, privateScope, [expr], 0,
|
|
5470
|
+
expr = parseArrowFunctionExpression(parser, context, scope, privateScope, [expr], 0, tokenStart);
|
|
5445
5471
|
}
|
|
5446
5472
|
else {
|
|
5447
|
-
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0,
|
|
5448
|
-
expr = parseAssignmentExpression(parser, context, privateScope, 0, 0,
|
|
5473
|
+
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0, tokenStart);
|
|
5474
|
+
expr = parseAssignmentExpression(parser, context, privateScope, 0, 0, tokenStart, expr);
|
|
5449
5475
|
}
|
|
5450
5476
|
if (parser.getToken() === 18) {
|
|
5451
|
-
expr = parseSequenceExpression(parser, context, privateScope, 0,
|
|
5477
|
+
expr = parseSequenceExpression(parser, context, privateScope, 0, tokenStart, expr);
|
|
5452
5478
|
}
|
|
5453
|
-
return parseExpressionStatement(parser, context, expr,
|
|
5479
|
+
return parseExpressionStatement(parser, context, expr, tokenStart);
|
|
5454
5480
|
}
|
|
5455
|
-
function parseLexicalDeclaration(parser, context, scope, privateScope, kind, origin
|
|
5481
|
+
function parseLexicalDeclaration(parser, context, scope, privateScope, kind, origin) {
|
|
5482
|
+
const start = parser.tokenStart;
|
|
5456
5483
|
nextToken(parser, context);
|
|
5457
5484
|
const declarations = parseVariableDeclarationList(parser, context, scope, privateScope, kind, origin);
|
|
5458
5485
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5459
|
-
return finishNode(
|
|
5486
|
+
return parser.finishNode({
|
|
5460
5487
|
type: 'VariableDeclaration',
|
|
5461
5488
|
kind: kind & 8 ? 'let' : 'const',
|
|
5462
5489
|
declarations,
|
|
5463
|
-
});
|
|
5490
|
+
}, start);
|
|
5464
5491
|
}
|
|
5465
|
-
function parseVariableStatement(parser, context, scope, privateScope, origin
|
|
5492
|
+
function parseVariableStatement(parser, context, scope, privateScope, origin) {
|
|
5493
|
+
const start = parser.tokenStart;
|
|
5466
5494
|
nextToken(parser, context);
|
|
5467
5495
|
const declarations = parseVariableDeclarationList(parser, context, scope, privateScope, 4, origin);
|
|
5468
5496
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5469
|
-
return finishNode(
|
|
5497
|
+
return parser.finishNode({
|
|
5470
5498
|
type: 'VariableDeclaration',
|
|
5471
5499
|
kind: 'var',
|
|
5472
5500
|
declarations,
|
|
5473
|
-
});
|
|
5501
|
+
}, start);
|
|
5474
5502
|
}
|
|
5475
5503
|
function parseVariableDeclarationList(parser, context, scope, privateScope, kind, origin) {
|
|
5476
5504
|
let bindingCount = 1;
|
|
@@ -5487,18 +5515,18 @@ function parseVariableDeclarationList(parser, context, scope, privateScope, kind
|
|
|
5487
5515
|
return list;
|
|
5488
5516
|
}
|
|
5489
5517
|
function parseVariableDeclaration(parser, context, scope, privateScope, kind, origin) {
|
|
5490
|
-
const {
|
|
5518
|
+
const { tokenStart } = parser;
|
|
5491
5519
|
const token = parser.getToken();
|
|
5492
5520
|
let init = null;
|
|
5493
|
-
const id = parseBindingPattern(parser, context, scope, privateScope, kind, origin
|
|
5521
|
+
const id = parseBindingPattern(parser, context, scope, privateScope, kind, origin);
|
|
5494
5522
|
if (parser.getToken() === 1077936155) {
|
|
5495
5523
|
nextToken(parser, context | 8192);
|
|
5496
|
-
init = parseExpression(parser, context, privateScope, 1, 0, parser.
|
|
5524
|
+
init = parseExpression(parser, context, privateScope, 1, 0, parser.tokenStart);
|
|
5497
5525
|
if (origin & 32 || (token & 2097152) === 0) {
|
|
5498
5526
|
if (parser.getToken() === 471156 ||
|
|
5499
5527
|
(parser.getToken() === 8673330 &&
|
|
5500
5528
|
(token & 2097152 || (kind & 4) === 0 || context & 256))) {
|
|
5501
|
-
reportMessageAt(
|
|
5529
|
+
reportMessageAt(tokenStart, parser.currentLocation, 60, parser.getToken() === 471156 ? 'of' : 'in');
|
|
5502
5530
|
}
|
|
5503
5531
|
}
|
|
5504
5532
|
}
|
|
@@ -5506,13 +5534,14 @@ function parseVariableDeclaration(parser, context, scope, privateScope, kind, or
|
|
|
5506
5534
|
(parser.getToken() & 262144) !== 262144) {
|
|
5507
5535
|
report(parser, 59, kind & 16 ? 'const' : 'destructuring');
|
|
5508
5536
|
}
|
|
5509
|
-
return finishNode(
|
|
5537
|
+
return parser.finishNode({
|
|
5510
5538
|
type: 'VariableDeclarator',
|
|
5511
5539
|
id,
|
|
5512
5540
|
init,
|
|
5513
|
-
});
|
|
5541
|
+
}, tokenStart);
|
|
5514
5542
|
}
|
|
5515
|
-
function parseForStatement(parser, context, scope, privateScope, labels
|
|
5543
|
+
function parseForStatement(parser, context, scope, privateScope, labels) {
|
|
5544
|
+
const start = parser.tokenStart;
|
|
5516
5545
|
nextToken(parser, context);
|
|
5517
5546
|
const forAwait = ((context & 524288) > 0 || ((context & 512) > 0 && (context & 2048) > 0)) &&
|
|
5518
5547
|
consumeOpt(parser, context, 209006);
|
|
@@ -5527,7 +5556,7 @@ function parseForStatement(parser, context, scope, privateScope, labels, start,
|
|
|
5527
5556
|
parser.getToken() === 241737 ||
|
|
5528
5557
|
parser.getToken() === 86090;
|
|
5529
5558
|
let right;
|
|
5530
|
-
const {
|
|
5559
|
+
const { tokenStart } = parser;
|
|
5531
5560
|
const token = parser.getToken();
|
|
5532
5561
|
if (isVarDecl) {
|
|
5533
5562
|
if (token === 241737) {
|
|
@@ -5538,11 +5567,11 @@ function parseForStatement(parser, context, scope, privateScope, labels, start,
|
|
|
5538
5567
|
report(parser, 67);
|
|
5539
5568
|
}
|
|
5540
5569
|
else {
|
|
5541
|
-
init = finishNode(
|
|
5570
|
+
init = parser.finishNode({
|
|
5542
5571
|
type: 'VariableDeclaration',
|
|
5543
5572
|
kind: 'let',
|
|
5544
5573
|
declarations: parseVariableDeclarationList(parser, context | 33554432, scope, privateScope, 8, 32),
|
|
5545
|
-
});
|
|
5574
|
+
}, tokenStart);
|
|
5546
5575
|
}
|
|
5547
5576
|
parser.assignable = 1;
|
|
5548
5577
|
}
|
|
@@ -5552,14 +5581,14 @@ function parseForStatement(parser, context, scope, privateScope, labels, start,
|
|
|
5552
5581
|
else {
|
|
5553
5582
|
isVarDecl = false;
|
|
5554
5583
|
parser.assignable = 1;
|
|
5555
|
-
init = parseMemberOrUpdateExpression(parser, context, privateScope, init, 0, 0,
|
|
5584
|
+
init = parseMemberOrUpdateExpression(parser, context, privateScope, init, 0, 0, tokenStart);
|
|
5556
5585
|
if (parser.getToken() === 471156)
|
|
5557
5586
|
report(parser, 115);
|
|
5558
5587
|
}
|
|
5559
5588
|
}
|
|
5560
5589
|
else {
|
|
5561
5590
|
nextToken(parser, context);
|
|
5562
|
-
init = finishNode(
|
|
5591
|
+
init = parser.finishNode(token === 86088
|
|
5563
5592
|
? {
|
|
5564
5593
|
type: 'VariableDeclaration',
|
|
5565
5594
|
kind: 'var',
|
|
@@ -5569,7 +5598,7 @@ function parseForStatement(parser, context, scope, privateScope, labels, start,
|
|
|
5569
5598
|
type: 'VariableDeclaration',
|
|
5570
5599
|
kind: 'const',
|
|
5571
5600
|
declarations: parseVariableDeclarationList(parser, context | 33554432, scope, privateScope, 16, 32),
|
|
5572
|
-
});
|
|
5601
|
+
}, tokenStart);
|
|
5573
5602
|
parser.assignable = 1;
|
|
5574
5603
|
}
|
|
5575
5604
|
}
|
|
@@ -5578,20 +5607,21 @@ function parseForStatement(parser, context, scope, privateScope, labels, start,
|
|
|
5578
5607
|
report(parser, 82);
|
|
5579
5608
|
}
|
|
5580
5609
|
else if ((token & 2097152) === 2097152) {
|
|
5610
|
+
const patternStart = parser.tokenStart;
|
|
5581
5611
|
init =
|
|
5582
5612
|
token === 2162700
|
|
5583
|
-
? parseObjectLiteralOrPattern(parser, context, void 0, privateScope, 1, 0, 0, 2, 32
|
|
5584
|
-
: parseArrayExpressionOrPattern(parser, context, void 0, privateScope, 1, 0, 0, 2, 32
|
|
5613
|
+
? parseObjectLiteralOrPattern(parser, context, void 0, privateScope, 1, 0, 0, 2, 32)
|
|
5614
|
+
: parseArrayExpressionOrPattern(parser, context, void 0, privateScope, 1, 0, 0, 2, 32);
|
|
5585
5615
|
destructible = parser.destructible;
|
|
5586
5616
|
if (destructible & 64) {
|
|
5587
5617
|
report(parser, 63);
|
|
5588
5618
|
}
|
|
5589
5619
|
parser.assignable =
|
|
5590
5620
|
destructible & 16 ? 2 : 1;
|
|
5591
|
-
init = parseMemberOrUpdateExpression(parser, context | 33554432, privateScope, init, 0, 0,
|
|
5621
|
+
init = parseMemberOrUpdateExpression(parser, context | 33554432, privateScope, init, 0, 0, patternStart);
|
|
5592
5622
|
}
|
|
5593
5623
|
else {
|
|
5594
|
-
init = parseLeftHandSideExpression(parser, context | 33554432, privateScope, 1, 0, 1
|
|
5624
|
+
init = parseLeftHandSideExpression(parser, context | 33554432, privateScope, 1, 0, 1);
|
|
5595
5625
|
}
|
|
5596
5626
|
if ((parser.getToken() & 262144) === 262144) {
|
|
5597
5627
|
if (parser.getToken() === 471156) {
|
|
@@ -5599,16 +5629,16 @@ function parseForStatement(parser, context, scope, privateScope, labels, start,
|
|
|
5599
5629
|
report(parser, 80, forAwait ? 'await' : 'of');
|
|
5600
5630
|
reinterpretToPattern(parser, init);
|
|
5601
5631
|
nextToken(parser, context | 8192);
|
|
5602
|
-
right = parseExpression(parser, context, privateScope, 1, 0, parser.
|
|
5632
|
+
right = parseExpression(parser, context, privateScope, 1, 0, parser.tokenStart);
|
|
5603
5633
|
consume(parser, context | 8192, 16);
|
|
5604
5634
|
const body = parseIterationStatementBody(parser, context, scope, privateScope, labels);
|
|
5605
|
-
return finishNode(
|
|
5635
|
+
return parser.finishNode({
|
|
5606
5636
|
type: 'ForOfStatement',
|
|
5607
5637
|
left: init,
|
|
5608
5638
|
right,
|
|
5609
5639
|
body,
|
|
5610
5640
|
await: forAwait,
|
|
5611
|
-
});
|
|
5641
|
+
}, start);
|
|
5612
5642
|
}
|
|
5613
5643
|
if (parser.assignable & 2)
|
|
5614
5644
|
report(parser, 80, 'in');
|
|
@@ -5616,15 +5646,15 @@ function parseForStatement(parser, context, scope, privateScope, labels, start,
|
|
|
5616
5646
|
nextToken(parser, context | 8192);
|
|
5617
5647
|
if (forAwait)
|
|
5618
5648
|
report(parser, 82);
|
|
5619
|
-
right = parseExpressions(parser, context, privateScope, 0, 1, parser.
|
|
5649
|
+
right = parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart);
|
|
5620
5650
|
consume(parser, context | 8192, 16);
|
|
5621
5651
|
const body = parseIterationStatementBody(parser, context, scope, privateScope, labels);
|
|
5622
|
-
return finishNode(
|
|
5652
|
+
return parser.finishNode({
|
|
5623
5653
|
type: 'ForInStatement',
|
|
5624
5654
|
body,
|
|
5625
5655
|
left: init,
|
|
5626
5656
|
right,
|
|
5627
|
-
});
|
|
5657
|
+
}, start);
|
|
5628
5658
|
}
|
|
5629
5659
|
if (forAwait)
|
|
5630
5660
|
report(parser, 82);
|
|
@@ -5632,25 +5662,25 @@ function parseForStatement(parser, context, scope, privateScope, labels, start,
|
|
|
5632
5662
|
if (destructible & 8 && parser.getToken() !== 1077936155) {
|
|
5633
5663
|
report(parser, 80, 'loop');
|
|
5634
5664
|
}
|
|
5635
|
-
init = parseAssignmentExpression(parser, context | 33554432, privateScope, 0, 0,
|
|
5665
|
+
init = parseAssignmentExpression(parser, context | 33554432, privateScope, 0, 0, tokenStart, init);
|
|
5636
5666
|
}
|
|
5637
5667
|
if (parser.getToken() === 18)
|
|
5638
|
-
init = parseSequenceExpression(parser, context, privateScope, 0, parser.
|
|
5668
|
+
init = parseSequenceExpression(parser, context, privateScope, 0, parser.tokenStart, init);
|
|
5639
5669
|
consume(parser, context | 8192, 1074790417);
|
|
5640
5670
|
if (parser.getToken() !== 1074790417)
|
|
5641
|
-
test = parseExpressions(parser, context, privateScope, 0, 1, parser.
|
|
5671
|
+
test = parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart);
|
|
5642
5672
|
consume(parser, context | 8192, 1074790417);
|
|
5643
5673
|
if (parser.getToken() !== 16)
|
|
5644
|
-
update = parseExpressions(parser, context, privateScope, 0, 1, parser.
|
|
5674
|
+
update = parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart);
|
|
5645
5675
|
consume(parser, context | 8192, 16);
|
|
5646
5676
|
const body = parseIterationStatementBody(parser, context, scope, privateScope, labels);
|
|
5647
|
-
return finishNode(
|
|
5677
|
+
return parser.finishNode({
|
|
5648
5678
|
type: 'ForStatement',
|
|
5649
5679
|
init,
|
|
5650
5680
|
test,
|
|
5651
5681
|
update,
|
|
5652
5682
|
body,
|
|
5653
|
-
});
|
|
5683
|
+
}, start);
|
|
5654
5684
|
}
|
|
5655
5685
|
function parseRestrictedIdentifier(parser, context, scope) {
|
|
5656
5686
|
if (!isValidIdentifier(context, parser.getToken()))
|
|
@@ -5662,12 +5692,10 @@ function parseRestrictedIdentifier(parser, context, scope) {
|
|
|
5662
5692
|
return parseIdentifier(parser, context);
|
|
5663
5693
|
}
|
|
5664
5694
|
function parseImportDeclaration(parser, context, scope) {
|
|
5665
|
-
const start = parser.
|
|
5666
|
-
const line = parser.tokenLine;
|
|
5667
|
-
const column = parser.tokenColumn;
|
|
5695
|
+
const start = parser.tokenStart;
|
|
5668
5696
|
nextToken(parser, context);
|
|
5669
5697
|
let source = null;
|
|
5670
|
-
const {
|
|
5698
|
+
const { tokenStart } = parser;
|
|
5671
5699
|
let specifiers = [];
|
|
5672
5700
|
if (parser.getToken() === 134283267) {
|
|
5673
5701
|
source = parseLiteral(parser, context);
|
|
@@ -5676,10 +5704,10 @@ function parseImportDeclaration(parser, context, scope) {
|
|
|
5676
5704
|
if (parser.getToken() & 143360) {
|
|
5677
5705
|
const local = parseRestrictedIdentifier(parser, context, scope);
|
|
5678
5706
|
specifiers = [
|
|
5679
|
-
finishNode(
|
|
5707
|
+
parser.finishNode({
|
|
5680
5708
|
type: 'ImportDefaultSpecifier',
|
|
5681
5709
|
local,
|
|
5682
|
-
}),
|
|
5710
|
+
}, tokenStart),
|
|
5683
5711
|
];
|
|
5684
5712
|
if (consumeOpt(parser, context, 18)) {
|
|
5685
5713
|
switch (parser.getToken()) {
|
|
@@ -5703,9 +5731,9 @@ function parseImportDeclaration(parser, context, scope) {
|
|
|
5703
5731
|
parseImportSpecifierOrNamedImports(parser, context, scope, specifiers);
|
|
5704
5732
|
break;
|
|
5705
5733
|
case 67174411:
|
|
5706
|
-
return parseImportCallDeclaration(parser, context, undefined, start
|
|
5734
|
+
return parseImportCallDeclaration(parser, context, undefined, start);
|
|
5707
5735
|
case 67108877:
|
|
5708
|
-
return parseImportMetaDeclaration(parser, context, start
|
|
5736
|
+
return parseImportMetaDeclaration(parser, context, start);
|
|
5709
5737
|
default:
|
|
5710
5738
|
report(parser, 30, KeywordDescTable[parser.getToken() & 255]);
|
|
5711
5739
|
}
|
|
@@ -5720,19 +5748,19 @@ function parseImportDeclaration(parser, context, scope) {
|
|
|
5720
5748
|
attributes,
|
|
5721
5749
|
};
|
|
5722
5750
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5723
|
-
return finishNode(
|
|
5751
|
+
return parser.finishNode(node, start);
|
|
5724
5752
|
}
|
|
5725
5753
|
function parseImportNamespaceSpecifier(parser, context, scope) {
|
|
5726
|
-
const {
|
|
5754
|
+
const { tokenStart } = parser;
|
|
5727
5755
|
nextToken(parser, context);
|
|
5728
5756
|
consume(parser, context, 77932);
|
|
5729
5757
|
if ((parser.getToken() & 134217728) === 134217728) {
|
|
5730
|
-
reportMessageAt(
|
|
5758
|
+
reportMessageAt(tokenStart, parser.currentLocation, 30, KeywordDescTable[parser.getToken() & 255]);
|
|
5731
5759
|
}
|
|
5732
|
-
return finishNode(
|
|
5760
|
+
return parser.finishNode({
|
|
5733
5761
|
type: 'ImportNamespaceSpecifier',
|
|
5734
5762
|
local: parseRestrictedIdentifier(parser, context, scope),
|
|
5735
|
-
});
|
|
5763
|
+
}, tokenStart);
|
|
5736
5764
|
}
|
|
5737
5765
|
function parseModuleSpecifier(parser, context) {
|
|
5738
5766
|
consume(parser, context, 209011);
|
|
@@ -5743,7 +5771,7 @@ function parseModuleSpecifier(parser, context) {
|
|
|
5743
5771
|
function parseImportSpecifierOrNamedImports(parser, context, scope, specifiers) {
|
|
5744
5772
|
nextToken(parser, context);
|
|
5745
5773
|
while (parser.getToken() & 143360 || parser.getToken() === 134283267) {
|
|
5746
|
-
let { tokenValue,
|
|
5774
|
+
let { tokenValue, tokenStart } = parser;
|
|
5747
5775
|
const token = parser.getToken();
|
|
5748
5776
|
const imported = parseModuleExportName(parser, context);
|
|
5749
5777
|
let local;
|
|
@@ -5767,41 +5795,39 @@ function parseImportSpecifierOrNamedImports(parser, context, scope, specifiers)
|
|
|
5767
5795
|
}
|
|
5768
5796
|
if (scope)
|
|
5769
5797
|
addBlockName(parser, context, scope, tokenValue, 8, 0);
|
|
5770
|
-
specifiers.push(finishNode(
|
|
5798
|
+
specifiers.push(parser.finishNode({
|
|
5771
5799
|
type: 'ImportSpecifier',
|
|
5772
5800
|
local,
|
|
5773
5801
|
imported,
|
|
5774
|
-
}));
|
|
5802
|
+
}, tokenStart));
|
|
5775
5803
|
if (parser.getToken() !== 1074790415)
|
|
5776
5804
|
consume(parser, context, 18);
|
|
5777
5805
|
}
|
|
5778
5806
|
consume(parser, context, 1074790415);
|
|
5779
5807
|
return specifiers;
|
|
5780
5808
|
}
|
|
5781
|
-
function parseImportMetaDeclaration(parser, context, start
|
|
5782
|
-
let expr = parseImportMetaExpression(parser, context, finishNode(
|
|
5809
|
+
function parseImportMetaDeclaration(parser, context, start) {
|
|
5810
|
+
let expr = parseImportMetaExpression(parser, context, parser.finishNode({
|
|
5783
5811
|
type: 'Identifier',
|
|
5784
5812
|
name: 'import',
|
|
5785
|
-
}
|
|
5786
|
-
expr = parseMemberOrUpdateExpression(parser, context, undefined, expr, 0, 0, start
|
|
5787
|
-
expr = parseAssignmentExpression(parser, context, undefined, 0, 0, start,
|
|
5813
|
+
}, start), start);
|
|
5814
|
+
expr = parseMemberOrUpdateExpression(parser, context, undefined, expr, 0, 0, start);
|
|
5815
|
+
expr = parseAssignmentExpression(parser, context, undefined, 0, 0, start, expr);
|
|
5788
5816
|
if (parser.getToken() === 18) {
|
|
5789
|
-
expr = parseSequenceExpression(parser, context, undefined, 0, start,
|
|
5817
|
+
expr = parseSequenceExpression(parser, context, undefined, 0, start, expr);
|
|
5790
5818
|
}
|
|
5791
|
-
return parseExpressionStatement(parser, context, expr, start
|
|
5819
|
+
return parseExpressionStatement(parser, context, expr, start);
|
|
5792
5820
|
}
|
|
5793
|
-
function parseImportCallDeclaration(parser, context, privateScope, start
|
|
5794
|
-
let expr = parseImportExpression(parser, context, privateScope, 0, start
|
|
5795
|
-
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0, start
|
|
5821
|
+
function parseImportCallDeclaration(parser, context, privateScope, start) {
|
|
5822
|
+
let expr = parseImportExpression(parser, context, privateScope, 0, start);
|
|
5823
|
+
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0, start);
|
|
5796
5824
|
if (parser.getToken() === 18) {
|
|
5797
|
-
expr = parseSequenceExpression(parser, context, privateScope, 0, start,
|
|
5825
|
+
expr = parseSequenceExpression(parser, context, privateScope, 0, start, expr);
|
|
5798
5826
|
}
|
|
5799
|
-
return parseExpressionStatement(parser, context, expr, start
|
|
5827
|
+
return parseExpressionStatement(parser, context, expr, start);
|
|
5800
5828
|
}
|
|
5801
5829
|
function parseExportDeclaration(parser, context, scope) {
|
|
5802
|
-
const start = parser.
|
|
5803
|
-
const line = parser.tokenLine;
|
|
5804
|
-
const column = parser.tokenColumn;
|
|
5830
|
+
const start = parser.leadingDecorators.decorators.length ? parser.leadingDecorators.start : parser.tokenStart;
|
|
5805
5831
|
nextToken(parser, context | 8192);
|
|
5806
5832
|
const specifiers = [];
|
|
5807
5833
|
let declaration = null;
|
|
@@ -5810,47 +5836,47 @@ function parseExportDeclaration(parser, context, scope) {
|
|
|
5810
5836
|
if (consumeOpt(parser, context | 8192, 20561)) {
|
|
5811
5837
|
switch (parser.getToken()) {
|
|
5812
5838
|
case 86104: {
|
|
5813
|
-
declaration = parseFunctionDeclaration(parser, context, scope, undefined, 4, 1, 1, 0, parser.
|
|
5839
|
+
declaration = parseFunctionDeclaration(parser, context, scope, undefined, 4, 1, 1, 0, parser.tokenStart);
|
|
5814
5840
|
break;
|
|
5815
5841
|
}
|
|
5816
5842
|
case 132:
|
|
5817
5843
|
case 86094:
|
|
5818
|
-
declaration = parseClassDeclaration(parser, context, scope, undefined, 1
|
|
5844
|
+
declaration = parseClassDeclaration(parser, context, scope, undefined, 1);
|
|
5819
5845
|
break;
|
|
5820
5846
|
case 209005: {
|
|
5821
|
-
const {
|
|
5847
|
+
const { tokenStart } = parser;
|
|
5822
5848
|
declaration = parseIdentifier(parser, context);
|
|
5823
5849
|
const { flags } = parser;
|
|
5824
5850
|
if ((flags & 1) === 0) {
|
|
5825
5851
|
if (parser.getToken() === 86104) {
|
|
5826
|
-
declaration = parseFunctionDeclaration(parser, context, scope, undefined, 4, 1, 1, 1,
|
|
5852
|
+
declaration = parseFunctionDeclaration(parser, context, scope, undefined, 4, 1, 1, 1, tokenStart);
|
|
5827
5853
|
}
|
|
5828
5854
|
else {
|
|
5829
5855
|
if (parser.getToken() === 67174411) {
|
|
5830
|
-
declaration = parseAsyncArrowOrCallExpression(parser, context, undefined, declaration, 1, 1, 0, flags,
|
|
5831
|
-
declaration = parseMemberOrUpdateExpression(parser, context, undefined, declaration, 0, 0,
|
|
5832
|
-
declaration = parseAssignmentExpression(parser, context, undefined, 0, 0,
|
|
5856
|
+
declaration = parseAsyncArrowOrCallExpression(parser, context, undefined, declaration, 1, 1, 0, flags, tokenStart);
|
|
5857
|
+
declaration = parseMemberOrUpdateExpression(parser, context, undefined, declaration, 0, 0, tokenStart);
|
|
5858
|
+
declaration = parseAssignmentExpression(parser, context, undefined, 0, 0, tokenStart, declaration);
|
|
5833
5859
|
}
|
|
5834
5860
|
else if (parser.getToken() & 143360) {
|
|
5835
5861
|
if (scope)
|
|
5836
5862
|
scope = createArrowHeadParsingScope(parser, context, parser.tokenValue);
|
|
5837
5863
|
declaration = parseIdentifier(parser, context);
|
|
5838
|
-
declaration = parseArrowFunctionExpression(parser, context, scope, undefined, [declaration], 1,
|
|
5864
|
+
declaration = parseArrowFunctionExpression(parser, context, scope, undefined, [declaration], 1, tokenStart);
|
|
5839
5865
|
}
|
|
5840
5866
|
}
|
|
5841
5867
|
}
|
|
5842
5868
|
break;
|
|
5843
5869
|
}
|
|
5844
5870
|
default:
|
|
5845
|
-
declaration = parseExpression(parser, context, undefined, 1, 0, parser.
|
|
5871
|
+
declaration = parseExpression(parser, context, undefined, 1, 0, parser.tokenStart);
|
|
5846
5872
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5847
5873
|
}
|
|
5848
5874
|
if (scope)
|
|
5849
5875
|
declareUnboundVariable(parser, 'default');
|
|
5850
|
-
return finishNode(
|
|
5876
|
+
return parser.finishNode({
|
|
5851
5877
|
type: 'ExportDefaultDeclaration',
|
|
5852
5878
|
declaration,
|
|
5853
|
-
});
|
|
5879
|
+
}, start);
|
|
5854
5880
|
}
|
|
5855
5881
|
switch (parser.getToken()) {
|
|
5856
5882
|
case 8391476: {
|
|
@@ -5874,7 +5900,7 @@ function parseExportDeclaration(parser, context, scope) {
|
|
|
5874
5900
|
attributes,
|
|
5875
5901
|
};
|
|
5876
5902
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5877
|
-
return finishNode(
|
|
5903
|
+
return parser.finishNode(node, start);
|
|
5878
5904
|
}
|
|
5879
5905
|
case 2162700: {
|
|
5880
5906
|
nextToken(parser, context);
|
|
@@ -5882,7 +5908,7 @@ function parseExportDeclaration(parser, context, scope) {
|
|
|
5882
5908
|
const tmpExportedBindings = [];
|
|
5883
5909
|
let hasLiteralLocal = 0;
|
|
5884
5910
|
while (parser.getToken() & 143360 || parser.getToken() === 134283267) {
|
|
5885
|
-
const {
|
|
5911
|
+
const { tokenStart, tokenValue } = parser;
|
|
5886
5912
|
const local = parseModuleExportName(parser, context);
|
|
5887
5913
|
if (local.type === 'Literal') {
|
|
5888
5914
|
hasLiteralLocal = 1;
|
|
@@ -5906,11 +5932,11 @@ function parseExportDeclaration(parser, context, scope) {
|
|
|
5906
5932
|
}
|
|
5907
5933
|
exported = local;
|
|
5908
5934
|
}
|
|
5909
|
-
specifiers.push(finishNode(
|
|
5935
|
+
specifiers.push(parser.finishNode({
|
|
5910
5936
|
type: 'ExportSpecifier',
|
|
5911
5937
|
local,
|
|
5912
5938
|
exported,
|
|
5913
|
-
}));
|
|
5939
|
+
}, tokenStart));
|
|
5914
5940
|
if (parser.getToken() !== 1074790415)
|
|
5915
5941
|
consume(parser, context, 18);
|
|
5916
5942
|
}
|
|
@@ -5936,26 +5962,27 @@ function parseExportDeclaration(parser, context, scope) {
|
|
|
5936
5962
|
matchOrInsertSemicolon(parser, context | 8192);
|
|
5937
5963
|
break;
|
|
5938
5964
|
}
|
|
5965
|
+
case 132:
|
|
5939
5966
|
case 86094:
|
|
5940
|
-
declaration = parseClassDeclaration(parser, context, scope, undefined, 2
|
|
5967
|
+
declaration = parseClassDeclaration(parser, context, scope, undefined, 2);
|
|
5941
5968
|
break;
|
|
5942
5969
|
case 86104:
|
|
5943
|
-
declaration = parseFunctionDeclaration(parser, context, scope, undefined, 4, 1, 2, 0, parser.
|
|
5970
|
+
declaration = parseFunctionDeclaration(parser, context, scope, undefined, 4, 1, 2, 0, parser.tokenStart);
|
|
5944
5971
|
break;
|
|
5945
5972
|
case 241737:
|
|
5946
|
-
declaration = parseLexicalDeclaration(parser, context, scope, undefined, 8, 64
|
|
5973
|
+
declaration = parseLexicalDeclaration(parser, context, scope, undefined, 8, 64);
|
|
5947
5974
|
break;
|
|
5948
5975
|
case 86090:
|
|
5949
|
-
declaration = parseLexicalDeclaration(parser, context, scope, undefined, 16, 64
|
|
5976
|
+
declaration = parseLexicalDeclaration(parser, context, scope, undefined, 16, 64);
|
|
5950
5977
|
break;
|
|
5951
5978
|
case 86088:
|
|
5952
|
-
declaration = parseVariableStatement(parser, context, scope, undefined, 64
|
|
5979
|
+
declaration = parseVariableStatement(parser, context, scope, undefined, 64);
|
|
5953
5980
|
break;
|
|
5954
5981
|
case 209005: {
|
|
5955
|
-
const {
|
|
5982
|
+
const { tokenStart } = parser;
|
|
5956
5983
|
nextToken(parser, context);
|
|
5957
5984
|
if ((parser.flags & 1) === 0 && parser.getToken() === 86104) {
|
|
5958
|
-
declaration = parseFunctionDeclaration(parser, context, scope, undefined, 4, 1, 2, 1,
|
|
5985
|
+
declaration = parseFunctionDeclaration(parser, context, scope, undefined, 4, 1, 2, 1, tokenStart);
|
|
5959
5986
|
break;
|
|
5960
5987
|
}
|
|
5961
5988
|
}
|
|
@@ -5969,30 +5996,30 @@ function parseExportDeclaration(parser, context, scope) {
|
|
|
5969
5996
|
source,
|
|
5970
5997
|
attributes: attributes,
|
|
5971
5998
|
};
|
|
5972
|
-
return finishNode(
|
|
5999
|
+
return parser.finishNode(node, start);
|
|
5973
6000
|
}
|
|
5974
|
-
function parseExpression(parser, context, privateScope, canAssign, inGroup, start
|
|
5975
|
-
let expr = parsePrimaryExpression(parser, context, privateScope, 2, 0, canAssign, inGroup, 1, start
|
|
5976
|
-
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGroup, 0, start
|
|
5977
|
-
return parseAssignmentExpression(parser, context, privateScope, inGroup, 0, start,
|
|
6001
|
+
function parseExpression(parser, context, privateScope, canAssign, inGroup, start) {
|
|
6002
|
+
let expr = parsePrimaryExpression(parser, context, privateScope, 2, 0, canAssign, inGroup, 1, start);
|
|
6003
|
+
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGroup, 0, start);
|
|
6004
|
+
return parseAssignmentExpression(parser, context, privateScope, inGroup, 0, start, expr);
|
|
5978
6005
|
}
|
|
5979
|
-
function parseSequenceExpression(parser, context, privateScope, inGroup, start,
|
|
6006
|
+
function parseSequenceExpression(parser, context, privateScope, inGroup, start, expr) {
|
|
5980
6007
|
const expressions = [expr];
|
|
5981
6008
|
while (consumeOpt(parser, context | 8192, 18)) {
|
|
5982
|
-
expressions.push(parseExpression(parser, context, privateScope, 1, inGroup, parser.
|
|
6009
|
+
expressions.push(parseExpression(parser, context, privateScope, 1, inGroup, parser.tokenStart));
|
|
5983
6010
|
}
|
|
5984
|
-
return finishNode(
|
|
6011
|
+
return parser.finishNode({
|
|
5985
6012
|
type: 'SequenceExpression',
|
|
5986
6013
|
expressions,
|
|
5987
|
-
});
|
|
6014
|
+
}, start);
|
|
5988
6015
|
}
|
|
5989
|
-
function parseExpressions(parser, context, privateScope, inGroup, canAssign, start
|
|
5990
|
-
const expr = parseExpression(parser, context, privateScope, canAssign, inGroup, start
|
|
6016
|
+
function parseExpressions(parser, context, privateScope, inGroup, canAssign, start) {
|
|
6017
|
+
const expr = parseExpression(parser, context, privateScope, canAssign, inGroup, start);
|
|
5991
6018
|
return parser.getToken() === 18
|
|
5992
|
-
? parseSequenceExpression(parser, context, privateScope, inGroup, start,
|
|
6019
|
+
? parseSequenceExpression(parser, context, privateScope, inGroup, start, expr)
|
|
5993
6020
|
: expr;
|
|
5994
6021
|
}
|
|
5995
|
-
function parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, start,
|
|
6022
|
+
function parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, start, left) {
|
|
5996
6023
|
const token = parser.getToken();
|
|
5997
6024
|
if ((token & 4194304) === 4194304) {
|
|
5998
6025
|
if (parser.assignable & 2)
|
|
@@ -6002,9 +6029,9 @@ function parseAssignmentExpression(parser, context, privateScope, inGroup, isPat
|
|
|
6002
6029
|
reinterpretToPattern(parser, left);
|
|
6003
6030
|
}
|
|
6004
6031
|
nextToken(parser, context | 8192);
|
|
6005
|
-
const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.
|
|
6032
|
+
const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.tokenStart);
|
|
6006
6033
|
parser.assignable = 2;
|
|
6007
|
-
return finishNode(
|
|
6034
|
+
return parser.finishNode(isPattern
|
|
6008
6035
|
? {
|
|
6009
6036
|
type: 'AssignmentPattern',
|
|
6010
6037
|
left,
|
|
@@ -6015,21 +6042,21 @@ function parseAssignmentExpression(parser, context, privateScope, inGroup, isPat
|
|
|
6015
6042
|
left,
|
|
6016
6043
|
operator: KeywordDescTable[token & 255],
|
|
6017
6044
|
right,
|
|
6018
|
-
});
|
|
6045
|
+
}, start);
|
|
6019
6046
|
}
|
|
6020
6047
|
if ((token & 8388608) === 8388608) {
|
|
6021
|
-
left = parseBinaryExpression(parser, context, privateScope, inGroup, start,
|
|
6048
|
+
left = parseBinaryExpression(parser, context, privateScope, inGroup, start, 4, token, left);
|
|
6022
6049
|
}
|
|
6023
6050
|
if (consumeOpt(parser, context | 8192, 22)) {
|
|
6024
|
-
left = parseConditionalExpression(parser, context, privateScope, left, start
|
|
6051
|
+
left = parseConditionalExpression(parser, context, privateScope, left, start);
|
|
6025
6052
|
}
|
|
6026
6053
|
return left;
|
|
6027
6054
|
}
|
|
6028
|
-
function parseAssignmentExpressionOrPattern(parser, context, privateScope, inGroup, isPattern, start,
|
|
6055
|
+
function parseAssignmentExpressionOrPattern(parser, context, privateScope, inGroup, isPattern, start, left) {
|
|
6029
6056
|
const token = parser.getToken();
|
|
6030
6057
|
nextToken(parser, context | 8192);
|
|
6031
|
-
const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.
|
|
6032
|
-
left = finishNode(
|
|
6058
|
+
const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.tokenStart);
|
|
6059
|
+
left = parser.finishNode(isPattern
|
|
6033
6060
|
? {
|
|
6034
6061
|
type: 'AssignmentPattern',
|
|
6035
6062
|
left,
|
|
@@ -6040,24 +6067,24 @@ function parseAssignmentExpressionOrPattern(parser, context, privateScope, inGro
|
|
|
6040
6067
|
left,
|
|
6041
6068
|
operator: KeywordDescTable[token & 255],
|
|
6042
6069
|
right,
|
|
6043
|
-
});
|
|
6070
|
+
}, start);
|
|
6044
6071
|
parser.assignable = 2;
|
|
6045
6072
|
return left;
|
|
6046
6073
|
}
|
|
6047
|
-
function parseConditionalExpression(parser, context, privateScope, test, start
|
|
6048
|
-
const consequent = parseExpression(parser, (context | 33554432) ^ 33554432, privateScope, 1, 0, parser.
|
|
6074
|
+
function parseConditionalExpression(parser, context, privateScope, test, start) {
|
|
6075
|
+
const consequent = parseExpression(parser, (context | 33554432) ^ 33554432, privateScope, 1, 0, parser.tokenStart);
|
|
6049
6076
|
consume(parser, context | 8192, 21);
|
|
6050
6077
|
parser.assignable = 1;
|
|
6051
|
-
const alternate = parseExpression(parser, context, privateScope, 1, 0, parser.
|
|
6078
|
+
const alternate = parseExpression(parser, context, privateScope, 1, 0, parser.tokenStart);
|
|
6052
6079
|
parser.assignable = 2;
|
|
6053
|
-
return finishNode(
|
|
6080
|
+
return parser.finishNode({
|
|
6054
6081
|
type: 'ConditionalExpression',
|
|
6055
6082
|
test,
|
|
6056
6083
|
consequent,
|
|
6057
6084
|
alternate,
|
|
6058
|
-
});
|
|
6085
|
+
}, start);
|
|
6059
6086
|
}
|
|
6060
|
-
function parseBinaryExpression(parser, context, privateScope, inGroup, start,
|
|
6087
|
+
function parseBinaryExpression(parser, context, privateScope, inGroup, start, minPrecedence, operator, left) {
|
|
6061
6088
|
const bit = -((context & 33554432) > 0) & 8673330;
|
|
6062
6089
|
let t;
|
|
6063
6090
|
let precedence;
|
|
@@ -6071,23 +6098,24 @@ function parseBinaryExpression(parser, context, privateScope, inGroup, start, li
|
|
|
6071
6098
|
if (precedence + ((t === 8391735) << 8) - ((bit === t) << 12) <= minPrecedence)
|
|
6072
6099
|
break;
|
|
6073
6100
|
nextToken(parser, context | 8192);
|
|
6074
|
-
left = finishNode(
|
|
6101
|
+
left = parser.finishNode({
|
|
6075
6102
|
type: t & 524288 || t & 268435456 ? 'LogicalExpression' : 'BinaryExpression',
|
|
6076
6103
|
left,
|
|
6077
|
-
right: parseBinaryExpression(parser, context, privateScope, inGroup, parser.
|
|
6104
|
+
right: parseBinaryExpression(parser, context, privateScope, inGroup, parser.tokenStart, precedence, t, parseLeftHandSideExpression(parser, context, privateScope, 0, inGroup, 1)),
|
|
6078
6105
|
operator: KeywordDescTable[t & 255],
|
|
6079
|
-
});
|
|
6106
|
+
}, start);
|
|
6080
6107
|
}
|
|
6081
6108
|
if (parser.getToken() === 1077936155)
|
|
6082
6109
|
report(parser, 26);
|
|
6083
6110
|
return left;
|
|
6084
6111
|
}
|
|
6085
|
-
function parseUnaryExpression(parser, context, privateScope, isLHS,
|
|
6112
|
+
function parseUnaryExpression(parser, context, privateScope, isLHS, inGroup) {
|
|
6086
6113
|
if (!isLHS)
|
|
6087
6114
|
report(parser, 0);
|
|
6115
|
+
const { tokenStart } = parser;
|
|
6088
6116
|
const unaryOperator = parser.getToken();
|
|
6089
6117
|
nextToken(parser, context | 8192);
|
|
6090
|
-
const arg = parseLeftHandSideExpression(parser, context, privateScope, 0, inGroup, 1
|
|
6118
|
+
const arg = parseLeftHandSideExpression(parser, context, privateScope, 0, inGroup, 1);
|
|
6091
6119
|
if (parser.getToken() === 8391735)
|
|
6092
6120
|
report(parser, 33);
|
|
6093
6121
|
if (context & 256 && unaryOperator === 16863276) {
|
|
@@ -6099,20 +6127,20 @@ function parseUnaryExpression(parser, context, privateScope, isLHS, start, line,
|
|
|
6099
6127
|
}
|
|
6100
6128
|
}
|
|
6101
6129
|
parser.assignable = 2;
|
|
6102
|
-
return finishNode(
|
|
6130
|
+
return parser.finishNode({
|
|
6103
6131
|
type: 'UnaryExpression',
|
|
6104
6132
|
operator: KeywordDescTable[unaryOperator & 255],
|
|
6105
6133
|
argument: arg,
|
|
6106
6134
|
prefix: true,
|
|
6107
|
-
});
|
|
6135
|
+
}, tokenStart);
|
|
6108
6136
|
}
|
|
6109
|
-
function parseAsyncExpression(parser, context, privateScope, inGroup, isLHS, canAssign, inNew, start
|
|
6137
|
+
function parseAsyncExpression(parser, context, privateScope, inGroup, isLHS, canAssign, inNew, start) {
|
|
6110
6138
|
const token = parser.getToken();
|
|
6111
6139
|
const expr = parseIdentifier(parser, context);
|
|
6112
6140
|
const { flags } = parser;
|
|
6113
6141
|
if ((flags & 1) === 0) {
|
|
6114
6142
|
if (parser.getToken() === 86104) {
|
|
6115
|
-
return parseFunctionExpression(parser, context, privateScope, 1, inGroup, start
|
|
6143
|
+
return parseFunctionExpression(parser, context, privateScope, 1, inGroup, start);
|
|
6116
6144
|
}
|
|
6117
6145
|
if (isValidIdentifier(context, parser.getToken())) {
|
|
6118
6146
|
if (!isLHS)
|
|
@@ -6120,11 +6148,11 @@ function parseAsyncExpression(parser, context, privateScope, inGroup, isLHS, can
|
|
|
6120
6148
|
if ((parser.getToken() & 36864) === 36864) {
|
|
6121
6149
|
parser.flags |= 256;
|
|
6122
6150
|
}
|
|
6123
|
-
return parseAsyncArrowAfterIdent(parser, context, privateScope, canAssign, start
|
|
6151
|
+
return parseAsyncArrowAfterIdent(parser, context, privateScope, canAssign, start);
|
|
6124
6152
|
}
|
|
6125
6153
|
}
|
|
6126
6154
|
if (!inNew && parser.getToken() === 67174411) {
|
|
6127
|
-
return parseAsyncArrowOrCallExpression(parser, context, privateScope, expr, canAssign, 1, 0, flags, start
|
|
6155
|
+
return parseAsyncArrowOrCallExpression(parser, context, privateScope, expr, canAssign, 1, 0, flags, start);
|
|
6128
6156
|
}
|
|
6129
6157
|
if (parser.getToken() === 10) {
|
|
6130
6158
|
classifyIdentifier(parser, context, token);
|
|
@@ -6133,12 +6161,12 @@ function parseAsyncExpression(parser, context, privateScope, inGroup, isLHS, can
|
|
|
6133
6161
|
if ((token & 36864) === 36864) {
|
|
6134
6162
|
parser.flags |= 256;
|
|
6135
6163
|
}
|
|
6136
|
-
return parseArrowFromIdentifier(parser, context, privateScope, parser.tokenValue, expr, inNew, canAssign, 0, start
|
|
6164
|
+
return parseArrowFromIdentifier(parser, context, privateScope, parser.tokenValue, expr, inNew, canAssign, 0, start);
|
|
6137
6165
|
}
|
|
6138
6166
|
parser.assignable = 1;
|
|
6139
6167
|
return expr;
|
|
6140
6168
|
}
|
|
6141
|
-
function parseYieldExpressionOrIdentifier(parser, context, privateScope, inGroup, canAssign, start
|
|
6169
|
+
function parseYieldExpressionOrIdentifier(parser, context, privateScope, inGroup, canAssign, start) {
|
|
6142
6170
|
if (inGroup)
|
|
6143
6171
|
parser.destructible |= 256;
|
|
6144
6172
|
if (context & 262144) {
|
|
@@ -6154,83 +6182,83 @@ function parseYieldExpressionOrIdentifier(parser, context, privateScope, inGroup
|
|
|
6154
6182
|
if ((parser.flags & 1) === 0) {
|
|
6155
6183
|
delegate = consumeOpt(parser, context | 8192, 8391476);
|
|
6156
6184
|
if (parser.getToken() & (12288 | 65536) || delegate) {
|
|
6157
|
-
argument = parseExpression(parser, context, privateScope, 1, 0, parser.
|
|
6185
|
+
argument = parseExpression(parser, context, privateScope, 1, 0, parser.tokenStart);
|
|
6158
6186
|
}
|
|
6159
6187
|
}
|
|
6160
6188
|
else if (parser.getToken() === 8391476) {
|
|
6161
6189
|
report(parser, 30, KeywordDescTable[parser.getToken() & 255]);
|
|
6162
6190
|
}
|
|
6163
6191
|
parser.assignable = 2;
|
|
6164
|
-
return finishNode(
|
|
6192
|
+
return parser.finishNode({
|
|
6165
6193
|
type: 'YieldExpression',
|
|
6166
6194
|
argument,
|
|
6167
6195
|
delegate,
|
|
6168
|
-
});
|
|
6196
|
+
}, start);
|
|
6169
6197
|
}
|
|
6170
6198
|
if (context & 256)
|
|
6171
6199
|
report(parser, 97, 'yield');
|
|
6172
|
-
return parseIdentifierOrArrow(parser, context, privateScope
|
|
6200
|
+
return parseIdentifierOrArrow(parser, context, privateScope);
|
|
6173
6201
|
}
|
|
6174
|
-
function parseAwaitExpressionOrIdentifier(parser, context, privateScope, inNew, inGroup, start
|
|
6202
|
+
function parseAwaitExpressionOrIdentifier(parser, context, privateScope, inNew, inGroup, start) {
|
|
6175
6203
|
if (inGroup)
|
|
6176
6204
|
parser.destructible |= 128;
|
|
6177
6205
|
if (context & 268435456)
|
|
6178
6206
|
report(parser, 177);
|
|
6179
|
-
const possibleIdentifierOrArrowFunc = parseIdentifierOrArrow(parser, context, privateScope
|
|
6207
|
+
const possibleIdentifierOrArrowFunc = parseIdentifierOrArrow(parser, context, privateScope);
|
|
6180
6208
|
const isIdentifier = possibleIdentifierOrArrowFunc.type === 'ArrowFunctionExpression' ||
|
|
6181
6209
|
(parser.getToken() & 65536) === 0;
|
|
6182
6210
|
if (isIdentifier) {
|
|
6183
6211
|
if (context & 524288)
|
|
6184
|
-
reportMessageAt(start,
|
|
6212
|
+
reportMessageAt(start, { index: parser.startIndex, line: parser.startLine, column: parser.startColumn }, 176);
|
|
6185
6213
|
if (context & 512)
|
|
6186
|
-
reportMessageAt(start,
|
|
6214
|
+
reportMessageAt(start, { index: parser.startIndex, line: parser.startLine, column: parser.startColumn }, 110);
|
|
6187
6215
|
if (context & 2097152 && context & 524288)
|
|
6188
|
-
reportMessageAt(start,
|
|
6216
|
+
reportMessageAt(start, { index: parser.startIndex, line: parser.startLine, column: parser.startColumn }, 110);
|
|
6189
6217
|
return possibleIdentifierOrArrowFunc;
|
|
6190
6218
|
}
|
|
6191
6219
|
if (context & 2097152) {
|
|
6192
|
-
reportMessageAt(start,
|
|
6220
|
+
reportMessageAt(start, { index: parser.startIndex, line: parser.startLine, column: parser.startColumn }, 31);
|
|
6193
6221
|
}
|
|
6194
6222
|
if (context & 524288 || (context & 512 && context & 2048)) {
|
|
6195
6223
|
if (inNew)
|
|
6196
|
-
reportMessageAt(start,
|
|
6197
|
-
const argument = parseLeftHandSideExpression(parser, context, privateScope, 0, 0, 1
|
|
6224
|
+
reportMessageAt(start, { index: parser.startIndex, line: parser.startLine, column: parser.startColumn }, 0);
|
|
6225
|
+
const argument = parseLeftHandSideExpression(parser, context, privateScope, 0, 0, 1);
|
|
6198
6226
|
if (parser.getToken() === 8391735)
|
|
6199
6227
|
report(parser, 33);
|
|
6200
6228
|
parser.assignable = 2;
|
|
6201
|
-
return finishNode(
|
|
6229
|
+
return parser.finishNode({
|
|
6202
6230
|
type: 'AwaitExpression',
|
|
6203
6231
|
argument,
|
|
6204
|
-
});
|
|
6232
|
+
}, start);
|
|
6205
6233
|
}
|
|
6206
6234
|
if (context & 512)
|
|
6207
|
-
reportMessageAt(start,
|
|
6235
|
+
reportMessageAt(start, { index: parser.startIndex, line: parser.startLine, column: parser.startColumn }, 98);
|
|
6208
6236
|
return possibleIdentifierOrArrowFunc;
|
|
6209
6237
|
}
|
|
6210
6238
|
function parseFunctionBody(parser, context, scope, privateScope, origin, funcNameToken, scopeError) {
|
|
6211
|
-
const {
|
|
6239
|
+
const { tokenStart } = parser;
|
|
6212
6240
|
consume(parser, context | 8192, 2162700);
|
|
6213
6241
|
const body = [];
|
|
6214
6242
|
if (parser.getToken() !== 1074790415) {
|
|
6215
6243
|
while (parser.getToken() === 134283267) {
|
|
6216
|
-
const { index, tokenIndex, tokenValue } = parser;
|
|
6244
|
+
const { index, tokenStart, tokenIndex, tokenValue } = parser;
|
|
6217
6245
|
const token = parser.getToken();
|
|
6218
6246
|
const expr = parseLiteral(parser, context);
|
|
6219
6247
|
if (isValidStrictMode(parser, index, tokenIndex, tokenValue)) {
|
|
6220
6248
|
context |= 256;
|
|
6221
6249
|
if (parser.flags & 128) {
|
|
6222
|
-
reportMessageAt(
|
|
6250
|
+
reportMessageAt(tokenStart, parser.currentLocation, 66);
|
|
6223
6251
|
}
|
|
6224
6252
|
if (parser.flags & 64) {
|
|
6225
|
-
reportMessageAt(
|
|
6253
|
+
reportMessageAt(tokenStart, parser.currentLocation, 9);
|
|
6226
6254
|
}
|
|
6227
6255
|
if (parser.flags & 4096) {
|
|
6228
|
-
reportMessageAt(
|
|
6256
|
+
reportMessageAt(tokenStart, parser.currentLocation, 15);
|
|
6229
6257
|
}
|
|
6230
6258
|
if (scopeError)
|
|
6231
6259
|
reportScopeError(scopeError);
|
|
6232
6260
|
}
|
|
6233
|
-
body.push(parseDirective(parser, context, expr, token,
|
|
6261
|
+
body.push(parseDirective(parser, context, expr, token, tokenStart));
|
|
6234
6262
|
}
|
|
6235
6263
|
if (context & 256) {
|
|
6236
6264
|
if (funcNameToken) {
|
|
@@ -6258,12 +6286,13 @@ function parseFunctionBody(parser, context, scope, privateScope, origin, funcNam
|
|
|
6258
6286
|
parser.flags &= -4289;
|
|
6259
6287
|
if (parser.getToken() === 1077936155)
|
|
6260
6288
|
report(parser, 26);
|
|
6261
|
-
return finishNode(
|
|
6289
|
+
return parser.finishNode({
|
|
6262
6290
|
type: 'BlockStatement',
|
|
6263
6291
|
body,
|
|
6264
|
-
});
|
|
6292
|
+
}, tokenStart);
|
|
6265
6293
|
}
|
|
6266
|
-
function parseSuperExpression(parser, context
|
|
6294
|
+
function parseSuperExpression(parser, context) {
|
|
6295
|
+
const { tokenStart } = parser;
|
|
6267
6296
|
nextToken(parser, context);
|
|
6268
6297
|
switch (parser.getToken()) {
|
|
6269
6298
|
case 67108990:
|
|
@@ -6284,28 +6313,29 @@ function parseSuperExpression(parser, context, start, line, column) {
|
|
|
6284
6313
|
default:
|
|
6285
6314
|
report(parser, 30, 'super');
|
|
6286
6315
|
}
|
|
6287
|
-
return finishNode(
|
|
6316
|
+
return parser.finishNode({ type: 'Super' }, tokenStart);
|
|
6288
6317
|
}
|
|
6289
|
-
function parseLeftHandSideExpression(parser, context, privateScope, canAssign, inGroup, isLHS
|
|
6290
|
-
const
|
|
6291
|
-
|
|
6318
|
+
function parseLeftHandSideExpression(parser, context, privateScope, canAssign, inGroup, isLHS) {
|
|
6319
|
+
const start = parser.tokenStart;
|
|
6320
|
+
const expression = parsePrimaryExpression(parser, context, privateScope, 2, 0, canAssign, inGroup, isLHS, start);
|
|
6321
|
+
return parseMemberOrUpdateExpression(parser, context, privateScope, expression, inGroup, 0, start);
|
|
6292
6322
|
}
|
|
6293
|
-
function parseUpdateExpression(parser, context, expr, start
|
|
6323
|
+
function parseUpdateExpression(parser, context, expr, start) {
|
|
6294
6324
|
if (parser.assignable & 2)
|
|
6295
6325
|
report(parser, 55);
|
|
6296
6326
|
const token = parser.getToken();
|
|
6297
6327
|
nextToken(parser, context);
|
|
6298
6328
|
parser.assignable = 2;
|
|
6299
|
-
return finishNode(
|
|
6329
|
+
return parser.finishNode({
|
|
6300
6330
|
type: 'UpdateExpression',
|
|
6301
6331
|
argument: expr,
|
|
6302
6332
|
operator: KeywordDescTable[token & 255],
|
|
6303
6333
|
prefix: false,
|
|
6304
|
-
});
|
|
6334
|
+
}, start);
|
|
6305
6335
|
}
|
|
6306
|
-
function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGroup, inChain, start
|
|
6336
|
+
function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGroup, inChain, start) {
|
|
6307
6337
|
if ((parser.getToken() & 33619968) === 33619968 && (parser.flags & 1) === 0) {
|
|
6308
|
-
expr = parseUpdateExpression(parser, context, expr, start
|
|
6338
|
+
expr = parseUpdateExpression(parser, context, expr, start);
|
|
6309
6339
|
}
|
|
6310
6340
|
else if ((parser.getToken() & 67108864) === 67108864) {
|
|
6311
6341
|
context = (context | 33554432) ^ 33554432;
|
|
@@ -6317,12 +6347,13 @@ function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGr
|
|
|
6317
6347
|
}
|
|
6318
6348
|
parser.assignable = 1;
|
|
6319
6349
|
const property = parsePropertyOrPrivatePropertyName(parser, context | 16384, privateScope);
|
|
6320
|
-
expr = finishNode(
|
|
6350
|
+
expr = parser.finishNode({
|
|
6321
6351
|
type: 'MemberExpression',
|
|
6322
6352
|
object: expr,
|
|
6323
6353
|
computed: false,
|
|
6324
6354
|
property,
|
|
6325
|
-
|
|
6355
|
+
optional: false,
|
|
6356
|
+
}, start);
|
|
6326
6357
|
break;
|
|
6327
6358
|
}
|
|
6328
6359
|
case 69271571: {
|
|
@@ -6332,16 +6363,17 @@ function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGr
|
|
|
6332
6363
|
parser.flags = (parser.flags | 2048) ^ 2048;
|
|
6333
6364
|
}
|
|
6334
6365
|
nextToken(parser, context | 8192);
|
|
6335
|
-
const {
|
|
6336
|
-
const property = parseExpressions(parser, context, privateScope, inGroup, 1,
|
|
6366
|
+
const { tokenStart } = parser;
|
|
6367
|
+
const property = parseExpressions(parser, context, privateScope, inGroup, 1, tokenStart);
|
|
6337
6368
|
consume(parser, context, 20);
|
|
6338
6369
|
parser.assignable = 1;
|
|
6339
|
-
expr = finishNode(
|
|
6370
|
+
expr = parser.finishNode({
|
|
6340
6371
|
type: 'MemberExpression',
|
|
6341
6372
|
object: expr,
|
|
6342
6373
|
computed: true,
|
|
6343
6374
|
property,
|
|
6344
|
-
|
|
6375
|
+
optional: false,
|
|
6376
|
+
}, start);
|
|
6345
6377
|
if (restoreHasOptionalChaining) {
|
|
6346
6378
|
parser.flags |= 2048;
|
|
6347
6379
|
}
|
|
@@ -6359,11 +6391,12 @@ function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGr
|
|
|
6359
6391
|
}
|
|
6360
6392
|
const args = parseArguments(parser, context, privateScope, inGroup);
|
|
6361
6393
|
parser.assignable = 2;
|
|
6362
|
-
expr = finishNode(
|
|
6394
|
+
expr = parser.finishNode({
|
|
6363
6395
|
type: 'CallExpression',
|
|
6364
6396
|
callee: expr,
|
|
6365
6397
|
arguments: args,
|
|
6366
|
-
|
|
6398
|
+
optional: false,
|
|
6399
|
+
}, start);
|
|
6367
6400
|
if (restoreHasOptionalChaining) {
|
|
6368
6401
|
parser.flags |= 2048;
|
|
6369
6402
|
}
|
|
@@ -6373,7 +6406,7 @@ function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGr
|
|
|
6373
6406
|
nextToken(parser, (context | 67108864 | 2048) ^ 2048);
|
|
6374
6407
|
parser.flags |= 2048;
|
|
6375
6408
|
parser.assignable = 2;
|
|
6376
|
-
expr = parseOptionalChain(parser, context, privateScope, expr, start
|
|
6409
|
+
expr = parseOptionalChain(parser, context, privateScope, expr, start);
|
|
6377
6410
|
break;
|
|
6378
6411
|
}
|
|
6379
6412
|
default:
|
|
@@ -6381,26 +6414,26 @@ function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGr
|
|
|
6381
6414
|
report(parser, 166);
|
|
6382
6415
|
}
|
|
6383
6416
|
parser.assignable = 2;
|
|
6384
|
-
expr = finishNode(
|
|
6417
|
+
expr = parser.finishNode({
|
|
6385
6418
|
type: 'TaggedTemplateExpression',
|
|
6386
6419
|
tag: expr,
|
|
6387
6420
|
quasi: parser.getToken() === 67174408
|
|
6388
6421
|
? parseTemplate(parser, context | 16384, privateScope)
|
|
6389
|
-
: parseTemplateLiteral(parser, context, parser.
|
|
6390
|
-
});
|
|
6422
|
+
: parseTemplateLiteral(parser, context, parser.tokenStart),
|
|
6423
|
+
}, start);
|
|
6391
6424
|
}
|
|
6392
|
-
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 1, start
|
|
6425
|
+
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 1, start);
|
|
6393
6426
|
}
|
|
6394
6427
|
if (inChain === 0 && (parser.flags & 2048) === 2048) {
|
|
6395
6428
|
parser.flags = (parser.flags | 2048) ^ 2048;
|
|
6396
|
-
expr = finishNode(
|
|
6429
|
+
expr = parser.finishNode({
|
|
6397
6430
|
type: 'ChainExpression',
|
|
6398
6431
|
expression: expr,
|
|
6399
|
-
});
|
|
6432
|
+
}, start);
|
|
6400
6433
|
}
|
|
6401
6434
|
return expr;
|
|
6402
6435
|
}
|
|
6403
|
-
function parseOptionalChain(parser, context, privateScope, expr, start
|
|
6436
|
+
function parseOptionalChain(parser, context, privateScope, expr, start) {
|
|
6404
6437
|
let restoreHasOptionalChaining = false;
|
|
6405
6438
|
let node;
|
|
6406
6439
|
if (parser.getToken() === 69271571 || parser.getToken() === 67174411) {
|
|
@@ -6411,38 +6444,38 @@ function parseOptionalChain(parser, context, privateScope, expr, start, line, co
|
|
|
6411
6444
|
}
|
|
6412
6445
|
if (parser.getToken() === 69271571) {
|
|
6413
6446
|
nextToken(parser, context | 8192);
|
|
6414
|
-
const {
|
|
6415
|
-
const property = parseExpressions(parser, context, privateScope, 0, 1,
|
|
6447
|
+
const { tokenStart } = parser;
|
|
6448
|
+
const property = parseExpressions(parser, context, privateScope, 0, 1, tokenStart);
|
|
6416
6449
|
consume(parser, context, 20);
|
|
6417
6450
|
parser.assignable = 2;
|
|
6418
|
-
node = finishNode(
|
|
6451
|
+
node = parser.finishNode({
|
|
6419
6452
|
type: 'MemberExpression',
|
|
6420
6453
|
object: expr,
|
|
6421
6454
|
computed: true,
|
|
6422
6455
|
optional: true,
|
|
6423
6456
|
property,
|
|
6424
|
-
});
|
|
6457
|
+
}, start);
|
|
6425
6458
|
}
|
|
6426
6459
|
else if (parser.getToken() === 67174411) {
|
|
6427
6460
|
const args = parseArguments(parser, context, privateScope, 0);
|
|
6428
6461
|
parser.assignable = 2;
|
|
6429
|
-
node = finishNode(
|
|
6462
|
+
node = parser.finishNode({
|
|
6430
6463
|
type: 'CallExpression',
|
|
6431
6464
|
callee: expr,
|
|
6432
6465
|
arguments: args,
|
|
6433
6466
|
optional: true,
|
|
6434
|
-
});
|
|
6467
|
+
}, start);
|
|
6435
6468
|
}
|
|
6436
6469
|
else {
|
|
6437
6470
|
const property = parsePropertyOrPrivatePropertyName(parser, context, privateScope);
|
|
6438
6471
|
parser.assignable = 2;
|
|
6439
|
-
node = finishNode(
|
|
6472
|
+
node = parser.finishNode({
|
|
6440
6473
|
type: 'MemberExpression',
|
|
6441
6474
|
object: expr,
|
|
6442
6475
|
computed: false,
|
|
6443
6476
|
optional: true,
|
|
6444
6477
|
property,
|
|
6445
|
-
});
|
|
6478
|
+
}, start);
|
|
6446
6479
|
}
|
|
6447
6480
|
if (restoreHasOptionalChaining) {
|
|
6448
6481
|
parser.flags |= 2048;
|
|
@@ -6457,37 +6490,37 @@ function parsePropertyOrPrivatePropertyName(parser, context, privateScope) {
|
|
|
6457
6490
|
report(parser, 160);
|
|
6458
6491
|
}
|
|
6459
6492
|
return parser.getToken() === 130
|
|
6460
|
-
? parsePrivateIdentifier(parser, context, privateScope, 0
|
|
6493
|
+
? parsePrivateIdentifier(parser, context, privateScope, 0)
|
|
6461
6494
|
: parseIdentifier(parser, context);
|
|
6462
6495
|
}
|
|
6463
|
-
function parseUpdateExpressionPrefixed(parser, context, privateScope, inNew, isLHS, start
|
|
6496
|
+
function parseUpdateExpressionPrefixed(parser, context, privateScope, inNew, isLHS, start) {
|
|
6464
6497
|
if (inNew)
|
|
6465
6498
|
report(parser, 56);
|
|
6466
6499
|
if (!isLHS)
|
|
6467
6500
|
report(parser, 0);
|
|
6468
6501
|
const token = parser.getToken();
|
|
6469
6502
|
nextToken(parser, context | 8192);
|
|
6470
|
-
const arg = parseLeftHandSideExpression(parser, context, privateScope, 0, 0, 1
|
|
6503
|
+
const arg = parseLeftHandSideExpression(parser, context, privateScope, 0, 0, 1);
|
|
6471
6504
|
if (parser.assignable & 2) {
|
|
6472
6505
|
report(parser, 55);
|
|
6473
6506
|
}
|
|
6474
6507
|
parser.assignable = 2;
|
|
6475
|
-
return finishNode(
|
|
6508
|
+
return parser.finishNode({
|
|
6476
6509
|
type: 'UpdateExpression',
|
|
6477
6510
|
argument: arg,
|
|
6478
6511
|
operator: KeywordDescTable[token & 255],
|
|
6479
6512
|
prefix: true,
|
|
6480
|
-
});
|
|
6513
|
+
}, start);
|
|
6481
6514
|
}
|
|
6482
|
-
function parsePrimaryExpression(parser, context, privateScope, kind, inNew, canAssign, inGroup, isLHS, start
|
|
6515
|
+
function parsePrimaryExpression(parser, context, privateScope, kind, inNew, canAssign, inGroup, isLHS, start) {
|
|
6483
6516
|
if ((parser.getToken() & 143360) === 143360) {
|
|
6484
6517
|
switch (parser.getToken()) {
|
|
6485
6518
|
case 209006:
|
|
6486
|
-
return parseAwaitExpressionOrIdentifier(parser, context, privateScope, inNew, inGroup, start
|
|
6519
|
+
return parseAwaitExpressionOrIdentifier(parser, context, privateScope, inNew, inGroup, start);
|
|
6487
6520
|
case 241771:
|
|
6488
|
-
return parseYieldExpressionOrIdentifier(parser, context, privateScope, inGroup, canAssign, start
|
|
6521
|
+
return parseYieldExpressionOrIdentifier(parser, context, privateScope, inGroup, canAssign, start);
|
|
6489
6522
|
case 209005:
|
|
6490
|
-
return parseAsyncExpression(parser, context, privateScope, inGroup, isLHS, canAssign, inNew, start
|
|
6523
|
+
return parseAsyncExpression(parser, context, privateScope, inGroup, isLHS, canAssign, inNew, start);
|
|
6491
6524
|
}
|
|
6492
6525
|
const { tokenValue } = parser;
|
|
6493
6526
|
const token = parser.getToken();
|
|
@@ -6499,7 +6532,7 @@ function parsePrimaryExpression(parser, context, privateScope, kind, inNew, canA
|
|
|
6499
6532
|
if ((token & 36864) === 36864) {
|
|
6500
6533
|
parser.flags |= 256;
|
|
6501
6534
|
}
|
|
6502
|
-
return parseArrowFromIdentifier(parser, context, privateScope, tokenValue, expr, inNew, canAssign, 0, start
|
|
6535
|
+
return parseArrowFromIdentifier(parser, context, privateScope, tokenValue, expr, inNew, canAssign, 0, start);
|
|
6503
6536
|
}
|
|
6504
6537
|
if (context & 4096 &&
|
|
6505
6538
|
!(context & 8388608) &&
|
|
@@ -6524,7 +6557,7 @@ function parsePrimaryExpression(parser, context, privateScope, kind, inNew, canA
|
|
|
6524
6557
|
switch (parser.getToken()) {
|
|
6525
6558
|
case 33619993:
|
|
6526
6559
|
case 33619994:
|
|
6527
|
-
return parseUpdateExpressionPrefixed(parser, context, privateScope, inNew, isLHS, start
|
|
6560
|
+
return parseUpdateExpressionPrefixed(parser, context, privateScope, inNew, isLHS, start);
|
|
6528
6561
|
case 16863276:
|
|
6529
6562
|
case 16842798:
|
|
6530
6563
|
case 16842799:
|
|
@@ -6532,61 +6565,61 @@ function parsePrimaryExpression(parser, context, privateScope, kind, inNew, canA
|
|
|
6532
6565
|
case 25233969:
|
|
6533
6566
|
case 16863275:
|
|
6534
6567
|
case 16863277:
|
|
6535
|
-
return parseUnaryExpression(parser, context, privateScope, isLHS,
|
|
6568
|
+
return parseUnaryExpression(parser, context, privateScope, isLHS, inGroup);
|
|
6536
6569
|
case 86104:
|
|
6537
|
-
return parseFunctionExpression(parser, context, privateScope, 0, inGroup, start
|
|
6570
|
+
return parseFunctionExpression(parser, context, privateScope, 0, inGroup, start);
|
|
6538
6571
|
case 2162700:
|
|
6539
|
-
return parseObjectLiteral(parser, context, privateScope, canAssign ? 0 : 1, inGroup
|
|
6572
|
+
return parseObjectLiteral(parser, context, privateScope, canAssign ? 0 : 1, inGroup);
|
|
6540
6573
|
case 69271571:
|
|
6541
|
-
return parseArrayLiteral(parser, context, privateScope, canAssign ? 0 : 1, inGroup
|
|
6574
|
+
return parseArrayLiteral(parser, context, privateScope, canAssign ? 0 : 1, inGroup);
|
|
6542
6575
|
case 67174411:
|
|
6543
|
-
return parseParenthesizedExpression(parser, context | 16384, privateScope, canAssign, 1, 0, start
|
|
6576
|
+
return parseParenthesizedExpression(parser, context | 16384, privateScope, canAssign, 1, 0, start);
|
|
6544
6577
|
case 86021:
|
|
6545
6578
|
case 86022:
|
|
6546
6579
|
case 86023:
|
|
6547
|
-
return parseNullOrTrueOrFalseLiteral(parser, context
|
|
6580
|
+
return parseNullOrTrueOrFalseLiteral(parser, context);
|
|
6548
6581
|
case 86111:
|
|
6549
6582
|
return parseThisExpression(parser, context);
|
|
6550
6583
|
case 65540:
|
|
6551
|
-
return parseRegExpLiteral(parser, context
|
|
6584
|
+
return parseRegExpLiteral(parser, context);
|
|
6552
6585
|
case 132:
|
|
6553
6586
|
case 86094:
|
|
6554
|
-
return parseClassExpression(parser, context, privateScope, inGroup, start
|
|
6587
|
+
return parseClassExpression(parser, context, privateScope, inGroup, start);
|
|
6555
6588
|
case 86109:
|
|
6556
|
-
return parseSuperExpression(parser, context
|
|
6589
|
+
return parseSuperExpression(parser, context);
|
|
6557
6590
|
case 67174409:
|
|
6558
|
-
return parseTemplateLiteral(parser, context, start
|
|
6591
|
+
return parseTemplateLiteral(parser, context, start);
|
|
6559
6592
|
case 67174408:
|
|
6560
6593
|
return parseTemplate(parser, context, privateScope);
|
|
6561
6594
|
case 86107:
|
|
6562
|
-
return parseNewExpression(parser, context, privateScope, inGroup
|
|
6595
|
+
return parseNewExpression(parser, context, privateScope, inGroup);
|
|
6563
6596
|
case 134283388:
|
|
6564
|
-
return parseBigIntLiteral(parser, context
|
|
6597
|
+
return parseBigIntLiteral(parser, context);
|
|
6565
6598
|
case 130:
|
|
6566
|
-
return parsePrivateIdentifier(parser, context, privateScope, 0
|
|
6599
|
+
return parsePrivateIdentifier(parser, context, privateScope, 0);
|
|
6567
6600
|
case 86106:
|
|
6568
|
-
return parseImportCallOrMetaExpression(parser, context, privateScope, inNew, inGroup, start
|
|
6601
|
+
return parseImportCallOrMetaExpression(parser, context, privateScope, inNew, inGroup, start);
|
|
6569
6602
|
case 8456256:
|
|
6570
6603
|
if (context & 8)
|
|
6571
|
-
return parseJSXRootElementOrFragment(parser, context, privateScope, 0,
|
|
6604
|
+
return parseJSXRootElementOrFragment(parser, context, privateScope, 0, parser.tokenStart);
|
|
6572
6605
|
default:
|
|
6573
6606
|
if (isValidIdentifier(context, parser.getToken()))
|
|
6574
|
-
return parseIdentifierOrArrow(parser, context, privateScope
|
|
6607
|
+
return parseIdentifierOrArrow(parser, context, privateScope);
|
|
6575
6608
|
report(parser, 30, KeywordDescTable[parser.getToken() & 255]);
|
|
6576
6609
|
}
|
|
6577
6610
|
}
|
|
6578
|
-
function parseImportCallOrMetaExpression(parser, context, privateScope, inNew, inGroup, start
|
|
6611
|
+
function parseImportCallOrMetaExpression(parser, context, privateScope, inNew, inGroup, start) {
|
|
6579
6612
|
let expr = parseIdentifier(parser, context);
|
|
6580
6613
|
if (parser.getToken() === 67108877) {
|
|
6581
|
-
return parseImportMetaExpression(parser, context, expr, start
|
|
6614
|
+
return parseImportMetaExpression(parser, context, expr, start);
|
|
6582
6615
|
}
|
|
6583
6616
|
if (inNew)
|
|
6584
6617
|
report(parser, 142);
|
|
6585
|
-
expr = parseImportExpression(parser, context, privateScope, inGroup, start
|
|
6618
|
+
expr = parseImportExpression(parser, context, privateScope, inGroup, start);
|
|
6586
6619
|
parser.assignable = 2;
|
|
6587
|
-
return parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGroup, 0, start
|
|
6620
|
+
return parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGroup, 0, start);
|
|
6588
6621
|
}
|
|
6589
|
-
function parseImportMetaExpression(parser, context, meta, start
|
|
6622
|
+
function parseImportMetaExpression(parser, context, meta, start) {
|
|
6590
6623
|
if ((context & 512) === 0)
|
|
6591
6624
|
report(parser, 169);
|
|
6592
6625
|
nextToken(parser, context);
|
|
@@ -6598,23 +6631,23 @@ function parseImportMetaExpression(parser, context, meta, start, line, column) {
|
|
|
6598
6631
|
report(parser, 175);
|
|
6599
6632
|
}
|
|
6600
6633
|
parser.assignable = 2;
|
|
6601
|
-
return finishNode(
|
|
6634
|
+
return parser.finishNode({
|
|
6602
6635
|
type: 'MetaProperty',
|
|
6603
6636
|
meta,
|
|
6604
6637
|
property: parseIdentifier(parser, context),
|
|
6605
|
-
});
|
|
6638
|
+
}, start);
|
|
6606
6639
|
}
|
|
6607
|
-
function parseImportExpression(parser, context, privateScope, inGroup, start
|
|
6640
|
+
function parseImportExpression(parser, context, privateScope, inGroup, start) {
|
|
6608
6641
|
consume(parser, context | 8192, 67174411);
|
|
6609
6642
|
if (parser.getToken() === 14)
|
|
6610
6643
|
report(parser, 143);
|
|
6611
|
-
const source = parseExpression(parser, context, privateScope, 1, inGroup, parser.
|
|
6644
|
+
const source = parseExpression(parser, context, privateScope, 1, inGroup, parser.tokenStart);
|
|
6612
6645
|
let options = null;
|
|
6613
6646
|
if (parser.getToken() === 18) {
|
|
6614
6647
|
consume(parser, context, 18);
|
|
6615
6648
|
if (parser.getToken() !== 16) {
|
|
6616
6649
|
const expContext = (context | 33554432) ^ 33554432;
|
|
6617
|
-
options = parseExpression(parser, expContext, privateScope, 1, inGroup, parser.
|
|
6650
|
+
options = parseExpression(parser, expContext, privateScope, 1, inGroup, parser.tokenStart);
|
|
6618
6651
|
}
|
|
6619
6652
|
consumeOpt(parser, context, 18);
|
|
6620
6653
|
}
|
|
@@ -6624,7 +6657,7 @@ function parseImportExpression(parser, context, privateScope, inGroup, start, li
|
|
|
6624
6657
|
options,
|
|
6625
6658
|
};
|
|
6626
6659
|
consume(parser, context, 16);
|
|
6627
|
-
return finishNode(
|
|
6660
|
+
return parser.finishNode(node, start);
|
|
6628
6661
|
}
|
|
6629
6662
|
function parseImportAttributes(parser, context, specifiers = null) {
|
|
6630
6663
|
if (!consumeOpt(parser, context, 20579))
|
|
@@ -6633,9 +6666,7 @@ function parseImportAttributes(parser, context, specifiers = null) {
|
|
|
6633
6666
|
const attributes = [];
|
|
6634
6667
|
const keysContent = new Set();
|
|
6635
6668
|
while (parser.getToken() !== 1074790415) {
|
|
6636
|
-
const start = parser.
|
|
6637
|
-
const line = parser.tokenLine;
|
|
6638
|
-
const column = parser.tokenColumn;
|
|
6669
|
+
const start = parser.tokenStart;
|
|
6639
6670
|
const key = parseIdentifierOrStringLiteral(parser, context);
|
|
6640
6671
|
consume(parser, context, 21);
|
|
6641
6672
|
const value = parseStringLiteral(parser, context);
|
|
@@ -6659,11 +6690,11 @@ function parseImportAttributes(parser, context, specifiers = null) {
|
|
|
6659
6690
|
report(parser, 145, `${keyContent}`);
|
|
6660
6691
|
}
|
|
6661
6692
|
keysContent.add(keyContent);
|
|
6662
|
-
attributes.push(finishNode(
|
|
6693
|
+
attributes.push(parser.finishNode({
|
|
6663
6694
|
type: 'ImportAttribute',
|
|
6664
6695
|
key,
|
|
6665
6696
|
value,
|
|
6666
|
-
}));
|
|
6697
|
+
}, start));
|
|
6667
6698
|
if (parser.getToken() !== 1074790415) {
|
|
6668
6699
|
consume(parser, context, 18);
|
|
6669
6700
|
}
|
|
@@ -6713,8 +6744,8 @@ function parseModuleExportName(parser, context) {
|
|
|
6713
6744
|
report(parser, 30, KeywordDescTable[parser.getToken() & 255]);
|
|
6714
6745
|
}
|
|
6715
6746
|
}
|
|
6716
|
-
function parseBigIntLiteral(parser, context
|
|
6717
|
-
const { tokenRaw, tokenValue } = parser;
|
|
6747
|
+
function parseBigIntLiteral(parser, context) {
|
|
6748
|
+
const { tokenRaw, tokenValue, tokenStart } = parser;
|
|
6718
6749
|
nextToken(parser, context);
|
|
6719
6750
|
parser.assignable = 2;
|
|
6720
6751
|
const node = {
|
|
@@ -6725,61 +6756,57 @@ function parseBigIntLiteral(parser, context, start, line, column) {
|
|
|
6725
6756
|
if (context & 128) {
|
|
6726
6757
|
node.raw = tokenRaw;
|
|
6727
6758
|
}
|
|
6728
|
-
return finishNode(
|
|
6759
|
+
return parser.finishNode(node, tokenStart);
|
|
6729
6760
|
}
|
|
6730
|
-
function parseTemplateLiteral(parser, context, start
|
|
6761
|
+
function parseTemplateLiteral(parser, context, start) {
|
|
6731
6762
|
parser.assignable = 2;
|
|
6732
|
-
const { tokenValue, tokenRaw,
|
|
6763
|
+
const { tokenValue, tokenRaw, tokenStart } = parser;
|
|
6733
6764
|
consume(parser, context, 67174409);
|
|
6734
|
-
const quasis = [
|
|
6735
|
-
|
|
6736
|
-
];
|
|
6737
|
-
return finishNode(parser, context, start, line, column, {
|
|
6765
|
+
const quasis = [parseTemplateElement(parser, context, tokenValue, tokenRaw, tokenStart, true)];
|
|
6766
|
+
return parser.finishNode({
|
|
6738
6767
|
type: 'TemplateLiteral',
|
|
6739
6768
|
expressions: [],
|
|
6740
6769
|
quasis,
|
|
6741
|
-
});
|
|
6770
|
+
}, start);
|
|
6742
6771
|
}
|
|
6743
6772
|
function parseTemplate(parser, context, privateScope) {
|
|
6744
6773
|
context = (context | 33554432) ^ 33554432;
|
|
6745
|
-
const { tokenValue, tokenRaw,
|
|
6774
|
+
const { tokenValue, tokenRaw, tokenStart } = parser;
|
|
6746
6775
|
consume(parser, (context & -16385) | 8192, 67174408);
|
|
6747
|
-
const quasis = [
|
|
6748
|
-
parseTemplateElement(parser, context, tokenValue, tokenRaw, tokenIndex, tokenLine, tokenColumn, false),
|
|
6749
|
-
];
|
|
6776
|
+
const quasis = [parseTemplateElement(parser, context, tokenValue, tokenRaw, tokenStart, false)];
|
|
6750
6777
|
const expressions = [
|
|
6751
|
-
parseExpressions(parser, context & -16385, privateScope, 0, 1, parser.
|
|
6778
|
+
parseExpressions(parser, context & -16385, privateScope, 0, 1, parser.tokenStart),
|
|
6752
6779
|
];
|
|
6753
6780
|
if (parser.getToken() !== 1074790415)
|
|
6754
6781
|
report(parser, 83);
|
|
6755
6782
|
while (parser.setToken(scanTemplateTail(parser, context), true) !== 67174409) {
|
|
6756
|
-
const { tokenValue, tokenRaw,
|
|
6783
|
+
const { tokenValue, tokenRaw, tokenStart } = parser;
|
|
6757
6784
|
consume(parser, (context & -16385) | 8192, 67174408);
|
|
6758
|
-
quasis.push(parseTemplateElement(parser, context, tokenValue, tokenRaw,
|
|
6759
|
-
expressions.push(parseExpressions(parser, context, privateScope, 0, 1, parser.
|
|
6785
|
+
quasis.push(parseTemplateElement(parser, context, tokenValue, tokenRaw, tokenStart, false));
|
|
6786
|
+
expressions.push(parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart));
|
|
6760
6787
|
if (parser.getToken() !== 1074790415)
|
|
6761
6788
|
report(parser, 83);
|
|
6762
6789
|
}
|
|
6763
6790
|
{
|
|
6764
|
-
const { tokenValue, tokenRaw,
|
|
6791
|
+
const { tokenValue, tokenRaw, tokenStart } = parser;
|
|
6765
6792
|
consume(parser, context, 67174409);
|
|
6766
|
-
quasis.push(parseTemplateElement(parser, context, tokenValue, tokenRaw,
|
|
6793
|
+
quasis.push(parseTemplateElement(parser, context, tokenValue, tokenRaw, tokenStart, true));
|
|
6767
6794
|
}
|
|
6768
|
-
return finishNode(
|
|
6795
|
+
return parser.finishNode({
|
|
6769
6796
|
type: 'TemplateLiteral',
|
|
6770
6797
|
expressions,
|
|
6771
6798
|
quasis,
|
|
6772
|
-
});
|
|
6799
|
+
}, tokenStart);
|
|
6773
6800
|
}
|
|
6774
|
-
function parseTemplateElement(parser, context, cooked, raw, start,
|
|
6775
|
-
const node = finishNode(
|
|
6801
|
+
function parseTemplateElement(parser, context, cooked, raw, start, tail) {
|
|
6802
|
+
const node = parser.finishNode({
|
|
6776
6803
|
type: 'TemplateElement',
|
|
6777
6804
|
value: {
|
|
6778
6805
|
cooked,
|
|
6779
6806
|
raw,
|
|
6780
6807
|
},
|
|
6781
6808
|
tail,
|
|
6782
|
-
});
|
|
6809
|
+
}, start);
|
|
6783
6810
|
const tailSize = tail ? 1 : 2;
|
|
6784
6811
|
if (context & 2) {
|
|
6785
6812
|
node.start += 1;
|
|
@@ -6793,15 +6820,16 @@ function parseTemplateElement(parser, context, cooked, raw, start, line, col, ta
|
|
|
6793
6820
|
}
|
|
6794
6821
|
return node;
|
|
6795
6822
|
}
|
|
6796
|
-
function parseSpreadElement(parser, context, privateScope
|
|
6823
|
+
function parseSpreadElement(parser, context, privateScope) {
|
|
6824
|
+
const start = parser.tokenStart;
|
|
6797
6825
|
context = (context | 33554432) ^ 33554432;
|
|
6798
6826
|
consume(parser, context | 8192, 14);
|
|
6799
|
-
const argument = parseExpression(parser, context, privateScope, 1, 0, parser.
|
|
6827
|
+
const argument = parseExpression(parser, context, privateScope, 1, 0, parser.tokenStart);
|
|
6800
6828
|
parser.assignable = 1;
|
|
6801
|
-
return finishNode(
|
|
6829
|
+
return parser.finishNode({
|
|
6802
6830
|
type: 'SpreadElement',
|
|
6803
6831
|
argument,
|
|
6804
|
-
});
|
|
6832
|
+
}, start);
|
|
6805
6833
|
}
|
|
6806
6834
|
function parseArguments(parser, context, privateScope, inGroup) {
|
|
6807
6835
|
nextToken(parser, context | 8192);
|
|
@@ -6812,10 +6840,10 @@ function parseArguments(parser, context, privateScope, inGroup) {
|
|
|
6812
6840
|
}
|
|
6813
6841
|
while (parser.getToken() !== 16) {
|
|
6814
6842
|
if (parser.getToken() === 14) {
|
|
6815
|
-
args.push(parseSpreadElement(parser, context, privateScope
|
|
6843
|
+
args.push(parseSpreadElement(parser, context, privateScope));
|
|
6816
6844
|
}
|
|
6817
6845
|
else {
|
|
6818
|
-
args.push(parseExpression(parser, context, privateScope, 1, inGroup, parser.
|
|
6846
|
+
args.push(parseExpression(parser, context, privateScope, 1, inGroup, parser.tokenStart));
|
|
6819
6847
|
}
|
|
6820
6848
|
if (parser.getToken() !== 18)
|
|
6821
6849
|
break;
|
|
@@ -6827,22 +6855,22 @@ function parseArguments(parser, context, privateScope, inGroup) {
|
|
|
6827
6855
|
return args;
|
|
6828
6856
|
}
|
|
6829
6857
|
function parseIdentifier(parser, context) {
|
|
6830
|
-
const { tokenValue,
|
|
6858
|
+
const { tokenValue, tokenStart } = parser;
|
|
6831
6859
|
const allowRegex = tokenValue === 'await' && (parser.getToken() & -2147483648) === 0;
|
|
6832
6860
|
nextToken(parser, context | (allowRegex ? 8192 : 0));
|
|
6833
|
-
return finishNode(
|
|
6861
|
+
return parser.finishNode({
|
|
6834
6862
|
type: 'Identifier',
|
|
6835
6863
|
name: tokenValue,
|
|
6836
|
-
});
|
|
6864
|
+
}, tokenStart);
|
|
6837
6865
|
}
|
|
6838
6866
|
function parseLiteral(parser, context) {
|
|
6839
|
-
const { tokenValue, tokenRaw,
|
|
6867
|
+
const { tokenValue, tokenRaw, tokenStart } = parser;
|
|
6840
6868
|
if (parser.getToken() === 134283388) {
|
|
6841
|
-
return parseBigIntLiteral(parser, context
|
|
6869
|
+
return parseBigIntLiteral(parser, context);
|
|
6842
6870
|
}
|
|
6843
6871
|
nextToken(parser, context);
|
|
6844
6872
|
parser.assignable = 2;
|
|
6845
|
-
return finishNode(
|
|
6873
|
+
return parser.finishNode(context & 128
|
|
6846
6874
|
? {
|
|
6847
6875
|
type: 'Literal',
|
|
6848
6876
|
value: tokenValue,
|
|
@@ -6851,14 +6879,15 @@ function parseLiteral(parser, context) {
|
|
|
6851
6879
|
: {
|
|
6852
6880
|
type: 'Literal',
|
|
6853
6881
|
value: tokenValue,
|
|
6854
|
-
});
|
|
6882
|
+
}, tokenStart);
|
|
6855
6883
|
}
|
|
6856
|
-
function parseNullOrTrueOrFalseLiteral(parser, context
|
|
6884
|
+
function parseNullOrTrueOrFalseLiteral(parser, context) {
|
|
6885
|
+
const start = parser.tokenStart;
|
|
6857
6886
|
const raw = KeywordDescTable[parser.getToken() & 255];
|
|
6858
6887
|
const value = parser.getToken() === 86023 ? null : raw === 'true';
|
|
6859
6888
|
nextToken(parser, context);
|
|
6860
6889
|
parser.assignable = 2;
|
|
6861
|
-
return finishNode(
|
|
6890
|
+
return parser.finishNode(context & 128
|
|
6862
6891
|
? {
|
|
6863
6892
|
type: 'Literal',
|
|
6864
6893
|
value,
|
|
@@ -6867,17 +6896,17 @@ function parseNullOrTrueOrFalseLiteral(parser, context, start, line, column) {
|
|
|
6867
6896
|
: {
|
|
6868
6897
|
type: 'Literal',
|
|
6869
6898
|
value,
|
|
6870
|
-
});
|
|
6899
|
+
}, start);
|
|
6871
6900
|
}
|
|
6872
6901
|
function parseThisExpression(parser, context) {
|
|
6873
|
-
const {
|
|
6902
|
+
const { tokenStart } = parser;
|
|
6874
6903
|
nextToken(parser, context);
|
|
6875
6904
|
parser.assignable = 2;
|
|
6876
|
-
return finishNode(
|
|
6905
|
+
return parser.finishNode({
|
|
6877
6906
|
type: 'ThisExpression',
|
|
6878
|
-
});
|
|
6907
|
+
}, tokenStart);
|
|
6879
6908
|
}
|
|
6880
|
-
function parseFunctionDeclaration(parser, context, scope, privateScope, origin, allowGen, flags, isAsync, start
|
|
6909
|
+
function parseFunctionDeclaration(parser, context, scope, privateScope, origin, allowGen, flags, isAsync, start) {
|
|
6881
6910
|
nextToken(parser, context | 8192);
|
|
6882
6911
|
const isGenerator = allowGen ? optionalBit(parser, context, 8391476) : 0;
|
|
6883
6912
|
let id = null;
|
|
@@ -6933,16 +6962,16 @@ function parseFunctionDeclaration(parser, context, scope, privateScope, origin,
|
|
|
6933
6962
|
const params = parseFormalParametersOrFormalList(parser, (context | 2097152) & -268435457, functionScope, privateScope, 0, 1);
|
|
6934
6963
|
const modifierFlags = 2048 | 1024 | 32768 | 268435456;
|
|
6935
6964
|
const body = parseFunctionBody(parser, ((context | modifierFlags) ^ modifierFlags) | 8388608 | 1048576, scope ? addChildScope(functionScope, 128) : functionScope, privateScope, 8, funcNameToken, functionScope?.scopeError);
|
|
6936
|
-
return finishNode(
|
|
6965
|
+
return parser.finishNode({
|
|
6937
6966
|
type: 'FunctionDeclaration',
|
|
6938
6967
|
id,
|
|
6939
6968
|
params,
|
|
6940
6969
|
body,
|
|
6941
6970
|
async: isAsync === 1,
|
|
6942
6971
|
generator: isGenerator === 1,
|
|
6943
|
-
});
|
|
6972
|
+
}, start);
|
|
6944
6973
|
}
|
|
6945
|
-
function parseFunctionExpression(parser, context, privateScope, isAsync, inGroup, start
|
|
6974
|
+
function parseFunctionExpression(parser, context, privateScope, isAsync, inGroup, start) {
|
|
6946
6975
|
nextToken(parser, context | 8192);
|
|
6947
6976
|
const isGenerator = optionalBit(parser, context, 8391476);
|
|
6948
6977
|
const generatorAndAsyncFlags = (isAsync ? 524288 : 0) | (isGenerator ? 262144 : 0);
|
|
@@ -6975,17 +7004,17 @@ function parseFunctionExpression(parser, context, privateScope, isAsync, inGroup
|
|
|
6975
7004
|
8388608 |
|
|
6976
7005
|
1048576, scope ? addChildScope(scope, 128) : scope, privateScope, 0, funcNameToken, scope?.scopeError);
|
|
6977
7006
|
parser.assignable = 2;
|
|
6978
|
-
return finishNode(
|
|
7007
|
+
return parser.finishNode({
|
|
6979
7008
|
type: 'FunctionExpression',
|
|
6980
7009
|
id,
|
|
6981
7010
|
params,
|
|
6982
7011
|
body,
|
|
6983
7012
|
async: isAsync === 1,
|
|
6984
7013
|
generator: isGenerator === 1,
|
|
6985
|
-
});
|
|
7014
|
+
}, start);
|
|
6986
7015
|
}
|
|
6987
|
-
function parseArrayLiteral(parser, context, privateScope, skipInitializer, inGroup
|
|
6988
|
-
const expr = parseArrayExpressionOrPattern(parser, context, void 0, privateScope, skipInitializer, inGroup, 0, 2, 0
|
|
7016
|
+
function parseArrayLiteral(parser, context, privateScope, skipInitializer, inGroup) {
|
|
7017
|
+
const expr = parseArrayExpressionOrPattern(parser, context, void 0, privateScope, skipInitializer, inGroup, 0, 2, 0);
|
|
6989
7018
|
if (parser.destructible & 64) {
|
|
6990
7019
|
report(parser, 63);
|
|
6991
7020
|
}
|
|
@@ -6994,7 +7023,8 @@ function parseArrayLiteral(parser, context, privateScope, skipInitializer, inGro
|
|
|
6994
7023
|
}
|
|
6995
7024
|
return expr;
|
|
6996
7025
|
}
|
|
6997
|
-
function parseArrayExpressionOrPattern(parser, context, scope, privateScope, skipInitializer, inGroup, isPattern, kind, origin
|
|
7026
|
+
function parseArrayExpressionOrPattern(parser, context, scope, privateScope, skipInitializer, inGroup, isPattern, kind, origin) {
|
|
7027
|
+
const { tokenStart: start } = parser;
|
|
6998
7028
|
nextToken(parser, context | 8192);
|
|
6999
7029
|
const elements = [];
|
|
7000
7030
|
let destructible = 0;
|
|
@@ -7005,18 +7035,18 @@ function parseArrayExpressionOrPattern(parser, context, scope, privateScope, ski
|
|
|
7005
7035
|
}
|
|
7006
7036
|
else {
|
|
7007
7037
|
let left;
|
|
7008
|
-
const {
|
|
7038
|
+
const { tokenStart, tokenValue } = parser;
|
|
7009
7039
|
const token = parser.getToken();
|
|
7010
7040
|
if (token & 143360) {
|
|
7011
|
-
left = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, inGroup, 1,
|
|
7041
|
+
left = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, inGroup, 1, tokenStart);
|
|
7012
7042
|
if (parser.getToken() === 1077936155) {
|
|
7013
7043
|
if (parser.assignable & 2)
|
|
7014
7044
|
report(parser, 26);
|
|
7015
7045
|
nextToken(parser, context | 8192);
|
|
7016
7046
|
if (scope)
|
|
7017
7047
|
addVarOrBlock(parser, context, scope, tokenValue, kind, origin);
|
|
7018
|
-
const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.
|
|
7019
|
-
left = finishNode(
|
|
7048
|
+
const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.tokenStart);
|
|
7049
|
+
left = parser.finishNode(isPattern
|
|
7020
7050
|
? {
|
|
7021
7051
|
type: 'AssignmentPattern',
|
|
7022
7052
|
left,
|
|
@@ -7027,7 +7057,7 @@ function parseArrayExpressionOrPattern(parser, context, scope, privateScope, ski
|
|
|
7027
7057
|
operator: '=',
|
|
7028
7058
|
left,
|
|
7029
7059
|
right,
|
|
7030
|
-
});
|
|
7060
|
+
}, tokenStart);
|
|
7031
7061
|
destructible |=
|
|
7032
7062
|
parser.destructible & 256
|
|
7033
7063
|
? 256
|
|
@@ -7056,11 +7086,11 @@ function parseArrayExpressionOrPattern(parser, context, scope, privateScope, ski
|
|
|
7056
7086
|
: (kind & 2) === 0
|
|
7057
7087
|
? 16
|
|
7058
7088
|
: 0;
|
|
7059
|
-
left = parseMemberOrUpdateExpression(parser, context, privateScope, left, inGroup, 0,
|
|
7089
|
+
left = parseMemberOrUpdateExpression(parser, context, privateScope, left, inGroup, 0, tokenStart);
|
|
7060
7090
|
if (parser.getToken() !== 18 && parser.getToken() !== 20) {
|
|
7061
7091
|
if (parser.getToken() !== 1077936155)
|
|
7062
7092
|
destructible |= 16;
|
|
7063
|
-
left = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7093
|
+
left = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, left);
|
|
7064
7094
|
}
|
|
7065
7095
|
else if (parser.getToken() !== 1077936155) {
|
|
7066
7096
|
destructible |=
|
|
@@ -7073,8 +7103,8 @@ function parseArrayExpressionOrPattern(parser, context, scope, privateScope, ski
|
|
|
7073
7103
|
else if (token & 2097152) {
|
|
7074
7104
|
left =
|
|
7075
7105
|
parser.getToken() === 2162700
|
|
7076
|
-
? parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin
|
|
7077
|
-
: parseArrayExpressionOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin
|
|
7106
|
+
? parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin)
|
|
7107
|
+
: parseArrayExpressionOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin);
|
|
7078
7108
|
destructible |= parser.destructible;
|
|
7079
7109
|
parser.assignable =
|
|
7080
7110
|
parser.destructible & 16
|
|
@@ -7089,10 +7119,10 @@ function parseArrayExpressionOrPattern(parser, context, scope, privateScope, ski
|
|
|
7089
7119
|
report(parser, 71);
|
|
7090
7120
|
}
|
|
7091
7121
|
else {
|
|
7092
|
-
left = parseMemberOrUpdateExpression(parser, context, privateScope, left, inGroup, 0,
|
|
7122
|
+
left = parseMemberOrUpdateExpression(parser, context, privateScope, left, inGroup, 0, tokenStart);
|
|
7093
7123
|
destructible = parser.assignable & 2 ? 16 : 0;
|
|
7094
7124
|
if (parser.getToken() !== 18 && parser.getToken() !== 20) {
|
|
7095
|
-
left = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7125
|
+
left = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, left);
|
|
7096
7126
|
}
|
|
7097
7127
|
else if (parser.getToken() !== 1077936155) {
|
|
7098
7128
|
destructible |=
|
|
@@ -7103,15 +7133,15 @@ function parseArrayExpressionOrPattern(parser, context, scope, privateScope, ski
|
|
|
7103
7133
|
}
|
|
7104
7134
|
}
|
|
7105
7135
|
else if (token === 14) {
|
|
7106
|
-
left = parseSpreadOrRestElement(parser, context, scope, privateScope, 20, kind, origin, 0, inGroup, isPattern
|
|
7136
|
+
left = parseSpreadOrRestElement(parser, context, scope, privateScope, 20, kind, origin, 0, inGroup, isPattern);
|
|
7107
7137
|
destructible |= parser.destructible;
|
|
7108
7138
|
if (parser.getToken() !== 18 && parser.getToken() !== 20)
|
|
7109
7139
|
report(parser, 30, KeywordDescTable[parser.getToken() & 255]);
|
|
7110
7140
|
}
|
|
7111
7141
|
else {
|
|
7112
|
-
left = parseLeftHandSideExpression(parser, context, privateScope, 1, 0, 1
|
|
7142
|
+
left = parseLeftHandSideExpression(parser, context, privateScope, 1, 0, 1);
|
|
7113
7143
|
if (parser.getToken() !== 18 && parser.getToken() !== 20) {
|
|
7114
|
-
left = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7144
|
+
left = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, left);
|
|
7115
7145
|
if ((kind & (2 | 1)) === 0 && token === 67174411)
|
|
7116
7146
|
destructible |= 16;
|
|
7117
7147
|
}
|
|
@@ -7135,17 +7165,17 @@ function parseArrayExpressionOrPattern(parser, context, scope, privateScope, ski
|
|
|
7135
7165
|
}
|
|
7136
7166
|
}
|
|
7137
7167
|
consume(parser, context, 20);
|
|
7138
|
-
const node = finishNode(
|
|
7168
|
+
const node = parser.finishNode({
|
|
7139
7169
|
type: isPattern ? 'ArrayPattern' : 'ArrayExpression',
|
|
7140
7170
|
elements,
|
|
7141
|
-
});
|
|
7171
|
+
}, start);
|
|
7142
7172
|
if (!skipInitializer && parser.getToken() & 4194304) {
|
|
7143
|
-
return parseArrayOrObjectAssignmentPattern(parser, context, privateScope, destructible, inGroup, isPattern, start,
|
|
7173
|
+
return parseArrayOrObjectAssignmentPattern(parser, context, privateScope, destructible, inGroup, isPattern, start, node);
|
|
7144
7174
|
}
|
|
7145
7175
|
parser.destructible = destructible;
|
|
7146
7176
|
return node;
|
|
7147
7177
|
}
|
|
7148
|
-
function parseArrayOrObjectAssignmentPattern(parser, context, privateScope, destructible, inGroup, isPattern, start,
|
|
7178
|
+
function parseArrayOrObjectAssignmentPattern(parser, context, privateScope, destructible, inGroup, isPattern, start, node) {
|
|
7149
7179
|
if (parser.getToken() !== 1077936155)
|
|
7150
7180
|
report(parser, 26);
|
|
7151
7181
|
nextToken(parser, context | 8192);
|
|
@@ -7153,14 +7183,14 @@ function parseArrayOrObjectAssignmentPattern(parser, context, privateScope, dest
|
|
|
7153
7183
|
report(parser, 26);
|
|
7154
7184
|
if (!isPattern)
|
|
7155
7185
|
reinterpretToPattern(parser, node);
|
|
7156
|
-
const {
|
|
7157
|
-
const right = parseExpression(parser, context, privateScope, 1, inGroup,
|
|
7186
|
+
const { tokenStart } = parser;
|
|
7187
|
+
const right = parseExpression(parser, context, privateScope, 1, inGroup, tokenStart);
|
|
7158
7188
|
parser.destructible =
|
|
7159
7189
|
((destructible | 64 | 8) ^
|
|
7160
7190
|
(8 | 64)) |
|
|
7161
7191
|
(parser.destructible & 128 ? 128 : 0) |
|
|
7162
7192
|
(parser.destructible & 256 ? 256 : 0);
|
|
7163
|
-
return finishNode(
|
|
7193
|
+
return parser.finishNode(isPattern
|
|
7164
7194
|
? {
|
|
7165
7195
|
type: 'AssignmentPattern',
|
|
7166
7196
|
left: node,
|
|
@@ -7171,24 +7201,25 @@ function parseArrayOrObjectAssignmentPattern(parser, context, privateScope, dest
|
|
|
7171
7201
|
left: node,
|
|
7172
7202
|
operator: '=',
|
|
7173
7203
|
right,
|
|
7174
|
-
});
|
|
7204
|
+
}, start);
|
|
7175
7205
|
}
|
|
7176
|
-
function parseSpreadOrRestElement(parser, context, scope, privateScope, closingToken, kind, origin, isAsync, inGroup, isPattern
|
|
7206
|
+
function parseSpreadOrRestElement(parser, context, scope, privateScope, closingToken, kind, origin, isAsync, inGroup, isPattern) {
|
|
7207
|
+
const { tokenStart: start } = parser;
|
|
7177
7208
|
nextToken(parser, context | 8192);
|
|
7178
7209
|
let argument = null;
|
|
7179
7210
|
let destructible = 0;
|
|
7180
|
-
const { tokenValue,
|
|
7211
|
+
const { tokenValue, tokenStart } = parser;
|
|
7181
7212
|
let token = parser.getToken();
|
|
7182
7213
|
if (token & 143360) {
|
|
7183
7214
|
parser.assignable = 1;
|
|
7184
|
-
argument = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, inGroup, 1,
|
|
7215
|
+
argument = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, inGroup, 1, tokenStart);
|
|
7185
7216
|
token = parser.getToken();
|
|
7186
|
-
argument = parseMemberOrUpdateExpression(parser, context, privateScope, argument, inGroup, 0,
|
|
7217
|
+
argument = parseMemberOrUpdateExpression(parser, context, privateScope, argument, inGroup, 0, tokenStart);
|
|
7187
7218
|
if (parser.getToken() !== 18 && parser.getToken() !== closingToken) {
|
|
7188
7219
|
if (parser.assignable & 2 && parser.getToken() === 1077936155)
|
|
7189
7220
|
report(parser, 71);
|
|
7190
7221
|
destructible |= 16;
|
|
7191
|
-
argument = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7222
|
+
argument = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, argument);
|
|
7192
7223
|
}
|
|
7193
7224
|
if (parser.assignable & 2) {
|
|
7194
7225
|
destructible |= 16;
|
|
@@ -7208,25 +7239,25 @@ function parseSpreadOrRestElement(parser, context, scope, privateScope, closingT
|
|
|
7208
7239
|
else if (token & 2097152) {
|
|
7209
7240
|
argument =
|
|
7210
7241
|
parser.getToken() === 2162700
|
|
7211
|
-
? parseObjectLiteralOrPattern(parser, context, scope, privateScope, 1, inGroup, isPattern, kind, origin
|
|
7212
|
-
: parseArrayExpressionOrPattern(parser, context, scope, privateScope, 1, inGroup, isPattern, kind, origin
|
|
7242
|
+
? parseObjectLiteralOrPattern(parser, context, scope, privateScope, 1, inGroup, isPattern, kind, origin)
|
|
7243
|
+
: parseArrayExpressionOrPattern(parser, context, scope, privateScope, 1, inGroup, isPattern, kind, origin);
|
|
7213
7244
|
token = parser.getToken();
|
|
7214
7245
|
if (token !== 1077936155 && token !== closingToken && token !== 18) {
|
|
7215
7246
|
if (parser.destructible & 8)
|
|
7216
7247
|
report(parser, 71);
|
|
7217
|
-
argument = parseMemberOrUpdateExpression(parser, context, privateScope, argument, inGroup, 0,
|
|
7248
|
+
argument = parseMemberOrUpdateExpression(parser, context, privateScope, argument, inGroup, 0, tokenStart);
|
|
7218
7249
|
destructible |= parser.assignable & 2 ? 16 : 0;
|
|
7219
7250
|
if ((parser.getToken() & 4194304) === 4194304) {
|
|
7220
7251
|
if (parser.getToken() !== 1077936155)
|
|
7221
7252
|
destructible |= 16;
|
|
7222
|
-
argument = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7253
|
+
argument = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, argument);
|
|
7223
7254
|
}
|
|
7224
7255
|
else {
|
|
7225
7256
|
if ((parser.getToken() & 8388608) === 8388608) {
|
|
7226
|
-
argument = parseBinaryExpression(parser, context, privateScope, 1,
|
|
7257
|
+
argument = parseBinaryExpression(parser, context, privateScope, 1, tokenStart, 4, token, argument);
|
|
7227
7258
|
}
|
|
7228
7259
|
if (consumeOpt(parser, context | 8192, 22)) {
|
|
7229
|
-
argument = parseConditionalExpression(parser, context, privateScope, argument,
|
|
7260
|
+
argument = parseConditionalExpression(parser, context, privateScope, argument, tokenStart);
|
|
7230
7261
|
}
|
|
7231
7262
|
destructible |=
|
|
7232
7263
|
parser.assignable & 2
|
|
@@ -7243,13 +7274,13 @@ function parseSpreadOrRestElement(parser, context, scope, privateScope, closingT
|
|
|
7243
7274
|
}
|
|
7244
7275
|
else {
|
|
7245
7276
|
destructible |= 32;
|
|
7246
|
-
argument = parseLeftHandSideExpression(parser, context, privateScope, 1, inGroup, 1
|
|
7247
|
-
const {
|
|
7277
|
+
argument = parseLeftHandSideExpression(parser, context, privateScope, 1, inGroup, 1);
|
|
7278
|
+
const { tokenStart } = parser;
|
|
7248
7279
|
const token = parser.getToken();
|
|
7249
7280
|
if (token === 1077936155) {
|
|
7250
7281
|
if (parser.assignable & 2)
|
|
7251
7282
|
report(parser, 26);
|
|
7252
|
-
argument = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7283
|
+
argument = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, argument);
|
|
7253
7284
|
destructible |= 16;
|
|
7254
7285
|
}
|
|
7255
7286
|
else {
|
|
@@ -7257,7 +7288,7 @@ function parseSpreadOrRestElement(parser, context, scope, privateScope, closingT
|
|
|
7257
7288
|
destructible |= 16;
|
|
7258
7289
|
}
|
|
7259
7290
|
else if (token !== closingToken) {
|
|
7260
|
-
argument = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7291
|
+
argument = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, argument);
|
|
7261
7292
|
}
|
|
7262
7293
|
destructible |=
|
|
7263
7294
|
parser.assignable & 1 ? 32 : 16;
|
|
@@ -7265,10 +7296,10 @@ function parseSpreadOrRestElement(parser, context, scope, privateScope, closingT
|
|
|
7265
7296
|
parser.destructible = destructible;
|
|
7266
7297
|
if (parser.getToken() !== closingToken && parser.getToken() !== 18)
|
|
7267
7298
|
report(parser, 161);
|
|
7268
|
-
return finishNode(
|
|
7299
|
+
return parser.finishNode({
|
|
7269
7300
|
type: isPattern ? 'RestElement' : 'SpreadElement',
|
|
7270
7301
|
argument: argument,
|
|
7271
|
-
});
|
|
7302
|
+
}, start);
|
|
7272
7303
|
}
|
|
7273
7304
|
if (parser.getToken() !== closingToken) {
|
|
7274
7305
|
if (kind & 1)
|
|
@@ -7277,8 +7308,8 @@ function parseSpreadOrRestElement(parser, context, scope, privateScope, closingT
|
|
|
7277
7308
|
if (destructible & 16)
|
|
7278
7309
|
report(parser, 26);
|
|
7279
7310
|
reinterpretToPattern(parser, argument);
|
|
7280
|
-
const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.
|
|
7281
|
-
argument = finishNode(
|
|
7311
|
+
const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.tokenStart);
|
|
7312
|
+
argument = parser.finishNode(isPattern
|
|
7282
7313
|
? {
|
|
7283
7314
|
type: 'AssignmentPattern',
|
|
7284
7315
|
left: argument,
|
|
@@ -7289,7 +7320,7 @@ function parseSpreadOrRestElement(parser, context, scope, privateScope, closingT
|
|
|
7289
7320
|
left: argument,
|
|
7290
7321
|
operator: '=',
|
|
7291
7322
|
right,
|
|
7292
|
-
});
|
|
7323
|
+
}, tokenStart);
|
|
7293
7324
|
destructible = 16;
|
|
7294
7325
|
}
|
|
7295
7326
|
else {
|
|
@@ -7297,12 +7328,12 @@ function parseSpreadOrRestElement(parser, context, scope, privateScope, closingT
|
|
|
7297
7328
|
}
|
|
7298
7329
|
}
|
|
7299
7330
|
parser.destructible = destructible;
|
|
7300
|
-
return finishNode(
|
|
7331
|
+
return parser.finishNode({
|
|
7301
7332
|
type: isPattern ? 'RestElement' : 'SpreadElement',
|
|
7302
7333
|
argument: argument,
|
|
7303
|
-
});
|
|
7334
|
+
}, start);
|
|
7304
7335
|
}
|
|
7305
|
-
function parseMethodDefinition(parser, context, privateScope, kind, inGroup, start
|
|
7336
|
+
function parseMethodDefinition(parser, context, privateScope, kind, inGroup, start) {
|
|
7306
7337
|
const modifierFlags = 262144 |
|
|
7307
7338
|
524288 |
|
|
7308
7339
|
2097152 |
|
|
@@ -7322,17 +7353,17 @@ function parseMethodDefinition(parser, context, privateScope, kind, inGroup, sta
|
|
|
7322
7353
|
const body = parseFunctionBody(parser, (context & -301992961) |
|
|
7323
7354
|
8388608 |
|
|
7324
7355
|
1048576, scope, privateScope, 0, void 0, scope?.parent?.scopeError);
|
|
7325
|
-
return finishNode(
|
|
7356
|
+
return parser.finishNode({
|
|
7326
7357
|
type: 'FunctionExpression',
|
|
7327
7358
|
params,
|
|
7328
7359
|
body,
|
|
7329
7360
|
async: (kind & 16) > 0,
|
|
7330
7361
|
generator: (kind & 8) > 0,
|
|
7331
7362
|
id: null,
|
|
7332
|
-
});
|
|
7363
|
+
}, start);
|
|
7333
7364
|
}
|
|
7334
|
-
function parseObjectLiteral(parser, context, privateScope, skipInitializer, inGroup
|
|
7335
|
-
const expr = parseObjectLiteralOrPattern(parser, context, void 0, privateScope, skipInitializer, inGroup, 0, 2, 0
|
|
7365
|
+
function parseObjectLiteral(parser, context, privateScope, skipInitializer, inGroup) {
|
|
7366
|
+
const expr = parseObjectLiteralOrPattern(parser, context, void 0, privateScope, skipInitializer, inGroup, 0, 2, 0);
|
|
7336
7367
|
if (parser.destructible & 64) {
|
|
7337
7368
|
report(parser, 63);
|
|
7338
7369
|
}
|
|
@@ -7341,17 +7372,18 @@ function parseObjectLiteral(parser, context, privateScope, skipInitializer, inGr
|
|
|
7341
7372
|
}
|
|
7342
7373
|
return expr;
|
|
7343
7374
|
}
|
|
7344
|
-
function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipInitializer, inGroup, isPattern, kind, origin
|
|
7375
|
+
function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipInitializer, inGroup, isPattern, kind, origin) {
|
|
7376
|
+
const { tokenStart: start } = parser;
|
|
7345
7377
|
nextToken(parser, context);
|
|
7346
7378
|
const properties = [];
|
|
7347
7379
|
let destructible = 0;
|
|
7348
7380
|
let prototypeCount = 0;
|
|
7349
7381
|
context = (context | 33554432) ^ 33554432;
|
|
7350
7382
|
while (parser.getToken() !== 1074790415) {
|
|
7351
|
-
const { tokenValue,
|
|
7383
|
+
const { tokenValue, tokenStart } = parser;
|
|
7352
7384
|
const token = parser.getToken();
|
|
7353
7385
|
if (token === 14) {
|
|
7354
|
-
properties.push(parseSpreadOrRestElement(parser, context, scope, privateScope, 1074790415, kind, origin, 0, inGroup, isPattern
|
|
7386
|
+
properties.push(parseSpreadOrRestElement(parser, context, scope, privateScope, 1074790415, kind, origin, 0, inGroup, isPattern));
|
|
7355
7387
|
}
|
|
7356
7388
|
else {
|
|
7357
7389
|
let state = 0;
|
|
@@ -7377,18 +7409,18 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7377
7409
|
addVarOrBlock(parser, context, scope, tokenValue, kind, origin);
|
|
7378
7410
|
if (consumeOpt(parser, context | 8192, 1077936155)) {
|
|
7379
7411
|
destructible |= 8;
|
|
7380
|
-
const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.
|
|
7412
|
+
const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.tokenStart);
|
|
7381
7413
|
destructible |=
|
|
7382
7414
|
parser.destructible & 256
|
|
7383
7415
|
? 256
|
|
7384
7416
|
: 0 | (parser.destructible & 128)
|
|
7385
7417
|
? 128
|
|
7386
7418
|
: 0;
|
|
7387
|
-
value = finishNode(
|
|
7419
|
+
value = parser.finishNode({
|
|
7388
7420
|
type: 'AssignmentPattern',
|
|
7389
7421
|
left: context & 134217728 ? Object.assign({}, key) : key,
|
|
7390
7422
|
right,
|
|
7391
|
-
});
|
|
7423
|
+
}, tokenStart);
|
|
7392
7424
|
}
|
|
7393
7425
|
else {
|
|
7394
7426
|
destructible |=
|
|
@@ -7398,15 +7430,15 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7398
7430
|
}
|
|
7399
7431
|
}
|
|
7400
7432
|
else if (consumeOpt(parser, context | 8192, 21)) {
|
|
7401
|
-
const {
|
|
7433
|
+
const { tokenStart } = parser;
|
|
7402
7434
|
if (tokenValue === '__proto__')
|
|
7403
7435
|
prototypeCount++;
|
|
7404
7436
|
if (parser.getToken() & 143360) {
|
|
7405
7437
|
const tokenAfterColon = parser.getToken();
|
|
7406
7438
|
const valueAfterColon = parser.tokenValue;
|
|
7407
|
-
value = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, inGroup, 1,
|
|
7439
|
+
value = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, inGroup, 1, tokenStart);
|
|
7408
7440
|
const token = parser.getToken();
|
|
7409
|
-
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0,
|
|
7441
|
+
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0, tokenStart);
|
|
7410
7442
|
if (parser.getToken() === 18 || parser.getToken() === 1074790415) {
|
|
7411
7443
|
if (token === 1077936155 || token === 1074790415 || token === 18) {
|
|
7412
7444
|
destructible |= parser.destructible & 128 ? 128 : 0;
|
|
@@ -7434,23 +7466,23 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7434
7466
|
else if (scope) {
|
|
7435
7467
|
addVarOrBlock(parser, context, scope, valueAfterColon, kind, origin);
|
|
7436
7468
|
}
|
|
7437
|
-
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7469
|
+
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
|
|
7438
7470
|
}
|
|
7439
7471
|
else {
|
|
7440
7472
|
destructible |= 16;
|
|
7441
7473
|
if ((parser.getToken() & 8388608) === 8388608) {
|
|
7442
|
-
value = parseBinaryExpression(parser, context, privateScope, 1,
|
|
7474
|
+
value = parseBinaryExpression(parser, context, privateScope, 1, tokenStart, 4, token, value);
|
|
7443
7475
|
}
|
|
7444
7476
|
if (consumeOpt(parser, context | 8192, 22)) {
|
|
7445
|
-
value = parseConditionalExpression(parser, context, privateScope, value,
|
|
7477
|
+
value = parseConditionalExpression(parser, context, privateScope, value, tokenStart);
|
|
7446
7478
|
}
|
|
7447
7479
|
}
|
|
7448
7480
|
}
|
|
7449
7481
|
else if ((parser.getToken() & 2097152) === 2097152) {
|
|
7450
7482
|
value =
|
|
7451
7483
|
parser.getToken() === 69271571
|
|
7452
|
-
? parseArrayExpressionOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin
|
|
7453
|
-
: parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin
|
|
7484
|
+
? parseArrayExpressionOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin)
|
|
7485
|
+
: parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin);
|
|
7454
7486
|
destructible = parser.destructible;
|
|
7455
7487
|
parser.assignable =
|
|
7456
7488
|
destructible & 16 ? 2 : 1;
|
|
@@ -7462,17 +7494,17 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7462
7494
|
report(parser, 71);
|
|
7463
7495
|
}
|
|
7464
7496
|
else {
|
|
7465
|
-
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0,
|
|
7497
|
+
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0, tokenStart);
|
|
7466
7498
|
destructible = parser.assignable & 2 ? 16 : 0;
|
|
7467
7499
|
if ((parser.getToken() & 4194304) === 4194304) {
|
|
7468
|
-
value = parseAssignmentExpressionOrPattern(parser, context, privateScope, inGroup, isPattern,
|
|
7500
|
+
value = parseAssignmentExpressionOrPattern(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
|
|
7469
7501
|
}
|
|
7470
7502
|
else {
|
|
7471
7503
|
if ((parser.getToken() & 8388608) === 8388608) {
|
|
7472
|
-
value = parseBinaryExpression(parser, context, privateScope, 1,
|
|
7504
|
+
value = parseBinaryExpression(parser, context, privateScope, 1, tokenStart, 4, token, value);
|
|
7473
7505
|
}
|
|
7474
7506
|
if (consumeOpt(parser, context | 8192, 22)) {
|
|
7475
|
-
value = parseConditionalExpression(parser, context, privateScope, value,
|
|
7507
|
+
value = parseConditionalExpression(parser, context, privateScope, value, tokenStart);
|
|
7476
7508
|
}
|
|
7477
7509
|
destructible |=
|
|
7478
7510
|
parser.assignable & 2
|
|
@@ -7482,7 +7514,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7482
7514
|
}
|
|
7483
7515
|
}
|
|
7484
7516
|
else {
|
|
7485
|
-
value = parseLeftHandSideExpression(parser, context, privateScope, 1, inGroup, 1
|
|
7517
|
+
value = parseLeftHandSideExpression(parser, context, privateScope, 1, inGroup, 1);
|
|
7486
7518
|
destructible |=
|
|
7487
7519
|
parser.assignable & 1
|
|
7488
7520
|
? 32
|
|
@@ -7492,12 +7524,12 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7492
7524
|
destructible |= 16;
|
|
7493
7525
|
}
|
|
7494
7526
|
else {
|
|
7495
|
-
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0,
|
|
7527
|
+
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0, tokenStart);
|
|
7496
7528
|
destructible = parser.assignable & 2 ? 16 : 0;
|
|
7497
7529
|
if (parser.getToken() !== 18 && token !== 1074790415) {
|
|
7498
7530
|
if (parser.getToken() !== 1077936155)
|
|
7499
7531
|
destructible |= 16;
|
|
7500
|
-
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7532
|
+
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
|
|
7501
7533
|
}
|
|
7502
7534
|
}
|
|
7503
7535
|
}
|
|
@@ -7514,7 +7546,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7514
7546
|
: 1) | 2;
|
|
7515
7547
|
key = parseComputedPropertyName(parser, context, privateScope, inGroup);
|
|
7516
7548
|
destructible |= parser.assignable;
|
|
7517
|
-
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.
|
|
7549
|
+
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.tokenStart);
|
|
7518
7550
|
}
|
|
7519
7551
|
else if (parser.getToken() & 143360) {
|
|
7520
7552
|
destructible |= 16;
|
|
@@ -7535,12 +7567,12 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7535
7567
|
report(parser, 0);
|
|
7536
7568
|
}
|
|
7537
7569
|
key = parseIdentifier(parser, context);
|
|
7538
|
-
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.
|
|
7570
|
+
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.tokenStart);
|
|
7539
7571
|
}
|
|
7540
7572
|
else if (parser.getToken() === 67174411) {
|
|
7541
7573
|
destructible |= 16;
|
|
7542
7574
|
state |= 1;
|
|
7543
|
-
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.
|
|
7575
|
+
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.tokenStart);
|
|
7544
7576
|
}
|
|
7545
7577
|
else if (parser.getToken() === 8391476) {
|
|
7546
7578
|
destructible |= 16;
|
|
@@ -7570,7 +7602,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7570
7602
|
else {
|
|
7571
7603
|
report(parser, 30, KeywordDescTable[parser.getToken() & 255]);
|
|
7572
7604
|
}
|
|
7573
|
-
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.
|
|
7605
|
+
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.tokenStart);
|
|
7574
7606
|
}
|
|
7575
7607
|
else if ((parser.getToken() & 134217728) === 134217728) {
|
|
7576
7608
|
if (token === 209005)
|
|
@@ -7583,7 +7615,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7583
7615
|
: 1;
|
|
7584
7616
|
destructible |= 16;
|
|
7585
7617
|
key = parseLiteral(parser, context);
|
|
7586
|
-
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.
|
|
7618
|
+
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.tokenStart);
|
|
7587
7619
|
}
|
|
7588
7620
|
else {
|
|
7589
7621
|
report(parser, 133);
|
|
@@ -7593,14 +7625,14 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7593
7625
|
key = parseLiteral(parser, context);
|
|
7594
7626
|
if (parser.getToken() === 21) {
|
|
7595
7627
|
consume(parser, context | 8192, 21);
|
|
7596
|
-
const {
|
|
7628
|
+
const { tokenStart } = parser;
|
|
7597
7629
|
if (tokenValue === '__proto__')
|
|
7598
7630
|
prototypeCount++;
|
|
7599
7631
|
if (parser.getToken() & 143360) {
|
|
7600
|
-
value = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, inGroup, 1,
|
|
7632
|
+
value = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, inGroup, 1, tokenStart);
|
|
7601
7633
|
const { tokenValue: valueAfterColon } = parser;
|
|
7602
7634
|
const token = parser.getToken();
|
|
7603
|
-
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0,
|
|
7635
|
+
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0, tokenStart);
|
|
7604
7636
|
if (parser.getToken() === 18 || parser.getToken() === 1074790415) {
|
|
7605
7637
|
if (token === 1077936155 || token === 1074790415 || token === 18) {
|
|
7606
7638
|
if (parser.assignable & 2) {
|
|
@@ -7620,18 +7652,18 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7620
7652
|
else if (parser.getToken() === 1077936155) {
|
|
7621
7653
|
if (parser.assignable & 2)
|
|
7622
7654
|
destructible |= 16;
|
|
7623
|
-
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7655
|
+
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
|
|
7624
7656
|
}
|
|
7625
7657
|
else {
|
|
7626
7658
|
destructible |= 16;
|
|
7627
|
-
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7659
|
+
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
|
|
7628
7660
|
}
|
|
7629
7661
|
}
|
|
7630
7662
|
else if ((parser.getToken() & 2097152) === 2097152) {
|
|
7631
7663
|
value =
|
|
7632
7664
|
parser.getToken() === 69271571
|
|
7633
|
-
? parseArrayExpressionOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin
|
|
7634
|
-
: parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin
|
|
7665
|
+
? parseArrayExpressionOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin)
|
|
7666
|
+
: parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin);
|
|
7635
7667
|
destructible = parser.destructible;
|
|
7636
7668
|
parser.assignable =
|
|
7637
7669
|
destructible & 16 ? 2 : 1;
|
|
@@ -7641,17 +7673,17 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7641
7673
|
}
|
|
7642
7674
|
}
|
|
7643
7675
|
else if ((parser.destructible & 8) !== 8) {
|
|
7644
|
-
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0,
|
|
7676
|
+
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0, tokenStart);
|
|
7645
7677
|
destructible = parser.assignable & 2 ? 16 : 0;
|
|
7646
7678
|
if ((parser.getToken() & 4194304) === 4194304) {
|
|
7647
|
-
value = parseAssignmentExpressionOrPattern(parser, context, privateScope, inGroup, isPattern,
|
|
7679
|
+
value = parseAssignmentExpressionOrPattern(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
|
|
7648
7680
|
}
|
|
7649
7681
|
else {
|
|
7650
7682
|
if ((parser.getToken() & 8388608) === 8388608) {
|
|
7651
|
-
value = parseBinaryExpression(parser, context, privateScope, 1,
|
|
7683
|
+
value = parseBinaryExpression(parser, context, privateScope, 1, tokenStart, 4, token, value);
|
|
7652
7684
|
}
|
|
7653
7685
|
if (consumeOpt(parser, context | 8192, 22)) {
|
|
7654
|
-
value = parseConditionalExpression(parser, context, privateScope, value,
|
|
7686
|
+
value = parseConditionalExpression(parser, context, privateScope, value, tokenStart);
|
|
7655
7687
|
}
|
|
7656
7688
|
destructible |=
|
|
7657
7689
|
parser.assignable & 2
|
|
@@ -7661,7 +7693,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7661
7693
|
}
|
|
7662
7694
|
}
|
|
7663
7695
|
else {
|
|
7664
|
-
value = parseLeftHandSideExpression(parser, context, privateScope, 1, 0, 1
|
|
7696
|
+
value = parseLeftHandSideExpression(parser, context, privateScope, 1, 0, 1);
|
|
7665
7697
|
destructible |=
|
|
7666
7698
|
parser.assignable & 1
|
|
7667
7699
|
? 32
|
|
@@ -7672,19 +7704,19 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7672
7704
|
}
|
|
7673
7705
|
}
|
|
7674
7706
|
else {
|
|
7675
|
-
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0,
|
|
7707
|
+
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0, tokenStart);
|
|
7676
7708
|
destructible = parser.assignable & 1 ? 0 : 16;
|
|
7677
7709
|
if (parser.getToken() !== 18 && parser.getToken() !== 1074790415) {
|
|
7678
7710
|
if (parser.getToken() !== 1077936155)
|
|
7679
7711
|
destructible |= 16;
|
|
7680
|
-
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7712
|
+
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
|
|
7681
7713
|
}
|
|
7682
7714
|
}
|
|
7683
7715
|
}
|
|
7684
7716
|
}
|
|
7685
7717
|
else if (parser.getToken() === 67174411) {
|
|
7686
7718
|
state |= 1;
|
|
7687
|
-
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.
|
|
7719
|
+
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.tokenStart);
|
|
7688
7720
|
destructible = parser.assignable | 16;
|
|
7689
7721
|
}
|
|
7690
7722
|
else {
|
|
@@ -7697,12 +7729,12 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7697
7729
|
state |= 2;
|
|
7698
7730
|
if (parser.getToken() === 21) {
|
|
7699
7731
|
nextToken(parser, context | 8192);
|
|
7700
|
-
const {
|
|
7732
|
+
const { tokenStart, tokenValue } = parser;
|
|
7701
7733
|
const tokenAfterColon = parser.getToken();
|
|
7702
7734
|
if (parser.getToken() & 143360) {
|
|
7703
|
-
value = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, inGroup, 1,
|
|
7735
|
+
value = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, inGroup, 1, tokenStart);
|
|
7704
7736
|
const token = parser.getToken();
|
|
7705
|
-
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0,
|
|
7737
|
+
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0, tokenStart);
|
|
7706
7738
|
if ((parser.getToken() & 4194304) === 4194304) {
|
|
7707
7739
|
destructible |=
|
|
7708
7740
|
parser.assignable & 2
|
|
@@ -7710,7 +7742,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7710
7742
|
: token === 1077936155
|
|
7711
7743
|
? 0
|
|
7712
7744
|
: 32;
|
|
7713
|
-
value = parseAssignmentExpressionOrPattern(parser, context, privateScope, inGroup, isPattern,
|
|
7745
|
+
value = parseAssignmentExpressionOrPattern(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
|
|
7714
7746
|
}
|
|
7715
7747
|
else if (parser.getToken() === 18 || parser.getToken() === 1074790415) {
|
|
7716
7748
|
if (token === 1077936155 || token === 1074790415 || token === 18) {
|
|
@@ -7730,14 +7762,14 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7730
7762
|
}
|
|
7731
7763
|
else {
|
|
7732
7764
|
destructible |= 16;
|
|
7733
|
-
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7765
|
+
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
|
|
7734
7766
|
}
|
|
7735
7767
|
}
|
|
7736
7768
|
else if ((parser.getToken() & 2097152) === 2097152) {
|
|
7737
7769
|
value =
|
|
7738
7770
|
parser.getToken() === 69271571
|
|
7739
|
-
? parseArrayExpressionOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin
|
|
7740
|
-
: parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin
|
|
7771
|
+
? parseArrayExpressionOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin)
|
|
7772
|
+
: parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, inGroup, isPattern, kind, origin);
|
|
7741
7773
|
destructible = parser.destructible;
|
|
7742
7774
|
parser.assignable =
|
|
7743
7775
|
destructible & 16 ? 2 : 1;
|
|
@@ -7749,20 +7781,20 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7749
7781
|
report(parser, 62);
|
|
7750
7782
|
}
|
|
7751
7783
|
else {
|
|
7752
|
-
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0,
|
|
7784
|
+
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0, tokenStart);
|
|
7753
7785
|
destructible =
|
|
7754
7786
|
parser.assignable & 2 ? destructible | 16 : 0;
|
|
7755
7787
|
if ((parser.getToken() & 4194304) === 4194304) {
|
|
7756
7788
|
if (parser.getToken() !== 1077936155)
|
|
7757
7789
|
destructible |= 16;
|
|
7758
|
-
value = parseAssignmentExpressionOrPattern(parser, context, privateScope, inGroup, isPattern,
|
|
7790
|
+
value = parseAssignmentExpressionOrPattern(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
|
|
7759
7791
|
}
|
|
7760
7792
|
else {
|
|
7761
7793
|
if ((parser.getToken() & 8388608) === 8388608) {
|
|
7762
|
-
value = parseBinaryExpression(parser, context, privateScope, 1,
|
|
7794
|
+
value = parseBinaryExpression(parser, context, privateScope, 1, tokenStart, 4, token, value);
|
|
7763
7795
|
}
|
|
7764
7796
|
if (consumeOpt(parser, context | 8192, 22)) {
|
|
7765
|
-
value = parseConditionalExpression(parser, context, privateScope, value,
|
|
7797
|
+
value = parseConditionalExpression(parser, context, privateScope, value, tokenStart);
|
|
7766
7798
|
}
|
|
7767
7799
|
destructible |=
|
|
7768
7800
|
parser.assignable & 2
|
|
@@ -7772,7 +7804,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7772
7804
|
}
|
|
7773
7805
|
}
|
|
7774
7806
|
else {
|
|
7775
|
-
value = parseLeftHandSideExpression(parser, context, privateScope, 1, 0, 1
|
|
7807
|
+
value = parseLeftHandSideExpression(parser, context, privateScope, 1, 0, 1);
|
|
7776
7808
|
destructible |=
|
|
7777
7809
|
parser.assignable & 1
|
|
7778
7810
|
? 32
|
|
@@ -7782,19 +7814,19 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7782
7814
|
destructible |= 16;
|
|
7783
7815
|
}
|
|
7784
7816
|
else {
|
|
7785
|
-
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0,
|
|
7817
|
+
value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0, tokenStart);
|
|
7786
7818
|
destructible = parser.assignable & 1 ? 0 : 16;
|
|
7787
7819
|
if (parser.getToken() !== 18 && parser.getToken() !== 1074790415) {
|
|
7788
7820
|
if (parser.getToken() !== 1077936155)
|
|
7789
7821
|
destructible |= 16;
|
|
7790
|
-
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern,
|
|
7822
|
+
value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
|
|
7791
7823
|
}
|
|
7792
7824
|
}
|
|
7793
7825
|
}
|
|
7794
7826
|
}
|
|
7795
7827
|
else if (parser.getToken() === 67174411) {
|
|
7796
7828
|
state |= 1;
|
|
7797
|
-
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.
|
|
7829
|
+
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.tokenStart);
|
|
7798
7830
|
destructible = 16;
|
|
7799
7831
|
}
|
|
7800
7832
|
else {
|
|
@@ -7810,10 +7842,10 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7810
7842
|
state |= 1;
|
|
7811
7843
|
if (parser.getToken() === 67174411) {
|
|
7812
7844
|
destructible |= 16;
|
|
7813
|
-
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.
|
|
7845
|
+
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.tokenStart);
|
|
7814
7846
|
}
|
|
7815
7847
|
else {
|
|
7816
|
-
reportMessageAt(parser.
|
|
7848
|
+
reportMessageAt(parser.tokenStart, parser.currentLocation, token === 209005
|
|
7817
7849
|
? 46
|
|
7818
7850
|
: token === 209008 || parser.getToken() === 209009
|
|
7819
7851
|
? 45
|
|
@@ -7824,13 +7856,13 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7824
7856
|
destructible |= 16;
|
|
7825
7857
|
key = parseLiteral(parser, context);
|
|
7826
7858
|
state |= 1;
|
|
7827
|
-
value = parseMethodDefinition(parser, context, privateScope, state, inGroup,
|
|
7859
|
+
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, tokenStart);
|
|
7828
7860
|
}
|
|
7829
7861
|
else if (parser.getToken() === 69271571) {
|
|
7830
7862
|
destructible |= 16;
|
|
7831
7863
|
state |= 2 | 1;
|
|
7832
7864
|
key = parseComputedPropertyName(parser, context, privateScope, inGroup);
|
|
7833
|
-
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.
|
|
7865
|
+
value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.tokenStart);
|
|
7834
7866
|
}
|
|
7835
7867
|
else {
|
|
7836
7868
|
report(parser, 126);
|
|
@@ -7841,7 +7873,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7841
7873
|
}
|
|
7842
7874
|
destructible |= parser.destructible & 128 ? 128 : 0;
|
|
7843
7875
|
parser.destructible = destructible;
|
|
7844
|
-
properties.push(finishNode(
|
|
7876
|
+
properties.push(parser.finishNode({
|
|
7845
7877
|
type: 'Property',
|
|
7846
7878
|
key: key,
|
|
7847
7879
|
value,
|
|
@@ -7849,7 +7881,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7849
7881
|
computed: (state & 2) > 0,
|
|
7850
7882
|
method: (state & 1) > 0,
|
|
7851
7883
|
shorthand: (state & 4) > 0,
|
|
7852
|
-
}));
|
|
7884
|
+
}, tokenStart));
|
|
7853
7885
|
}
|
|
7854
7886
|
destructible |= parser.destructible;
|
|
7855
7887
|
if (parser.getToken() !== 18)
|
|
@@ -7859,12 +7891,12 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
|
|
|
7859
7891
|
consume(parser, context, 1074790415);
|
|
7860
7892
|
if (prototypeCount > 1)
|
|
7861
7893
|
destructible |= 64;
|
|
7862
|
-
const node = finishNode(
|
|
7894
|
+
const node = parser.finishNode({
|
|
7863
7895
|
type: isPattern ? 'ObjectPattern' : 'ObjectExpression',
|
|
7864
7896
|
properties,
|
|
7865
|
-
});
|
|
7897
|
+
}, start);
|
|
7866
7898
|
if (!skipInitializer && parser.getToken() & 4194304) {
|
|
7867
|
-
return parseArrayOrObjectAssignmentPattern(parser, context, privateScope, destructible, inGroup, isPattern, start,
|
|
7899
|
+
return parseArrayOrObjectAssignmentPattern(parser, context, privateScope, destructible, inGroup, isPattern, start, node);
|
|
7868
7900
|
}
|
|
7869
7901
|
parser.destructible = destructible;
|
|
7870
7902
|
return node;
|
|
@@ -7891,7 +7923,7 @@ function parseMethodFormals(parser, context, scope, privateScope, kind, type, in
|
|
|
7891
7923
|
let isNonSimpleParameterList = 0;
|
|
7892
7924
|
while (parser.getToken() !== 18) {
|
|
7893
7925
|
let left = null;
|
|
7894
|
-
const {
|
|
7926
|
+
const { tokenStart } = parser;
|
|
7895
7927
|
if (parser.getToken() & 143360) {
|
|
7896
7928
|
if ((context & 256) === 0) {
|
|
7897
7929
|
if ((parser.getToken() & 36864) === 36864) {
|
|
@@ -7901,17 +7933,17 @@ function parseMethodFormals(parser, context, scope, privateScope, kind, type, in
|
|
|
7901
7933
|
parser.flags |= 512;
|
|
7902
7934
|
}
|
|
7903
7935
|
}
|
|
7904
|
-
left = parseAndClassifyIdentifier(parser, context, scope, kind | 1, 0
|
|
7936
|
+
left = parseAndClassifyIdentifier(parser, context, scope, kind | 1, 0);
|
|
7905
7937
|
}
|
|
7906
7938
|
else {
|
|
7907
7939
|
if (parser.getToken() === 2162700) {
|
|
7908
|
-
left = parseObjectLiteralOrPattern(parser, context, scope, privateScope, 1, inGroup, 1, type, 0
|
|
7940
|
+
left = parseObjectLiteralOrPattern(parser, context, scope, privateScope, 1, inGroup, 1, type, 0);
|
|
7909
7941
|
}
|
|
7910
7942
|
else if (parser.getToken() === 69271571) {
|
|
7911
|
-
left = parseArrayExpressionOrPattern(parser, context, scope, privateScope, 1, inGroup, 1, type, 0
|
|
7943
|
+
left = parseArrayExpressionOrPattern(parser, context, scope, privateScope, 1, inGroup, 1, type, 0);
|
|
7912
7944
|
}
|
|
7913
7945
|
else if (parser.getToken() === 14) {
|
|
7914
|
-
left = parseSpreadOrRestElement(parser, context, scope, privateScope, 16, type, 0, 0, inGroup, 1
|
|
7946
|
+
left = parseSpreadOrRestElement(parser, context, scope, privateScope, 16, type, 0, 0, inGroup, 1);
|
|
7915
7947
|
}
|
|
7916
7948
|
isNonSimpleParameterList = 1;
|
|
7917
7949
|
if (parser.destructible & (32 | 16))
|
|
@@ -7920,12 +7952,12 @@ function parseMethodFormals(parser, context, scope, privateScope, kind, type, in
|
|
|
7920
7952
|
if (parser.getToken() === 1077936155) {
|
|
7921
7953
|
nextToken(parser, context | 8192);
|
|
7922
7954
|
isNonSimpleParameterList = 1;
|
|
7923
|
-
const right = parseExpression(parser, context, privateScope, 1, 0, parser.
|
|
7924
|
-
left = finishNode(
|
|
7955
|
+
const right = parseExpression(parser, context, privateScope, 1, 0, parser.tokenStart);
|
|
7956
|
+
left = parser.finishNode({
|
|
7925
7957
|
type: 'AssignmentPattern',
|
|
7926
7958
|
left: left,
|
|
7927
7959
|
right,
|
|
7928
|
-
});
|
|
7960
|
+
}, tokenStart);
|
|
7929
7961
|
}
|
|
7930
7962
|
setterArgs++;
|
|
7931
7963
|
params.push(left);
|
|
@@ -7947,18 +7979,18 @@ function parseMethodFormals(parser, context, scope, privateScope, kind, type, in
|
|
|
7947
7979
|
}
|
|
7948
7980
|
function parseComputedPropertyName(parser, context, privateScope, inGroup) {
|
|
7949
7981
|
nextToken(parser, context | 8192);
|
|
7950
|
-
const key = parseExpression(parser, (context | 33554432) ^ 33554432, privateScope, 1, inGroup, parser.
|
|
7982
|
+
const key = parseExpression(parser, (context | 33554432) ^ 33554432, privateScope, 1, inGroup, parser.tokenStart);
|
|
7951
7983
|
consume(parser, context, 20);
|
|
7952
7984
|
return key;
|
|
7953
7985
|
}
|
|
7954
|
-
function parseParenthesizedExpression(parser, context, privateScope, canAssign, kind, origin, start
|
|
7986
|
+
function parseParenthesizedExpression(parser, context, privateScope, canAssign, kind, origin, start) {
|
|
7955
7987
|
parser.flags = (parser.flags | 128) ^ 128;
|
|
7956
|
-
const
|
|
7988
|
+
const parenthesesStart = parser.tokenStart;
|
|
7957
7989
|
nextToken(parser, context | 8192 | 67108864);
|
|
7958
7990
|
const scope = context & 16 ? addChildScope(createScope(), 1024) : void 0;
|
|
7959
7991
|
context = (context | 33554432) ^ 33554432;
|
|
7960
7992
|
if (consumeOpt(parser, context, 16)) {
|
|
7961
|
-
return parseParenthesizedArrow(parser, context, scope, privateScope, [], canAssign, 0, start
|
|
7993
|
+
return parseParenthesizedArrow(parser, context, scope, privateScope, [], canAssign, 0, start);
|
|
7962
7994
|
}
|
|
7963
7995
|
let destructible = 0;
|
|
7964
7996
|
parser.destructible &= -385;
|
|
@@ -7967,10 +7999,10 @@ function parseParenthesizedExpression(parser, context, privateScope, canAssign,
|
|
|
7967
7999
|
let isSequence = 0;
|
|
7968
8000
|
let isNonSimpleParameterList = 0;
|
|
7969
8001
|
let hasStrictReserved = 0;
|
|
7970
|
-
const
|
|
8002
|
+
const tokenAfterParenthesesStart = parser.tokenStart;
|
|
7971
8003
|
parser.assignable = 1;
|
|
7972
8004
|
while (parser.getToken() !== 16) {
|
|
7973
|
-
const {
|
|
8005
|
+
const { tokenStart } = parser;
|
|
7974
8006
|
const token = parser.getToken();
|
|
7975
8007
|
if (token & 143360) {
|
|
7976
8008
|
if (scope)
|
|
@@ -7981,7 +8013,7 @@ function parseParenthesizedExpression(parser, context, privateScope, canAssign,
|
|
|
7981
8013
|
else if ((token & 36864) === 36864) {
|
|
7982
8014
|
hasStrictReserved = 1;
|
|
7983
8015
|
}
|
|
7984
|
-
expr = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, 1, 1,
|
|
8016
|
+
expr = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, 1, 1, tokenStart);
|
|
7985
8017
|
if (parser.getToken() === 16 || parser.getToken() === 18) {
|
|
7986
8018
|
if (parser.assignable & 2) {
|
|
7987
8019
|
destructible |= 16;
|
|
@@ -7995,32 +8027,32 @@ function parseParenthesizedExpression(parser, context, privateScope, canAssign,
|
|
|
7995
8027
|
else {
|
|
7996
8028
|
destructible |= 16;
|
|
7997
8029
|
}
|
|
7998
|
-
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 1, 0,
|
|
8030
|
+
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 1, 0, tokenStart);
|
|
7999
8031
|
if (parser.getToken() !== 16 && parser.getToken() !== 18) {
|
|
8000
|
-
expr = parseAssignmentExpression(parser, context, privateScope, 1, 0,
|
|
8032
|
+
expr = parseAssignmentExpression(parser, context, privateScope, 1, 0, tokenStart, expr);
|
|
8001
8033
|
}
|
|
8002
8034
|
}
|
|
8003
8035
|
}
|
|
8004
8036
|
else if ((token & 2097152) === 2097152) {
|
|
8005
8037
|
expr =
|
|
8006
8038
|
token === 2162700
|
|
8007
|
-
? parseObjectLiteralOrPattern(parser, context | 67108864, scope, privateScope, 0, 1, 0, kind, origin
|
|
8008
|
-
: parseArrayExpressionOrPattern(parser, context | 67108864, scope, privateScope, 0, 1, 0, kind, origin
|
|
8039
|
+
? parseObjectLiteralOrPattern(parser, context | 67108864, scope, privateScope, 0, 1, 0, kind, origin)
|
|
8040
|
+
: parseArrayExpressionOrPattern(parser, context | 67108864, scope, privateScope, 0, 1, 0, kind, origin);
|
|
8009
8041
|
destructible |= parser.destructible;
|
|
8010
8042
|
isNonSimpleParameterList = 1;
|
|
8011
8043
|
parser.assignable = 2;
|
|
8012
8044
|
if (parser.getToken() !== 16 && parser.getToken() !== 18) {
|
|
8013
8045
|
if (destructible & 8)
|
|
8014
8046
|
report(parser, 122);
|
|
8015
|
-
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0,
|
|
8047
|
+
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0, tokenStart);
|
|
8016
8048
|
destructible |= 16;
|
|
8017
8049
|
if (parser.getToken() !== 16 && parser.getToken() !== 18) {
|
|
8018
|
-
expr = parseAssignmentExpression(parser, context, privateScope, 0, 0,
|
|
8050
|
+
expr = parseAssignmentExpression(parser, context, privateScope, 0, 0, tokenStart, expr);
|
|
8019
8051
|
}
|
|
8020
8052
|
}
|
|
8021
8053
|
}
|
|
8022
8054
|
else if (token === 14) {
|
|
8023
|
-
expr = parseSpreadOrRestElement(parser, context, scope, privateScope, 16, kind, origin, 0, 1, 0
|
|
8055
|
+
expr = parseSpreadOrRestElement(parser, context, scope, privateScope, 16, kind, origin, 0, 1, 0);
|
|
8024
8056
|
if (parser.destructible & 16)
|
|
8025
8057
|
report(parser, 74);
|
|
8026
8058
|
isNonSimpleParameterList = 1;
|
|
@@ -8032,7 +8064,7 @@ function parseParenthesizedExpression(parser, context, privateScope, canAssign,
|
|
|
8032
8064
|
}
|
|
8033
8065
|
else {
|
|
8034
8066
|
destructible |= 16;
|
|
8035
|
-
expr = parseExpression(parser, context, privateScope, 1, 1,
|
|
8067
|
+
expr = parseExpression(parser, context, privateScope, 1, 1, tokenStart);
|
|
8036
8068
|
if (isSequence && (parser.getToken() === 16 || parser.getToken() === 18)) {
|
|
8037
8069
|
expressions.push(expr);
|
|
8038
8070
|
}
|
|
@@ -8044,21 +8076,21 @@ function parseParenthesizedExpression(parser, context, privateScope, canAssign,
|
|
|
8044
8076
|
}
|
|
8045
8077
|
if (isSequence) {
|
|
8046
8078
|
while (consumeOpt(parser, context | 8192, 18)) {
|
|
8047
|
-
expressions.push(parseExpression(parser, context, privateScope, 1, 1, parser.
|
|
8079
|
+
expressions.push(parseExpression(parser, context, privateScope, 1, 1, parser.tokenStart));
|
|
8048
8080
|
}
|
|
8049
8081
|
parser.assignable = 2;
|
|
8050
|
-
expr = finishNode(
|
|
8082
|
+
expr = parser.finishNode({
|
|
8051
8083
|
type: 'SequenceExpression',
|
|
8052
8084
|
expressions,
|
|
8053
|
-
});
|
|
8085
|
+
}, tokenAfterParenthesesStart);
|
|
8054
8086
|
}
|
|
8055
8087
|
consume(parser, context, 16);
|
|
8056
8088
|
parser.destructible = destructible;
|
|
8057
8089
|
return context & 32
|
|
8058
|
-
? finishNode(
|
|
8090
|
+
? parser.finishNode({
|
|
8059
8091
|
type: 'ParenthesizedExpression',
|
|
8060
8092
|
expression: expr,
|
|
8061
|
-
})
|
|
8093
|
+
}, parenthesesStart)
|
|
8062
8094
|
: expr;
|
|
8063
8095
|
}
|
|
8064
8096
|
if (isSequence && (parser.getToken() === 16 || parser.getToken() === 18)) {
|
|
@@ -8077,10 +8109,10 @@ function parseParenthesizedExpression(parser, context, privateScope, canAssign,
|
|
|
8077
8109
|
}
|
|
8078
8110
|
if (isSequence) {
|
|
8079
8111
|
parser.assignable = 2;
|
|
8080
|
-
expr = finishNode(
|
|
8112
|
+
expr = parser.finishNode({
|
|
8081
8113
|
type: 'SequenceExpression',
|
|
8082
8114
|
expressions,
|
|
8083
|
-
});
|
|
8115
|
+
}, tokenAfterParenthesesStart);
|
|
8084
8116
|
}
|
|
8085
8117
|
consume(parser, context, 16);
|
|
8086
8118
|
if (destructible & 16 && destructible & 8)
|
|
@@ -8103,7 +8135,7 @@ function parseParenthesizedExpression(parser, context, privateScope, canAssign,
|
|
|
8103
8135
|
parser.flags |= 128;
|
|
8104
8136
|
if (hasStrictReserved)
|
|
8105
8137
|
parser.flags |= 256;
|
|
8106
|
-
return parseParenthesizedArrow(parser, context, scope, privateScope, isSequence ? expressions : [expr], canAssign, 0, start
|
|
8138
|
+
return parseParenthesizedArrow(parser, context, scope, privateScope, isSequence ? expressions : [expr], canAssign, 0, start);
|
|
8107
8139
|
}
|
|
8108
8140
|
if (destructible & 64) {
|
|
8109
8141
|
report(parser, 63);
|
|
@@ -8113,13 +8145,14 @@ function parseParenthesizedExpression(parser, context, privateScope, canAssign,
|
|
|
8113
8145
|
}
|
|
8114
8146
|
parser.destructible = ((parser.destructible | 256) ^ 256) | destructible;
|
|
8115
8147
|
return context & 32
|
|
8116
|
-
? finishNode(
|
|
8148
|
+
? parser.finishNode({
|
|
8117
8149
|
type: 'ParenthesizedExpression',
|
|
8118
8150
|
expression: expr,
|
|
8119
|
-
})
|
|
8151
|
+
}, parenthesesStart)
|
|
8120
8152
|
: expr;
|
|
8121
8153
|
}
|
|
8122
|
-
function parseIdentifierOrArrow(parser, context, privateScope
|
|
8154
|
+
function parseIdentifierOrArrow(parser, context, privateScope) {
|
|
8155
|
+
const { tokenStart: start } = parser;
|
|
8123
8156
|
const { tokenValue } = parser;
|
|
8124
8157
|
let isNonSimpleParameterList = 0;
|
|
8125
8158
|
let hasStrictReserved = 0;
|
|
@@ -8139,27 +8172,27 @@ function parseIdentifierOrArrow(parser, context, privateScope, start, line, colu
|
|
|
8139
8172
|
parser.flags |= 128;
|
|
8140
8173
|
if (hasStrictReserved)
|
|
8141
8174
|
parser.flags |= 256;
|
|
8142
|
-
return parseArrowFunctionExpression(parser, context, scope, privateScope, [expr], 0, start
|
|
8175
|
+
return parseArrowFunctionExpression(parser, context, scope, privateScope, [expr], 0, start);
|
|
8143
8176
|
}
|
|
8144
8177
|
return expr;
|
|
8145
8178
|
}
|
|
8146
|
-
function parseArrowFromIdentifier(parser, context, privateScope, value, expr, inNew, canAssign, isAsync, start
|
|
8179
|
+
function parseArrowFromIdentifier(parser, context, privateScope, value, expr, inNew, canAssign, isAsync, start) {
|
|
8147
8180
|
if (!canAssign)
|
|
8148
8181
|
report(parser, 57);
|
|
8149
8182
|
if (inNew)
|
|
8150
8183
|
report(parser, 51);
|
|
8151
8184
|
parser.flags &= -129;
|
|
8152
8185
|
const scope = context & 16 ? createArrowHeadParsingScope(parser, context, value) : void 0;
|
|
8153
|
-
return parseArrowFunctionExpression(parser, context, scope, privateScope, [expr], isAsync, start
|
|
8186
|
+
return parseArrowFunctionExpression(parser, context, scope, privateScope, [expr], isAsync, start);
|
|
8154
8187
|
}
|
|
8155
|
-
function parseParenthesizedArrow(parser, context, scope, privateScope, params, canAssign, isAsync, start
|
|
8188
|
+
function parseParenthesizedArrow(parser, context, scope, privateScope, params, canAssign, isAsync, start) {
|
|
8156
8189
|
if (!canAssign)
|
|
8157
8190
|
report(parser, 57);
|
|
8158
8191
|
for (let i = 0; i < params.length; ++i)
|
|
8159
8192
|
reinterpretToPattern(parser, params[i]);
|
|
8160
|
-
return parseArrowFunctionExpression(parser, context, scope, privateScope, params, isAsync, start
|
|
8193
|
+
return parseArrowFunctionExpression(parser, context, scope, privateScope, params, isAsync, start);
|
|
8161
8194
|
}
|
|
8162
|
-
function parseArrowFunctionExpression(parser, context, scope, privateScope, params, isAsync, start
|
|
8195
|
+
function parseArrowFunctionExpression(parser, context, scope, privateScope, params, isAsync, start) {
|
|
8163
8196
|
if (parser.flags & 1)
|
|
8164
8197
|
report(parser, 48);
|
|
8165
8198
|
consume(parser, context | 8192, 10);
|
|
@@ -8173,7 +8206,7 @@ function parseArrowFunctionExpression(parser, context, scope, privateScope, para
|
|
|
8173
8206
|
parser.flags =
|
|
8174
8207
|
(parser.flags | 512 | 256 | 64 | 4096) ^
|
|
8175
8208
|
(512 | 256 | 64 | 4096);
|
|
8176
|
-
body = parseExpression(parser, context, privateScope, 1, 0, parser.
|
|
8209
|
+
body = parseExpression(parser, context, privateScope, 1, 0, parser.tokenStart);
|
|
8177
8210
|
}
|
|
8178
8211
|
else {
|
|
8179
8212
|
if (scope)
|
|
@@ -8203,14 +8236,14 @@ function parseArrowFunctionExpression(parser, context, scope, privateScope, para
|
|
|
8203
8236
|
report(parser, 125);
|
|
8204
8237
|
}
|
|
8205
8238
|
parser.assignable = 2;
|
|
8206
|
-
return finishNode(
|
|
8239
|
+
return parser.finishNode({
|
|
8207
8240
|
type: 'ArrowFunctionExpression',
|
|
8208
8241
|
params,
|
|
8209
8242
|
body,
|
|
8210
8243
|
async: isAsync === 1,
|
|
8211
8244
|
expression,
|
|
8212
8245
|
generator: false,
|
|
8213
|
-
});
|
|
8246
|
+
}, start);
|
|
8214
8247
|
}
|
|
8215
8248
|
function parseFormalParametersOrFormalList(parser, context, scope, privateScope, inGroup, kind) {
|
|
8216
8249
|
consume(parser, context, 67174411);
|
|
@@ -8222,7 +8255,7 @@ function parseFormalParametersOrFormalList(parser, context, scope, privateScope,
|
|
|
8222
8255
|
let isNonSimpleParameterList = 0;
|
|
8223
8256
|
while (parser.getToken() !== 18) {
|
|
8224
8257
|
let left;
|
|
8225
|
-
const {
|
|
8258
|
+
const { tokenStart } = parser;
|
|
8226
8259
|
const token = parser.getToken();
|
|
8227
8260
|
if (token & 143360) {
|
|
8228
8261
|
if ((context & 256) === 0) {
|
|
@@ -8233,17 +8266,17 @@ function parseFormalParametersOrFormalList(parser, context, scope, privateScope,
|
|
|
8233
8266
|
parser.flags |= 512;
|
|
8234
8267
|
}
|
|
8235
8268
|
}
|
|
8236
|
-
left = parseAndClassifyIdentifier(parser, context, scope, kind | 1, 0
|
|
8269
|
+
left = parseAndClassifyIdentifier(parser, context, scope, kind | 1, 0);
|
|
8237
8270
|
}
|
|
8238
8271
|
else {
|
|
8239
8272
|
if (token === 2162700) {
|
|
8240
|
-
left = parseObjectLiteralOrPattern(parser, context, scope, privateScope, 1, inGroup, 1, kind, 0
|
|
8273
|
+
left = parseObjectLiteralOrPattern(parser, context, scope, privateScope, 1, inGroup, 1, kind, 0);
|
|
8241
8274
|
}
|
|
8242
8275
|
else if (token === 69271571) {
|
|
8243
|
-
left = parseArrayExpressionOrPattern(parser, context, scope, privateScope, 1, inGroup, 1, kind, 0
|
|
8276
|
+
left = parseArrayExpressionOrPattern(parser, context, scope, privateScope, 1, inGroup, 1, kind, 0);
|
|
8244
8277
|
}
|
|
8245
8278
|
else if (token === 14) {
|
|
8246
|
-
left = parseSpreadOrRestElement(parser, context, scope, privateScope, 16, kind, 0, 0, inGroup, 1
|
|
8279
|
+
left = parseSpreadOrRestElement(parser, context, scope, privateScope, 16, kind, 0, 0, inGroup, 1);
|
|
8247
8280
|
}
|
|
8248
8281
|
else {
|
|
8249
8282
|
report(parser, 30, KeywordDescTable[token & 255]);
|
|
@@ -8256,12 +8289,12 @@ function parseFormalParametersOrFormalList(parser, context, scope, privateScope,
|
|
|
8256
8289
|
if (parser.getToken() === 1077936155) {
|
|
8257
8290
|
nextToken(parser, context | 8192);
|
|
8258
8291
|
isNonSimpleParameterList = 1;
|
|
8259
|
-
const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.
|
|
8260
|
-
left = finishNode(
|
|
8292
|
+
const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.tokenStart);
|
|
8293
|
+
left = parser.finishNode({
|
|
8261
8294
|
type: 'AssignmentPattern',
|
|
8262
8295
|
left,
|
|
8263
8296
|
right,
|
|
8264
|
-
});
|
|
8297
|
+
}, tokenStart);
|
|
8265
8298
|
}
|
|
8266
8299
|
params.push(left);
|
|
8267
8300
|
if (!consumeOpt(parser, context, 18))
|
|
@@ -8278,53 +8311,56 @@ function parseFormalParametersOrFormalList(parser, context, scope, privateScope,
|
|
|
8278
8311
|
consume(parser, context, 16);
|
|
8279
8312
|
return params;
|
|
8280
8313
|
}
|
|
8281
|
-
function parseMemberExpressionNoCall(parser, context, privateScope, expr, inGroup, start
|
|
8314
|
+
function parseMemberExpressionNoCall(parser, context, privateScope, expr, inGroup, start) {
|
|
8282
8315
|
const token = parser.getToken();
|
|
8283
8316
|
if (token & 67108864) {
|
|
8284
8317
|
if (token === 67108877) {
|
|
8285
8318
|
nextToken(parser, context | 67108864);
|
|
8286
8319
|
parser.assignable = 1;
|
|
8287
8320
|
const property = parsePropertyOrPrivatePropertyName(parser, context, privateScope);
|
|
8288
|
-
return parseMemberExpressionNoCall(parser, context, privateScope, finishNode(
|
|
8321
|
+
return parseMemberExpressionNoCall(parser, context, privateScope, parser.finishNode({
|
|
8289
8322
|
type: 'MemberExpression',
|
|
8290
8323
|
object: expr,
|
|
8291
8324
|
computed: false,
|
|
8292
8325
|
property,
|
|
8293
|
-
|
|
8326
|
+
optional: false,
|
|
8327
|
+
}, start), 0, start);
|
|
8294
8328
|
}
|
|
8295
8329
|
else if (token === 69271571) {
|
|
8296
8330
|
nextToken(parser, context | 8192);
|
|
8297
|
-
const {
|
|
8298
|
-
const property = parseExpressions(parser, context, privateScope, inGroup, 1,
|
|
8331
|
+
const { tokenStart } = parser;
|
|
8332
|
+
const property = parseExpressions(parser, context, privateScope, inGroup, 1, tokenStart);
|
|
8299
8333
|
consume(parser, context, 20);
|
|
8300
8334
|
parser.assignable = 1;
|
|
8301
|
-
return parseMemberExpressionNoCall(parser, context, privateScope, finishNode(
|
|
8335
|
+
return parseMemberExpressionNoCall(parser, context, privateScope, parser.finishNode({
|
|
8302
8336
|
type: 'MemberExpression',
|
|
8303
8337
|
object: expr,
|
|
8304
8338
|
computed: true,
|
|
8305
8339
|
property,
|
|
8306
|
-
|
|
8340
|
+
optional: false,
|
|
8341
|
+
}, start), 0, start);
|
|
8307
8342
|
}
|
|
8308
8343
|
else if (token === 67174408 || token === 67174409) {
|
|
8309
8344
|
parser.assignable = 2;
|
|
8310
|
-
return parseMemberExpressionNoCall(parser, context, privateScope, finishNode(
|
|
8345
|
+
return parseMemberExpressionNoCall(parser, context, privateScope, parser.finishNode({
|
|
8311
8346
|
type: 'TaggedTemplateExpression',
|
|
8312
8347
|
tag: expr,
|
|
8313
8348
|
quasi: parser.getToken() === 67174408
|
|
8314
8349
|
? parseTemplate(parser, context | 16384, privateScope)
|
|
8315
|
-
: parseTemplateLiteral(parser, context | 16384, parser.
|
|
8316
|
-
}), 0, start
|
|
8350
|
+
: parseTemplateLiteral(parser, context | 16384, parser.tokenStart),
|
|
8351
|
+
}, start), 0, start);
|
|
8317
8352
|
}
|
|
8318
8353
|
}
|
|
8319
8354
|
return expr;
|
|
8320
8355
|
}
|
|
8321
|
-
function parseNewExpression(parser, context, privateScope, inGroup
|
|
8356
|
+
function parseNewExpression(parser, context, privateScope, inGroup) {
|
|
8357
|
+
const { tokenStart: start } = parser;
|
|
8322
8358
|
const id = parseIdentifier(parser, context | 8192);
|
|
8323
|
-
const {
|
|
8359
|
+
const { tokenStart } = parser;
|
|
8324
8360
|
if (consumeOpt(parser, context, 67108877)) {
|
|
8325
8361
|
if (context & 16777216 && parser.getToken() === 209029) {
|
|
8326
8362
|
parser.assignable = 2;
|
|
8327
|
-
return parseMetaProperty(parser, context, id, start
|
|
8363
|
+
return parseMetaProperty(parser, context, id, start);
|
|
8328
8364
|
}
|
|
8329
8365
|
report(parser, 94);
|
|
8330
8366
|
}
|
|
@@ -8332,27 +8368,27 @@ function parseNewExpression(parser, context, privateScope, inGroup, start, line,
|
|
|
8332
8368
|
if ((parser.getToken() & 16842752) === 16842752) {
|
|
8333
8369
|
report(parser, 65, KeywordDescTable[parser.getToken() & 255]);
|
|
8334
8370
|
}
|
|
8335
|
-
const expr = parsePrimaryExpression(parser, context, privateScope, 2, 1, 0, inGroup, 1,
|
|
8371
|
+
const expr = parsePrimaryExpression(parser, context, privateScope, 2, 1, 0, inGroup, 1, tokenStart);
|
|
8336
8372
|
context = (context | 33554432) ^ 33554432;
|
|
8337
8373
|
if (parser.getToken() === 67108990)
|
|
8338
8374
|
report(parser, 168);
|
|
8339
|
-
const callee = parseMemberExpressionNoCall(parser, context, privateScope, expr, inGroup,
|
|
8375
|
+
const callee = parseMemberExpressionNoCall(parser, context, privateScope, expr, inGroup, tokenStart);
|
|
8340
8376
|
parser.assignable = 2;
|
|
8341
|
-
return finishNode(
|
|
8377
|
+
return parser.finishNode({
|
|
8342
8378
|
type: 'NewExpression',
|
|
8343
8379
|
callee,
|
|
8344
8380
|
arguments: parser.getToken() === 67174411 ? parseArguments(parser, context, privateScope, inGroup) : [],
|
|
8345
|
-
});
|
|
8381
|
+
}, start);
|
|
8346
8382
|
}
|
|
8347
|
-
function parseMetaProperty(parser, context, meta, start
|
|
8383
|
+
function parseMetaProperty(parser, context, meta, start) {
|
|
8348
8384
|
const property = parseIdentifier(parser, context);
|
|
8349
|
-
return finishNode(
|
|
8385
|
+
return parser.finishNode({
|
|
8350
8386
|
type: 'MetaProperty',
|
|
8351
8387
|
meta,
|
|
8352
8388
|
property,
|
|
8353
|
-
});
|
|
8389
|
+
}, start);
|
|
8354
8390
|
}
|
|
8355
|
-
function parseAsyncArrowAfterIdent(parser, context, privateScope, canAssign, start
|
|
8391
|
+
function parseAsyncArrowAfterIdent(parser, context, privateScope, canAssign, start) {
|
|
8356
8392
|
if (parser.getToken() === 209006)
|
|
8357
8393
|
report(parser, 31);
|
|
8358
8394
|
if (context & (256 | 262144) && parser.getToken() === 241771) {
|
|
@@ -8362,9 +8398,9 @@ function parseAsyncArrowAfterIdent(parser, context, privateScope, canAssign, sta
|
|
|
8362
8398
|
if ((parser.getToken() & 36864) === 36864) {
|
|
8363
8399
|
parser.flags |= 256;
|
|
8364
8400
|
}
|
|
8365
|
-
return parseArrowFromIdentifier(parser, (context & -268435457) | 524288, privateScope, parser.tokenValue, parseIdentifier(parser, context), 0, canAssign, 1, start
|
|
8401
|
+
return parseArrowFromIdentifier(parser, (context & -268435457) | 524288, privateScope, parser.tokenValue, parseIdentifier(parser, context), 0, canAssign, 1, start);
|
|
8366
8402
|
}
|
|
8367
|
-
function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee, canAssign, kind, origin, flags, start
|
|
8403
|
+
function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee, canAssign, kind, origin, flags, start) {
|
|
8368
8404
|
nextToken(parser, context | 8192);
|
|
8369
8405
|
const scope = context & 16 ? addChildScope(createScope(), 1024) : void 0;
|
|
8370
8406
|
context = (context | 33554432) ^ 33554432;
|
|
@@ -8372,13 +8408,14 @@ function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee,
|
|
|
8372
8408
|
if (parser.getToken() === 10) {
|
|
8373
8409
|
if (flags & 1)
|
|
8374
8410
|
report(parser, 48);
|
|
8375
|
-
return parseParenthesizedArrow(parser, context, scope, privateScope, [], canAssign, 1, start
|
|
8411
|
+
return parseParenthesizedArrow(parser, context, scope, privateScope, [], canAssign, 1, start);
|
|
8376
8412
|
}
|
|
8377
|
-
return finishNode(
|
|
8413
|
+
return parser.finishNode({
|
|
8378
8414
|
type: 'CallExpression',
|
|
8379
8415
|
callee,
|
|
8380
8416
|
arguments: [],
|
|
8381
|
-
|
|
8417
|
+
optional: false,
|
|
8418
|
+
}, start);
|
|
8382
8419
|
}
|
|
8383
8420
|
let destructible = 0;
|
|
8384
8421
|
let expr = null;
|
|
@@ -8388,7 +8425,7 @@ function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee,
|
|
|
8388
8425
|
(256 | 128);
|
|
8389
8426
|
const params = [];
|
|
8390
8427
|
while (parser.getToken() !== 16) {
|
|
8391
|
-
const {
|
|
8428
|
+
const { tokenStart } = parser;
|
|
8392
8429
|
const token = parser.getToken();
|
|
8393
8430
|
if (token & 143360) {
|
|
8394
8431
|
if (scope)
|
|
@@ -8399,7 +8436,7 @@ function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee,
|
|
|
8399
8436
|
else if ((token & 36864) === 36864) {
|
|
8400
8437
|
parser.flags |= 256;
|
|
8401
8438
|
}
|
|
8402
|
-
expr = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, 1, 1,
|
|
8439
|
+
expr = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, 1, 1, tokenStart);
|
|
8403
8440
|
if (parser.getToken() === 16 || parser.getToken() === 18) {
|
|
8404
8441
|
if (parser.assignable & 2) {
|
|
8405
8442
|
destructible |= 16;
|
|
@@ -8413,54 +8450,55 @@ function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee,
|
|
|
8413
8450
|
else {
|
|
8414
8451
|
destructible |= 16;
|
|
8415
8452
|
}
|
|
8416
|
-
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 1, 0,
|
|
8453
|
+
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 1, 0, tokenStart);
|
|
8417
8454
|
if (parser.getToken() !== 16 && parser.getToken() !== 18) {
|
|
8418
|
-
expr = parseAssignmentExpression(parser, context, privateScope, 1, 0,
|
|
8455
|
+
expr = parseAssignmentExpression(parser, context, privateScope, 1, 0, tokenStart, expr);
|
|
8419
8456
|
}
|
|
8420
8457
|
}
|
|
8421
8458
|
}
|
|
8422
8459
|
else if (token & 2097152) {
|
|
8423
8460
|
expr =
|
|
8424
8461
|
token === 2162700
|
|
8425
|
-
? parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, 1, 0, kind, origin
|
|
8426
|
-
: parseArrayExpressionOrPattern(parser, context, scope, privateScope, 0, 1, 0, kind, origin
|
|
8462
|
+
? parseObjectLiteralOrPattern(parser, context, scope, privateScope, 0, 1, 0, kind, origin)
|
|
8463
|
+
: parseArrayExpressionOrPattern(parser, context, scope, privateScope, 0, 1, 0, kind, origin);
|
|
8427
8464
|
destructible |= parser.destructible;
|
|
8428
8465
|
isNonSimpleParameterList = 1;
|
|
8429
8466
|
if (parser.getToken() !== 16 && parser.getToken() !== 18) {
|
|
8430
8467
|
if (destructible & 8)
|
|
8431
8468
|
report(parser, 122);
|
|
8432
|
-
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0,
|
|
8469
|
+
expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0, tokenStart);
|
|
8433
8470
|
destructible |= 16;
|
|
8434
8471
|
if ((parser.getToken() & 8388608) === 8388608) {
|
|
8435
|
-
expr = parseBinaryExpression(parser, context, privateScope, 1, start,
|
|
8472
|
+
expr = parseBinaryExpression(parser, context, privateScope, 1, start, 4, token, expr);
|
|
8436
8473
|
}
|
|
8437
8474
|
if (consumeOpt(parser, context | 8192, 22)) {
|
|
8438
|
-
expr = parseConditionalExpression(parser, context, privateScope, expr, start
|
|
8475
|
+
expr = parseConditionalExpression(parser, context, privateScope, expr, start);
|
|
8439
8476
|
}
|
|
8440
8477
|
}
|
|
8441
8478
|
}
|
|
8442
8479
|
else if (token === 14) {
|
|
8443
|
-
expr = parseSpreadOrRestElement(parser, context, scope, privateScope, 16, kind, origin, 1, 1, 0
|
|
8480
|
+
expr = parseSpreadOrRestElement(parser, context, scope, privateScope, 16, kind, origin, 1, 1, 0);
|
|
8444
8481
|
destructible |=
|
|
8445
8482
|
(parser.getToken() === 16 ? 0 : 16) | parser.destructible;
|
|
8446
8483
|
isNonSimpleParameterList = 1;
|
|
8447
8484
|
}
|
|
8448
8485
|
else {
|
|
8449
|
-
expr = parseExpression(parser, context, privateScope, 1, 0,
|
|
8486
|
+
expr = parseExpression(parser, context, privateScope, 1, 0, tokenStart);
|
|
8450
8487
|
destructible = parser.assignable;
|
|
8451
8488
|
params.push(expr);
|
|
8452
8489
|
while (consumeOpt(parser, context | 8192, 18)) {
|
|
8453
|
-
params.push(parseExpression(parser, context, privateScope, 1, 0,
|
|
8490
|
+
params.push(parseExpression(parser, context, privateScope, 1, 0, tokenStart));
|
|
8454
8491
|
}
|
|
8455
8492
|
destructible |= parser.assignable;
|
|
8456
8493
|
consume(parser, context, 16);
|
|
8457
8494
|
parser.destructible = destructible | 16;
|
|
8458
8495
|
parser.assignable = 2;
|
|
8459
|
-
return finishNode(
|
|
8496
|
+
return parser.finishNode({
|
|
8460
8497
|
type: 'CallExpression',
|
|
8461
8498
|
callee,
|
|
8462
8499
|
arguments: params,
|
|
8463
|
-
|
|
8500
|
+
optional: false,
|
|
8501
|
+
}, start);
|
|
8464
8502
|
}
|
|
8465
8503
|
params.push(expr);
|
|
8466
8504
|
if (!consumeOpt(parser, context | 8192, 18))
|
|
@@ -8484,7 +8522,7 @@ function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee,
|
|
|
8484
8522
|
report(parser, 32);
|
|
8485
8523
|
if (isNonSimpleParameterList)
|
|
8486
8524
|
parser.flags |= 128;
|
|
8487
|
-
return parseParenthesizedArrow(parser, context | 524288, scope, privateScope, params, canAssign, 1, start
|
|
8525
|
+
return parseParenthesizedArrow(parser, context | 524288, scope, privateScope, params, canAssign, 1, start);
|
|
8488
8526
|
}
|
|
8489
8527
|
if (destructible & 64) {
|
|
8490
8528
|
report(parser, 63);
|
|
@@ -8493,40 +8531,41 @@ function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee,
|
|
|
8493
8531
|
report(parser, 62);
|
|
8494
8532
|
}
|
|
8495
8533
|
parser.assignable = 2;
|
|
8496
|
-
return finishNode(
|
|
8534
|
+
return parser.finishNode({
|
|
8497
8535
|
type: 'CallExpression',
|
|
8498
8536
|
callee,
|
|
8499
8537
|
arguments: params,
|
|
8500
|
-
|
|
8538
|
+
optional: false,
|
|
8539
|
+
}, start);
|
|
8501
8540
|
}
|
|
8502
|
-
function parseRegExpLiteral(parser, context
|
|
8503
|
-
const { tokenRaw, tokenRegExp, tokenValue } = parser;
|
|
8541
|
+
function parseRegExpLiteral(parser, context) {
|
|
8542
|
+
const { tokenRaw, tokenRegExp, tokenValue, tokenStart } = parser;
|
|
8504
8543
|
nextToken(parser, context);
|
|
8505
8544
|
parser.assignable = 2;
|
|
8506
|
-
|
|
8507
|
-
|
|
8508
|
-
|
|
8509
|
-
|
|
8510
|
-
|
|
8511
|
-
|
|
8512
|
-
|
|
8513
|
-
|
|
8514
|
-
|
|
8515
|
-
value: tokenValue,
|
|
8516
|
-
regex: tokenRegExp,
|
|
8517
|
-
});
|
|
8545
|
+
const node = {
|
|
8546
|
+
type: 'Literal',
|
|
8547
|
+
value: tokenValue,
|
|
8548
|
+
regex: tokenRegExp,
|
|
8549
|
+
};
|
|
8550
|
+
if (context & 128) {
|
|
8551
|
+
node.raw = tokenRaw;
|
|
8552
|
+
}
|
|
8553
|
+
return parser.finishNode(node, tokenStart);
|
|
8518
8554
|
}
|
|
8519
|
-
function parseClassDeclaration(parser, context, scope, privateScope, flags
|
|
8520
|
-
let
|
|
8521
|
-
|
|
8522
|
-
|
|
8523
|
-
|
|
8524
|
-
|
|
8555
|
+
function parseClassDeclaration(parser, context, scope, privateScope, flags) {
|
|
8556
|
+
let start;
|
|
8557
|
+
let decorators;
|
|
8558
|
+
if (parser.leadingDecorators.decorators.length) {
|
|
8559
|
+
if (parser.getToken() === 132) {
|
|
8560
|
+
report(parser, 30, '@');
|
|
8561
|
+
}
|
|
8562
|
+
start = parser.leadingDecorators.start;
|
|
8563
|
+
decorators = [...parser.leadingDecorators.decorators];
|
|
8564
|
+
parser.leadingDecorators.decorators.length = 0;
|
|
8525
8565
|
}
|
|
8526
|
-
|
|
8527
|
-
parser.
|
|
8528
|
-
decorators = parser
|
|
8529
|
-
parser.leadingDecorators = [];
|
|
8566
|
+
else {
|
|
8567
|
+
start = parser.tokenStart;
|
|
8568
|
+
decorators = parseDecorators(parser, context, privateScope);
|
|
8530
8569
|
}
|
|
8531
8570
|
context = (context | 4194304 | 256) ^ 4194304;
|
|
8532
8571
|
nextToken(parser, context);
|
|
@@ -8556,30 +8595,25 @@ function parseClassDeclaration(parser, context, scope, privateScope, flags, star
|
|
|
8556
8595
|
}
|
|
8557
8596
|
let inheritedContext = context;
|
|
8558
8597
|
if (consumeOpt(parser, context | 8192, 20565)) {
|
|
8559
|
-
superClass = parseLeftHandSideExpression(parser, context, privateScope, 0, 0, 0
|
|
8598
|
+
superClass = parseLeftHandSideExpression(parser, context, privateScope, 0, 0, 0);
|
|
8560
8599
|
inheritedContext |= 131072;
|
|
8561
8600
|
}
|
|
8562
8601
|
else {
|
|
8563
8602
|
inheritedContext = (inheritedContext | 131072) ^ 131072;
|
|
8564
8603
|
}
|
|
8565
8604
|
const body = parseClassBody(parser, inheritedContext, context, scope, privateScope, 2, 8, 0);
|
|
8566
|
-
return finishNode(
|
|
8605
|
+
return parser.finishNode({
|
|
8567
8606
|
type: 'ClassDeclaration',
|
|
8568
8607
|
id,
|
|
8569
8608
|
superClass,
|
|
8570
8609
|
body,
|
|
8571
8610
|
...(context & 1 ? { decorators } : null),
|
|
8572
|
-
});
|
|
8611
|
+
}, start);
|
|
8573
8612
|
}
|
|
8574
|
-
function parseClassExpression(parser, context, privateScope, inGroup, start
|
|
8613
|
+
function parseClassExpression(parser, context, privateScope, inGroup, start) {
|
|
8575
8614
|
let id = null;
|
|
8576
8615
|
let superClass = null;
|
|
8577
8616
|
const decorators = parseDecorators(parser, context, privateScope);
|
|
8578
|
-
if (decorators.length) {
|
|
8579
|
-
start = parser.tokenIndex;
|
|
8580
|
-
line = parser.tokenLine;
|
|
8581
|
-
column = parser.tokenColumn;
|
|
8582
|
-
}
|
|
8583
8617
|
context = (context | 256 | 4194304) ^ 4194304;
|
|
8584
8618
|
nextToken(parser, context);
|
|
8585
8619
|
if (parser.getToken() & 4096 && parser.getToken() !== 20565) {
|
|
@@ -8592,7 +8626,7 @@ function parseClassExpression(parser, context, privateScope, inGroup, start, lin
|
|
|
8592
8626
|
}
|
|
8593
8627
|
let inheritedContext = context;
|
|
8594
8628
|
if (consumeOpt(parser, context | 8192, 20565)) {
|
|
8595
|
-
superClass = parseLeftHandSideExpression(parser, context, privateScope, 0, inGroup, 0
|
|
8629
|
+
superClass = parseLeftHandSideExpression(parser, context, privateScope, 0, inGroup, 0);
|
|
8596
8630
|
inheritedContext |= 131072;
|
|
8597
8631
|
}
|
|
8598
8632
|
else {
|
|
@@ -8600,34 +8634,34 @@ function parseClassExpression(parser, context, privateScope, inGroup, start, lin
|
|
|
8600
8634
|
}
|
|
8601
8635
|
const body = parseClassBody(parser, inheritedContext, context, void 0, privateScope, 2, 0, inGroup);
|
|
8602
8636
|
parser.assignable = 2;
|
|
8603
|
-
return finishNode(
|
|
8637
|
+
return parser.finishNode({
|
|
8604
8638
|
type: 'ClassExpression',
|
|
8605
8639
|
id,
|
|
8606
8640
|
superClass,
|
|
8607
8641
|
body,
|
|
8608
8642
|
...(context & 1 ? { decorators } : null),
|
|
8609
|
-
});
|
|
8643
|
+
}, start);
|
|
8610
8644
|
}
|
|
8611
8645
|
function parseDecorators(parser, context, privateScope) {
|
|
8612
8646
|
const list = [];
|
|
8613
8647
|
if (context & 1) {
|
|
8614
8648
|
while (parser.getToken() === 132) {
|
|
8615
|
-
list.push(parseDecoratorList(parser, context, privateScope, parser.
|
|
8649
|
+
list.push(parseDecoratorList(parser, context, privateScope, parser.tokenStart));
|
|
8616
8650
|
}
|
|
8617
8651
|
}
|
|
8618
8652
|
return list;
|
|
8619
8653
|
}
|
|
8620
|
-
function parseDecoratorList(parser, context, privateScope, start
|
|
8654
|
+
function parseDecoratorList(parser, context, privateScope, start) {
|
|
8621
8655
|
nextToken(parser, context | 8192);
|
|
8622
|
-
let expression = parsePrimaryExpression(parser, context, privateScope, 2, 0, 1, 0, 1, start
|
|
8623
|
-
expression = parseMemberOrUpdateExpression(parser, context, privateScope, expression, 0, 0,
|
|
8624
|
-
return finishNode(
|
|
8656
|
+
let expression = parsePrimaryExpression(parser, context, privateScope, 2, 0, 1, 0, 1, start);
|
|
8657
|
+
expression = parseMemberOrUpdateExpression(parser, context, privateScope, expression, 0, 0, parser.tokenStart);
|
|
8658
|
+
return parser.finishNode({
|
|
8625
8659
|
type: 'Decorator',
|
|
8626
8660
|
expression,
|
|
8627
|
-
});
|
|
8661
|
+
}, start);
|
|
8628
8662
|
}
|
|
8629
8663
|
function parseClassBody(parser, context, inheritedContext, scope, parentScope, kind, origin, inGroup) {
|
|
8630
|
-
const {
|
|
8664
|
+
const { tokenStart } = parser;
|
|
8631
8665
|
const privateScope = context & 16 ? addChildPrivateScope(parentScope) : undefined;
|
|
8632
8666
|
consume(parser, context | 8192, 2162700);
|
|
8633
8667
|
const modifierFlags = 33554432 | 268435456;
|
|
@@ -8636,6 +8670,7 @@ function parseClassBody(parser, context, inheritedContext, scope, parentScope, k
|
|
|
8636
8670
|
parser.flags = (parser.flags | 32) ^ 32;
|
|
8637
8671
|
const body = [];
|
|
8638
8672
|
let decorators;
|
|
8673
|
+
const decoratorStart = parser.tokenStart;
|
|
8639
8674
|
while (parser.getToken() !== 1074790415) {
|
|
8640
8675
|
let length = 0;
|
|
8641
8676
|
decorators = parseDecorators(parser, context, privateScope);
|
|
@@ -8650,21 +8685,21 @@ function parseClassBody(parser, context, inheritedContext, scope, parentScope, k
|
|
|
8650
8685
|
report(parser, 120);
|
|
8651
8686
|
continue;
|
|
8652
8687
|
}
|
|
8653
|
-
body.push(parseClassElementList(parser, context, scope, privateScope, inheritedContext, kind, decorators, 0, inGroup,
|
|
8688
|
+
body.push(parseClassElementList(parser, context, scope, privateScope, inheritedContext, kind, decorators, 0, inGroup, length > 0 ? decoratorStart : parser.tokenStart));
|
|
8654
8689
|
}
|
|
8655
8690
|
consume(parser, origin & 8 ? context | 8192 : context, 1074790415);
|
|
8656
8691
|
if (privateScope)
|
|
8657
8692
|
validatePrivateIdentifierRefs(privateScope);
|
|
8658
8693
|
parser.flags = (parser.flags & -33) | hasConstr;
|
|
8659
|
-
return finishNode(
|
|
8694
|
+
return parser.finishNode({
|
|
8660
8695
|
type: 'ClassBody',
|
|
8661
8696
|
body,
|
|
8662
|
-
});
|
|
8697
|
+
}, tokenStart);
|
|
8663
8698
|
}
|
|
8664
|
-
function parseClassElementList(parser, context, scope, privateScope, inheritedContext, type, decorators, isStatic, inGroup, start
|
|
8699
|
+
function parseClassElementList(parser, context, scope, privateScope, inheritedContext, type, decorators, isStatic, inGroup, start) {
|
|
8665
8700
|
let kind = isStatic ? 32 : 0;
|
|
8666
8701
|
let key = null;
|
|
8667
|
-
const {
|
|
8702
|
+
const { tokenStart } = parser;
|
|
8668
8703
|
const token = parser.getToken();
|
|
8669
8704
|
if (token & (143360 | 36864) || token === -2147483528) {
|
|
8670
8705
|
key = parseIdentifier(parser, context);
|
|
@@ -8674,13 +8709,13 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
|
|
|
8674
8709
|
parser.getToken() !== 67174411 &&
|
|
8675
8710
|
(parser.getToken() & 1048576) !== 1048576 &&
|
|
8676
8711
|
parser.getToken() !== 1077936155) {
|
|
8677
|
-
return parseClassElementList(parser, context, scope, privateScope, inheritedContext, type, decorators, 1, inGroup, start
|
|
8712
|
+
return parseClassElementList(parser, context, scope, privateScope, inheritedContext, type, decorators, 1, inGroup, start);
|
|
8678
8713
|
}
|
|
8679
8714
|
break;
|
|
8680
8715
|
case 209005:
|
|
8681
8716
|
if (parser.getToken() !== 67174411 && (parser.flags & 1) === 0) {
|
|
8682
8717
|
if ((parser.getToken() & 1073741824) === 1073741824) {
|
|
8683
|
-
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators,
|
|
8718
|
+
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, tokenStart);
|
|
8684
8719
|
}
|
|
8685
8720
|
kind |= 16 | (optionalBit(parser, context, 8391476) ? 8 : 0);
|
|
8686
8721
|
}
|
|
@@ -8688,7 +8723,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
|
|
|
8688
8723
|
case 209008:
|
|
8689
8724
|
if (parser.getToken() !== 67174411) {
|
|
8690
8725
|
if ((parser.getToken() & 1073741824) === 1073741824) {
|
|
8691
|
-
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators,
|
|
8726
|
+
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, tokenStart);
|
|
8692
8727
|
}
|
|
8693
8728
|
kind |= 256;
|
|
8694
8729
|
}
|
|
@@ -8696,7 +8731,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
|
|
|
8696
8731
|
case 209009:
|
|
8697
8732
|
if (parser.getToken() !== 67174411) {
|
|
8698
8733
|
if ((parser.getToken() & 1073741824) === 1073741824) {
|
|
8699
|
-
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators,
|
|
8734
|
+
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, tokenStart);
|
|
8700
8735
|
}
|
|
8701
8736
|
kind |= 512;
|
|
8702
8737
|
}
|
|
@@ -8704,7 +8739,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
|
|
|
8704
8739
|
case 12402:
|
|
8705
8740
|
if (parser.getToken() !== 67174411 && (parser.flags & 1) === 0) {
|
|
8706
8741
|
if ((parser.getToken() & 1073741824) === 1073741824) {
|
|
8707
|
-
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators,
|
|
8742
|
+
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, tokenStart);
|
|
8708
8743
|
}
|
|
8709
8744
|
if (context & 1)
|
|
8710
8745
|
kind |= 1024;
|
|
@@ -8725,13 +8760,13 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
|
|
|
8725
8760
|
}
|
|
8726
8761
|
else if (parser.getToken() === 130) {
|
|
8727
8762
|
kind |= 8192;
|
|
8728
|
-
key = parsePrivateIdentifier(parser, context | 4096, privateScope, 768
|
|
8763
|
+
key = parsePrivateIdentifier(parser, context | 4096, privateScope, 768);
|
|
8729
8764
|
}
|
|
8730
8765
|
else if ((parser.getToken() & 1073741824) === 1073741824) {
|
|
8731
8766
|
kind |= 128;
|
|
8732
8767
|
}
|
|
8733
8768
|
else if (isStatic && token === 2162700) {
|
|
8734
|
-
return parseStaticBlock(parser, context | 4096, scope, privateScope, start
|
|
8769
|
+
return parseStaticBlock(parser, context | 4096, scope, privateScope, start);
|
|
8735
8770
|
}
|
|
8736
8771
|
else if (token === -2147483527) {
|
|
8737
8772
|
key = parseIdentifier(parser, context);
|
|
@@ -8756,7 +8791,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
|
|
|
8756
8791
|
}
|
|
8757
8792
|
else if (parser.getToken() === 130) {
|
|
8758
8793
|
kind |= 8192;
|
|
8759
|
-
key = parsePrivateIdentifier(parser, context, privateScope, kind
|
|
8794
|
+
key = parsePrivateIdentifier(parser, context, privateScope, kind);
|
|
8760
8795
|
}
|
|
8761
8796
|
else
|
|
8762
8797
|
report(parser, 135);
|
|
@@ -8786,10 +8821,10 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
|
|
|
8786
8821
|
}
|
|
8787
8822
|
}
|
|
8788
8823
|
if (kind & 1024 || (parser.getToken() !== 67174411 && (kind & 768) === 0)) {
|
|
8789
|
-
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators,
|
|
8824
|
+
return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
|
|
8790
8825
|
}
|
|
8791
|
-
const value = parseMethodDefinition(parser, context | 4096, privateScope, kind, inGroup, parser.
|
|
8792
|
-
return finishNode(
|
|
8826
|
+
const value = parseMethodDefinition(parser, context | 4096, privateScope, kind, inGroup, parser.tokenStart);
|
|
8827
|
+
return parser.finishNode({
|
|
8793
8828
|
type: 'MethodDefinition',
|
|
8794
8829
|
kind: (kind & 32) === 0 && kind & 64
|
|
8795
8830
|
? 'constructor'
|
|
@@ -8803,9 +8838,10 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
|
|
|
8803
8838
|
key,
|
|
8804
8839
|
value,
|
|
8805
8840
|
...(context & 1 ? { decorators } : null),
|
|
8806
|
-
});
|
|
8841
|
+
}, start);
|
|
8807
8842
|
}
|
|
8808
|
-
function parsePrivateIdentifier(parser, context, privateScope, kind
|
|
8843
|
+
function parsePrivateIdentifier(parser, context, privateScope, kind) {
|
|
8844
|
+
const { tokenStart } = parser;
|
|
8809
8845
|
nextToken(parser, context);
|
|
8810
8846
|
const { tokenValue } = parser;
|
|
8811
8847
|
if (tokenValue === 'constructor')
|
|
@@ -8821,18 +8857,18 @@ function parsePrivateIdentifier(parser, context, privateScope, kind, start, line
|
|
|
8821
8857
|
}
|
|
8822
8858
|
}
|
|
8823
8859
|
nextToken(parser, context);
|
|
8824
|
-
return finishNode(
|
|
8860
|
+
return parser.finishNode({
|
|
8825
8861
|
type: 'PrivateIdentifier',
|
|
8826
8862
|
name: tokenValue,
|
|
8827
|
-
});
|
|
8863
|
+
}, tokenStart);
|
|
8828
8864
|
}
|
|
8829
|
-
function parsePropertyDefinition(parser, context, privateScope, key, state, decorators, start
|
|
8865
|
+
function parsePropertyDefinition(parser, context, privateScope, key, state, decorators, start) {
|
|
8830
8866
|
let value = null;
|
|
8831
8867
|
if (state & 8)
|
|
8832
8868
|
report(parser, 0);
|
|
8833
8869
|
if (parser.getToken() === 1077936155) {
|
|
8834
8870
|
nextToken(parser, context | 8192);
|
|
8835
|
-
const {
|
|
8871
|
+
const { tokenStart } = parser;
|
|
8836
8872
|
if (parser.getToken() === 537079927)
|
|
8837
8873
|
report(parser, 119);
|
|
8838
8874
|
const modifierFlags = 262144 |
|
|
@@ -8846,40 +8882,39 @@ function parsePropertyDefinition(parser, context, privateScope, key, state, deco
|
|
|
8846
8882
|
(state & 64 ? 4194304 : 0) |
|
|
8847
8883
|
65536 |
|
|
8848
8884
|
16777216;
|
|
8849
|
-
value = parsePrimaryExpression(parser, context | 4096, privateScope, 2, 0, 1, 0, 1,
|
|
8885
|
+
value = parsePrimaryExpression(parser, context | 4096, privateScope, 2, 0, 1, 0, 1, tokenStart);
|
|
8850
8886
|
if ((parser.getToken() & 1073741824) !== 1073741824 ||
|
|
8851
8887
|
(parser.getToken() & 4194304) === 4194304) {
|
|
8852
|
-
value = parseMemberOrUpdateExpression(parser, context | 4096, privateScope, value, 0, 0,
|
|
8853
|
-
value = parseAssignmentExpression(parser, context | 4096, privateScope, 0, 0,
|
|
8888
|
+
value = parseMemberOrUpdateExpression(parser, context | 4096, privateScope, value, 0, 0, tokenStart);
|
|
8889
|
+
value = parseAssignmentExpression(parser, context | 4096, privateScope, 0, 0, tokenStart, value);
|
|
8854
8890
|
}
|
|
8855
8891
|
}
|
|
8856
8892
|
matchOrInsertSemicolon(parser, context);
|
|
8857
|
-
return finishNode(
|
|
8893
|
+
return parser.finishNode({
|
|
8858
8894
|
type: state & 1024 ? 'AccessorProperty' : 'PropertyDefinition',
|
|
8859
8895
|
key,
|
|
8860
8896
|
value,
|
|
8861
8897
|
static: (state & 32) > 0,
|
|
8862
8898
|
computed: (state & 2) > 0,
|
|
8863
8899
|
...(context & 1 ? { decorators } : null),
|
|
8864
|
-
});
|
|
8900
|
+
}, start);
|
|
8865
8901
|
}
|
|
8866
|
-
function parseBindingPattern(parser, context, scope, privateScope, type, origin
|
|
8902
|
+
function parseBindingPattern(parser, context, scope, privateScope, type, origin) {
|
|
8867
8903
|
if (parser.getToken() & 143360 ||
|
|
8868
8904
|
((context & 256) === 0 && parser.getToken() === -2147483527))
|
|
8869
|
-
return parseAndClassifyIdentifier(parser, context, scope, type, origin
|
|
8905
|
+
return parseAndClassifyIdentifier(parser, context, scope, type, origin);
|
|
8870
8906
|
if ((parser.getToken() & 2097152) !== 2097152)
|
|
8871
8907
|
report(parser, 30, KeywordDescTable[parser.getToken() & 255]);
|
|
8872
8908
|
const left = parser.getToken() === 69271571
|
|
8873
|
-
? parseArrayExpressionOrPattern(parser, context, scope, privateScope, 1, 0, 1, type, origin
|
|
8874
|
-
: parseObjectLiteralOrPattern(parser, context, scope, privateScope, 1, 0, 1, type, origin
|
|
8909
|
+
? parseArrayExpressionOrPattern(parser, context, scope, privateScope, 1, 0, 1, type, origin)
|
|
8910
|
+
: parseObjectLiteralOrPattern(parser, context, scope, privateScope, 1, 0, 1, type, origin);
|
|
8875
8911
|
if (parser.destructible & 16)
|
|
8876
8912
|
report(parser, 50);
|
|
8877
8913
|
if (parser.destructible & 32)
|
|
8878
8914
|
report(parser, 50);
|
|
8879
8915
|
return left;
|
|
8880
8916
|
}
|
|
8881
|
-
function parseAndClassifyIdentifier(parser, context, scope, kind, origin
|
|
8882
|
-
const { tokenValue } = parser;
|
|
8917
|
+
function parseAndClassifyIdentifier(parser, context, scope, kind, origin) {
|
|
8883
8918
|
const token = parser.getToken();
|
|
8884
8919
|
if (context & 256) {
|
|
8885
8920
|
if ((token & 537079808) === 537079808) {
|
|
@@ -8908,54 +8943,55 @@ function parseAndClassifyIdentifier(parser, context, scope, kind, origin, start,
|
|
|
8908
8943
|
if (context & 512)
|
|
8909
8944
|
report(parser, 110);
|
|
8910
8945
|
}
|
|
8946
|
+
const { tokenValue, tokenStart: start } = parser;
|
|
8911
8947
|
nextToken(parser, context);
|
|
8912
8948
|
if (scope)
|
|
8913
8949
|
addVarOrBlock(parser, context, scope, tokenValue, kind, origin);
|
|
8914
|
-
return finishNode(
|
|
8950
|
+
return parser.finishNode({
|
|
8915
8951
|
type: 'Identifier',
|
|
8916
8952
|
name: tokenValue,
|
|
8917
|
-
});
|
|
8953
|
+
}, start);
|
|
8918
8954
|
}
|
|
8919
|
-
function parseJSXRootElementOrFragment(parser, context, privateScope, inJSXChild, start
|
|
8955
|
+
function parseJSXRootElementOrFragment(parser, context, privateScope, inJSXChild, start) {
|
|
8920
8956
|
if (!inJSXChild)
|
|
8921
8957
|
consume(parser, context, 8456256);
|
|
8922
8958
|
if (parser.getToken() === 8390721) {
|
|
8923
|
-
const openingFragment =
|
|
8959
|
+
const openingFragment = parseJSXOpeningFragment(parser, context, start);
|
|
8924
8960
|
const [children, closingFragment] = parseJSXChildrenAndClosingFragment(parser, context, privateScope, inJSXChild);
|
|
8925
|
-
return finishNode(
|
|
8961
|
+
return parser.finishNode({
|
|
8926
8962
|
type: 'JSXFragment',
|
|
8927
8963
|
openingFragment,
|
|
8928
8964
|
children,
|
|
8929
8965
|
closingFragment,
|
|
8930
|
-
});
|
|
8966
|
+
}, start);
|
|
8931
8967
|
}
|
|
8932
8968
|
if (parser.getToken() === 8457014)
|
|
8933
8969
|
report(parser, 30, KeywordDescTable[parser.getToken() & 255]);
|
|
8934
8970
|
let closingElement = null;
|
|
8935
8971
|
let children = [];
|
|
8936
|
-
const openingElement = parseJSXOpeningElementOrSelfCloseElement(parser, context, privateScope, inJSXChild, start
|
|
8972
|
+
const openingElement = parseJSXOpeningElementOrSelfCloseElement(parser, context, privateScope, inJSXChild, start);
|
|
8937
8973
|
if (!openingElement.selfClosing) {
|
|
8938
8974
|
[children, closingElement] = parseJSXChildrenAndClosingElement(parser, context, privateScope, inJSXChild);
|
|
8939
8975
|
const close = isEqualTagName(closingElement.name);
|
|
8940
8976
|
if (isEqualTagName(openingElement.name) !== close)
|
|
8941
8977
|
report(parser, 155, close);
|
|
8942
8978
|
}
|
|
8943
|
-
return finishNode(
|
|
8979
|
+
return parser.finishNode({
|
|
8944
8980
|
type: 'JSXElement',
|
|
8945
8981
|
children,
|
|
8946
8982
|
openingElement,
|
|
8947
8983
|
closingElement,
|
|
8948
|
-
});
|
|
8984
|
+
}, start);
|
|
8949
8985
|
}
|
|
8950
|
-
function
|
|
8986
|
+
function parseJSXOpeningFragment(parser, context, start) {
|
|
8951
8987
|
nextJSXToken(parser, context);
|
|
8952
|
-
return finishNode(
|
|
8988
|
+
return parser.finishNode({
|
|
8953
8989
|
type: 'JSXOpeningFragment',
|
|
8954
|
-
});
|
|
8990
|
+
}, start);
|
|
8955
8991
|
}
|
|
8956
|
-
function parseJSXClosingElement(parser, context, inJSXChild, start
|
|
8992
|
+
function parseJSXClosingElement(parser, context, inJSXChild, start) {
|
|
8957
8993
|
consume(parser, context, 8457014);
|
|
8958
|
-
const name = parseJSXElementName(parser, context
|
|
8994
|
+
const name = parseJSXElementName(parser, context);
|
|
8959
8995
|
if (parser.getToken() !== 8390721) {
|
|
8960
8996
|
report(parser, 25, KeywordDescTable[8390721 & 255]);
|
|
8961
8997
|
}
|
|
@@ -8965,12 +9001,12 @@ function parseJSXClosingElement(parser, context, inJSXChild, start, line, column
|
|
|
8965
9001
|
else {
|
|
8966
9002
|
nextToken(parser, context);
|
|
8967
9003
|
}
|
|
8968
|
-
return finishNode(
|
|
9004
|
+
return parser.finishNode({
|
|
8969
9005
|
type: 'JSXClosingElement',
|
|
8970
9006
|
name,
|
|
8971
|
-
});
|
|
9007
|
+
}, start);
|
|
8972
9008
|
}
|
|
8973
|
-
function parseJSXClosingFragment(parser, context, inJSXChild, start
|
|
9009
|
+
function parseJSXClosingFragment(parser, context, inJSXChild, start) {
|
|
8974
9010
|
consume(parser, context, 8457014);
|
|
8975
9011
|
if (parser.getToken() !== 8390721) {
|
|
8976
9012
|
report(parser, 25, KeywordDescTable[8390721 & 255]);
|
|
@@ -8981,14 +9017,14 @@ function parseJSXClosingFragment(parser, context, inJSXChild, start, line, colum
|
|
|
8981
9017
|
else {
|
|
8982
9018
|
nextToken(parser, context);
|
|
8983
9019
|
}
|
|
8984
|
-
return finishNode(
|
|
9020
|
+
return parser.finishNode({
|
|
8985
9021
|
type: 'JSXClosingFragment',
|
|
8986
|
-
});
|
|
9022
|
+
}, start);
|
|
8987
9023
|
}
|
|
8988
9024
|
function parseJSXChildrenAndClosingElement(parser, context, privateScope, inJSXChild) {
|
|
8989
9025
|
const children = [];
|
|
8990
9026
|
while (true) {
|
|
8991
|
-
const child = parseJSXChildOrClosingElement(parser, context, privateScope, inJSXChild
|
|
9027
|
+
const child = parseJSXChildOrClosingElement(parser, context, privateScope, inJSXChild);
|
|
8992
9028
|
if (child.type === 'JSXClosingElement') {
|
|
8993
9029
|
return [children, child];
|
|
8994
9030
|
}
|
|
@@ -8998,40 +9034,43 @@ function parseJSXChildrenAndClosingElement(parser, context, privateScope, inJSXC
|
|
|
8998
9034
|
function parseJSXChildrenAndClosingFragment(parser, context, privateScope, inJSXChild) {
|
|
8999
9035
|
const children = [];
|
|
9000
9036
|
while (true) {
|
|
9001
|
-
const child = parseJSXChildOrClosingFragment(parser, context, privateScope, inJSXChild
|
|
9037
|
+
const child = parseJSXChildOrClosingFragment(parser, context, privateScope, inJSXChild);
|
|
9002
9038
|
if (child.type === 'JSXClosingFragment') {
|
|
9003
9039
|
return [children, child];
|
|
9004
9040
|
}
|
|
9005
9041
|
children.push(child);
|
|
9006
9042
|
}
|
|
9007
9043
|
}
|
|
9008
|
-
function parseJSXChildOrClosingElement(parser, context, privateScope, inJSXChild
|
|
9044
|
+
function parseJSXChildOrClosingElement(parser, context, privateScope, inJSXChild) {
|
|
9009
9045
|
if (parser.getToken() === 137)
|
|
9010
|
-
return parseJSXText(parser, context
|
|
9046
|
+
return parseJSXText(parser, context);
|
|
9011
9047
|
if (parser.getToken() === 2162700)
|
|
9012
|
-
return parseJSXExpressionContainer(parser, context, privateScope, 1, 0
|
|
9048
|
+
return parseJSXExpressionContainer(parser, context, privateScope, 1, 0);
|
|
9013
9049
|
if (parser.getToken() === 8456256) {
|
|
9050
|
+
const { tokenStart } = parser;
|
|
9014
9051
|
nextToken(parser, context);
|
|
9015
9052
|
if (parser.getToken() === 8457014)
|
|
9016
|
-
return parseJSXClosingElement(parser, context, inJSXChild,
|
|
9017
|
-
return parseJSXRootElementOrFragment(parser, context, privateScope, 1,
|
|
9053
|
+
return parseJSXClosingElement(parser, context, inJSXChild, tokenStart);
|
|
9054
|
+
return parseJSXRootElementOrFragment(parser, context, privateScope, 1, tokenStart);
|
|
9018
9055
|
}
|
|
9019
9056
|
report(parser, 0);
|
|
9020
9057
|
}
|
|
9021
|
-
function parseJSXChildOrClosingFragment(parser, context, privateScope, inJSXChild
|
|
9058
|
+
function parseJSXChildOrClosingFragment(parser, context, privateScope, inJSXChild) {
|
|
9022
9059
|
if (parser.getToken() === 137)
|
|
9023
|
-
return parseJSXText(parser, context
|
|
9060
|
+
return parseJSXText(parser, context);
|
|
9024
9061
|
if (parser.getToken() === 2162700)
|
|
9025
|
-
return parseJSXExpressionContainer(parser, context, privateScope, 1, 0
|
|
9062
|
+
return parseJSXExpressionContainer(parser, context, privateScope, 1, 0);
|
|
9026
9063
|
if (parser.getToken() === 8456256) {
|
|
9064
|
+
const { tokenStart } = parser;
|
|
9027
9065
|
nextToken(parser, context);
|
|
9028
9066
|
if (parser.getToken() === 8457014)
|
|
9029
|
-
return parseJSXClosingFragment(parser, context, inJSXChild,
|
|
9030
|
-
return parseJSXRootElementOrFragment(parser, context, privateScope, 1,
|
|
9067
|
+
return parseJSXClosingFragment(parser, context, inJSXChild, tokenStart);
|
|
9068
|
+
return parseJSXRootElementOrFragment(parser, context, privateScope, 1, tokenStart);
|
|
9031
9069
|
}
|
|
9032
9070
|
report(parser, 0);
|
|
9033
9071
|
}
|
|
9034
|
-
function parseJSXText(parser, context
|
|
9072
|
+
function parseJSXText(parser, context) {
|
|
9073
|
+
const start = parser.tokenStart;
|
|
9035
9074
|
nextToken(parser, context);
|
|
9036
9075
|
const node = {
|
|
9037
9076
|
type: 'JSXText',
|
|
@@ -9040,13 +9079,13 @@ function parseJSXText(parser, context, start, line, column) {
|
|
|
9040
9079
|
if (context & 128) {
|
|
9041
9080
|
node.raw = parser.tokenRaw;
|
|
9042
9081
|
}
|
|
9043
|
-
return finishNode(
|
|
9082
|
+
return parser.finishNode(node, start);
|
|
9044
9083
|
}
|
|
9045
|
-
function parseJSXOpeningElementOrSelfCloseElement(parser, context, privateScope, inJSXChild, start
|
|
9084
|
+
function parseJSXOpeningElementOrSelfCloseElement(parser, context, privateScope, inJSXChild, start) {
|
|
9046
9085
|
if ((parser.getToken() & 143360) !== 143360 &&
|
|
9047
9086
|
(parser.getToken() & 4096) !== 4096)
|
|
9048
9087
|
report(parser, 0);
|
|
9049
|
-
const tagName = parseJSXElementName(parser, context
|
|
9088
|
+
const tagName = parseJSXElementName(parser, context);
|
|
9050
9089
|
const attributes = parseJSXAttributes(parser, context, privateScope);
|
|
9051
9090
|
const selfClosing = parser.getToken() === 8457014;
|
|
9052
9091
|
if (selfClosing)
|
|
@@ -9060,105 +9099,112 @@ function parseJSXOpeningElementOrSelfCloseElement(parser, context, privateScope,
|
|
|
9060
9099
|
else {
|
|
9061
9100
|
nextToken(parser, context);
|
|
9062
9101
|
}
|
|
9063
|
-
return finishNode(
|
|
9102
|
+
return parser.finishNode({
|
|
9064
9103
|
type: 'JSXOpeningElement',
|
|
9065
9104
|
name: tagName,
|
|
9066
9105
|
attributes,
|
|
9067
9106
|
selfClosing,
|
|
9068
|
-
});
|
|
9107
|
+
}, start);
|
|
9069
9108
|
}
|
|
9070
|
-
function parseJSXElementName(parser, context
|
|
9109
|
+
function parseJSXElementName(parser, context) {
|
|
9110
|
+
const { tokenStart } = parser;
|
|
9071
9111
|
rescanJSXIdentifier(parser);
|
|
9072
|
-
let key = parseJSXIdentifier(parser, context
|
|
9112
|
+
let key = parseJSXIdentifier(parser, context);
|
|
9073
9113
|
if (parser.getToken() === 21)
|
|
9074
|
-
return parseJSXNamespacedName(parser, context, key,
|
|
9114
|
+
return parseJSXNamespacedName(parser, context, key, tokenStart);
|
|
9075
9115
|
while (consumeOpt(parser, context, 67108877)) {
|
|
9076
9116
|
rescanJSXIdentifier(parser);
|
|
9077
|
-
key = parseJSXMemberExpression(parser, context, key,
|
|
9117
|
+
key = parseJSXMemberExpression(parser, context, key, tokenStart);
|
|
9078
9118
|
}
|
|
9079
9119
|
return key;
|
|
9080
9120
|
}
|
|
9081
|
-
function parseJSXMemberExpression(parser, context, object, start
|
|
9082
|
-
const property = parseJSXIdentifier(parser, context
|
|
9083
|
-
return finishNode(
|
|
9121
|
+
function parseJSXMemberExpression(parser, context, object, start) {
|
|
9122
|
+
const property = parseJSXIdentifier(parser, context);
|
|
9123
|
+
return parser.finishNode({
|
|
9084
9124
|
type: 'JSXMemberExpression',
|
|
9085
9125
|
object,
|
|
9086
9126
|
property,
|
|
9087
|
-
});
|
|
9127
|
+
}, start);
|
|
9088
9128
|
}
|
|
9089
9129
|
function parseJSXAttributes(parser, context, privateScope) {
|
|
9090
9130
|
const attributes = [];
|
|
9091
9131
|
while (parser.getToken() !== 8457014 &&
|
|
9092
9132
|
parser.getToken() !== 8390721 &&
|
|
9093
9133
|
parser.getToken() !== 1048576) {
|
|
9094
|
-
attributes.push(parseJsxAttribute(parser, context, privateScope
|
|
9134
|
+
attributes.push(parseJsxAttribute(parser, context, privateScope));
|
|
9095
9135
|
}
|
|
9096
9136
|
return attributes;
|
|
9097
9137
|
}
|
|
9098
|
-
function parseJSXSpreadAttribute(parser, context, privateScope
|
|
9138
|
+
function parseJSXSpreadAttribute(parser, context, privateScope) {
|
|
9139
|
+
const start = parser.tokenStart;
|
|
9099
9140
|
nextToken(parser, context);
|
|
9100
9141
|
consume(parser, context, 14);
|
|
9101
|
-
const expression = parseExpression(parser, context, privateScope, 1, 0, parser.
|
|
9142
|
+
const expression = parseExpression(parser, context, privateScope, 1, 0, parser.tokenStart);
|
|
9102
9143
|
consume(parser, context, 1074790415);
|
|
9103
|
-
return finishNode(
|
|
9144
|
+
return parser.finishNode({
|
|
9104
9145
|
type: 'JSXSpreadAttribute',
|
|
9105
9146
|
argument: expression,
|
|
9106
|
-
});
|
|
9147
|
+
}, start);
|
|
9107
9148
|
}
|
|
9108
|
-
function parseJsxAttribute(parser, context, privateScope
|
|
9149
|
+
function parseJsxAttribute(parser, context, privateScope) {
|
|
9150
|
+
const { tokenStart } = parser;
|
|
9109
9151
|
if (parser.getToken() === 2162700)
|
|
9110
|
-
return parseJSXSpreadAttribute(parser, context, privateScope
|
|
9152
|
+
return parseJSXSpreadAttribute(parser, context, privateScope);
|
|
9111
9153
|
rescanJSXIdentifier(parser);
|
|
9112
9154
|
let value = null;
|
|
9113
|
-
let name = parseJSXIdentifier(parser, context
|
|
9155
|
+
let name = parseJSXIdentifier(parser, context);
|
|
9114
9156
|
if (parser.getToken() === 21) {
|
|
9115
|
-
name = parseJSXNamespacedName(parser, context, name,
|
|
9157
|
+
name = parseJSXNamespacedName(parser, context, name, tokenStart);
|
|
9116
9158
|
}
|
|
9117
9159
|
if (parser.getToken() === 1077936155) {
|
|
9118
9160
|
const token = scanJSXAttributeValue(parser, context);
|
|
9119
|
-
const { tokenIndex, tokenLine, tokenColumn } = parser;
|
|
9120
9161
|
switch (token) {
|
|
9121
9162
|
case 134283267:
|
|
9122
9163
|
value = parseLiteral(parser, context);
|
|
9123
9164
|
break;
|
|
9124
9165
|
case 8456256:
|
|
9125
|
-
value = parseJSXRootElementOrFragment(parser, context, privateScope, 0,
|
|
9166
|
+
value = parseJSXRootElementOrFragment(parser, context, privateScope, 0, parser.tokenStart);
|
|
9126
9167
|
break;
|
|
9127
9168
|
case 2162700:
|
|
9128
|
-
value = parseJSXExpressionContainer(parser, context, privateScope, 0, 1
|
|
9169
|
+
value = parseJSXExpressionContainer(parser, context, privateScope, 0, 1);
|
|
9129
9170
|
break;
|
|
9130
9171
|
default:
|
|
9131
9172
|
report(parser, 154);
|
|
9132
9173
|
}
|
|
9133
9174
|
}
|
|
9134
|
-
return finishNode(
|
|
9175
|
+
return parser.finishNode({
|
|
9135
9176
|
type: 'JSXAttribute',
|
|
9136
9177
|
value,
|
|
9137
9178
|
name,
|
|
9138
|
-
});
|
|
9179
|
+
}, tokenStart);
|
|
9139
9180
|
}
|
|
9140
|
-
function parseJSXNamespacedName(parser, context, namespace, start
|
|
9181
|
+
function parseJSXNamespacedName(parser, context, namespace, start) {
|
|
9141
9182
|
consume(parser, context, 21);
|
|
9142
|
-
const name = parseJSXIdentifier(parser, context
|
|
9143
|
-
return finishNode(
|
|
9183
|
+
const name = parseJSXIdentifier(parser, context);
|
|
9184
|
+
return parser.finishNode({
|
|
9144
9185
|
type: 'JSXNamespacedName',
|
|
9145
9186
|
namespace,
|
|
9146
9187
|
name,
|
|
9147
|
-
});
|
|
9188
|
+
}, start);
|
|
9148
9189
|
}
|
|
9149
|
-
function parseJSXExpressionContainer(parser, context, privateScope, inJSXChild, isAttr
|
|
9190
|
+
function parseJSXExpressionContainer(parser, context, privateScope, inJSXChild, isAttr) {
|
|
9191
|
+
const { tokenStart: start } = parser;
|
|
9150
9192
|
nextToken(parser, context | 8192);
|
|
9151
|
-
const {
|
|
9193
|
+
const { tokenStart } = parser;
|
|
9152
9194
|
if (parser.getToken() === 14)
|
|
9153
|
-
return parseJSXSpreadChild(parser, context, privateScope, start
|
|
9195
|
+
return parseJSXSpreadChild(parser, context, privateScope, start);
|
|
9154
9196
|
let expression = null;
|
|
9155
9197
|
if (parser.getToken() === 1074790415) {
|
|
9156
9198
|
if (isAttr)
|
|
9157
9199
|
report(parser, 157);
|
|
9158
|
-
expression = parseJSXEmptyExpression(parser,
|
|
9200
|
+
expression = parseJSXEmptyExpression(parser, {
|
|
9201
|
+
index: parser.startIndex,
|
|
9202
|
+
line: parser.startLine,
|
|
9203
|
+
column: parser.startColumn,
|
|
9204
|
+
});
|
|
9159
9205
|
}
|
|
9160
9206
|
else {
|
|
9161
|
-
expression = parseExpression(parser, context, privateScope, 1, 0,
|
|
9207
|
+
expression = parseExpression(parser, context, privateScope, 1, 0, tokenStart);
|
|
9162
9208
|
}
|
|
9163
9209
|
if (parser.getToken() !== 1074790415) {
|
|
9164
9210
|
report(parser, 25, KeywordDescTable[1074790415 & 255]);
|
|
@@ -9169,41 +9215,39 @@ function parseJSXExpressionContainer(parser, context, privateScope, inJSXChild,
|
|
|
9169
9215
|
else {
|
|
9170
9216
|
nextToken(parser, context);
|
|
9171
9217
|
}
|
|
9172
|
-
return finishNode(
|
|
9218
|
+
return parser.finishNode({
|
|
9173
9219
|
type: 'JSXExpressionContainer',
|
|
9174
9220
|
expression,
|
|
9175
|
-
});
|
|
9221
|
+
}, start);
|
|
9176
9222
|
}
|
|
9177
|
-
function parseJSXSpreadChild(parser, context, privateScope, start
|
|
9223
|
+
function parseJSXSpreadChild(parser, context, privateScope, start) {
|
|
9178
9224
|
consume(parser, context, 14);
|
|
9179
|
-
const expression = parseExpression(parser, context, privateScope, 1, 0, parser.
|
|
9225
|
+
const expression = parseExpression(parser, context, privateScope, 1, 0, parser.tokenStart);
|
|
9180
9226
|
consume(parser, context, 1074790415);
|
|
9181
|
-
return finishNode(
|
|
9227
|
+
return parser.finishNode({
|
|
9182
9228
|
type: 'JSXSpreadChild',
|
|
9183
9229
|
expression,
|
|
9184
|
-
});
|
|
9230
|
+
}, start);
|
|
9185
9231
|
}
|
|
9186
|
-
function parseJSXEmptyExpression(parser,
|
|
9187
|
-
|
|
9188
|
-
parser.startLine = parser.tokenLine;
|
|
9189
|
-
parser.startColumn = parser.tokenColumn;
|
|
9190
|
-
return finishNode(parser, context, start, line, column, {
|
|
9232
|
+
function parseJSXEmptyExpression(parser, start) {
|
|
9233
|
+
return parser.finishNode({
|
|
9191
9234
|
type: 'JSXEmptyExpression',
|
|
9192
|
-
});
|
|
9235
|
+
}, start, parser.tokenStart);
|
|
9193
9236
|
}
|
|
9194
|
-
function parseJSXIdentifier(parser, context
|
|
9237
|
+
function parseJSXIdentifier(parser, context) {
|
|
9238
|
+
const start = parser.tokenStart;
|
|
9195
9239
|
if (!(parser.getToken() & 143360)) {
|
|
9196
9240
|
report(parser, 30, KeywordDescTable[parser.getToken() & 255]);
|
|
9197
9241
|
}
|
|
9198
9242
|
const { tokenValue } = parser;
|
|
9199
9243
|
nextToken(parser, context);
|
|
9200
|
-
return finishNode(
|
|
9244
|
+
return parser.finishNode({
|
|
9201
9245
|
type: 'JSXIdentifier',
|
|
9202
9246
|
name: tokenValue,
|
|
9203
|
-
});
|
|
9247
|
+
}, start);
|
|
9204
9248
|
}
|
|
9205
9249
|
|
|
9206
|
-
var version$1 = "6.1.
|
|
9250
|
+
var version$1 = "6.1.2";
|
|
9207
9251
|
|
|
9208
9252
|
const version = version$1;
|
|
9209
9253
|
function parseScript(source, options) {
|