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