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