meriyah 6.1.0 → 6.1.2

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