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