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