meriyah 6.1.0 → 6.1.1

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