meriyah 7.3.1 → 7.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [7.3.2](https://github.com/meriyah/meriyah/compare/v7.3.1...v7.3.2) (2026-08-17)
2
+
3
+ ### Bug Fixes
4
+
5
+ * **jsx:** fix pasring jsx contextual identifier ([#630](https://github.com/meriyah/meriyah/issues/630)) ([503bc24](https://github.com/meriyah/meriyah/commit/503bc2425d4af95df328f6c1e676269aaeccb54d)), closes [#629](https://github.com/meriyah/meriyah/issues/629)
6
+ * **jsx:** fix tokenizing ">" when "=" is after ([#632](https://github.com/meriyah/meriyah/issues/632)) ([6d419ac](https://github.com/meriyah/meriyah/commit/6d419aca1b76c36b379c595ca26a3fe96ed1cf77)), closes [#631](https://github.com/meriyah/meriyah/issues/631)
7
+ * **parser:** fix error location for duplicate binding ([#628](https://github.com/meriyah/meriyah/issues/628)) ([49500e1](https://github.com/meriyah/meriyah/commit/49500e17acfff303dff4768523cbecfd66e09dba))
8
+
1
9
  ## [7.3.1](https://github.com/meriyah/meriyah/compare/v7.3.0...v7.3.1) (2026-08-06)
2
10
 
3
11
  ### Bug Fixes
package/dist/meriyah.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version$1 = "7.3.1";
3
+ var version$1 = "7.3.2";
4
4
  var packageJson = {
5
5
  version: version$1};
6
6
 
@@ -2042,6 +2042,9 @@ function scanSingleToken(parser, context, state) {
2042
2042
  }
2043
2043
  case 8390721: {
2044
2044
  advanceChar(parser);
2045
+ if (context & 1048576) {
2046
+ return 8390721;
2047
+ }
2045
2048
  const ch = parser.currentChar;
2046
2049
  if (ch === 61) {
2047
2050
  advanceChar(parser);
@@ -4565,7 +4568,7 @@ function nextJSXToken(parser) {
4565
4568
  parser.setToken(138);
4566
4569
  }
4567
4570
  function rescanJSXIdentifier(parser) {
4568
- if ((parser.getToken() & 143360) === 143360) {
4571
+ if (parser.getToken() & 143360) {
4569
4572
  const { index } = parser;
4570
4573
  let char = parser.currentChar;
4571
4574
  while (CharTypes[char] & (32768 | 2)) {
@@ -4670,18 +4673,18 @@ class Scope {
4670
4673
  createChildScope(type) {
4671
4674
  return new Scope(this.parser, type, this);
4672
4675
  }
4673
- addVarOrBlock(context, name, kind, origin) {
4676
+ addVarOrBlock(context, name, kind, tokenStart, tokenEnd, origin) {
4674
4677
  if (kind & 4) {
4675
- this.addVarName(context, name, kind);
4678
+ this.addVarName(context, name, kind, tokenStart, tokenEnd);
4676
4679
  }
4677
4680
  else {
4678
- this.addBlockName(context, name, kind, origin);
4681
+ this.addBlockName(context, name, kind, tokenStart, tokenEnd, origin);
4679
4682
  }
4680
4683
  if (origin & 64) {
4681
4684
  this.parser.declareUnboundVariable(name);
4682
4685
  }
4683
4686
  }
4684
- addVarName(context, name, kind) {
4687
+ addVarName(context, name, kind, tokenStart, tokenEnd) {
4685
4688
  const { parser } = this;
4686
4689
  let currentScope = this;
4687
4690
  while (currentScope && (currentScope.type & 128) === 0) {
@@ -4693,17 +4696,17 @@ class Scope {
4693
4696
  ((kind & 128 && value & 68) ||
4694
4697
  (value & 128 && kind & 68))) ;
4695
4698
  else {
4696
- parser.report(147, name);
4699
+ throw new ParseError(tokenStart, tokenEnd, 147, name);
4697
4700
  }
4698
4701
  }
4699
4702
  if (currentScope === this) {
4700
4703
  if (value && value & 1 && kind & 1) {
4701
- currentScope.recordScopeError(147, name);
4704
+ currentScope.recordScopeError(147, tokenStart, tokenEnd, name);
4702
4705
  }
4703
4706
  }
4704
4707
  if (value &&
4705
4708
  (value & 256 || (value & 512 && !parser.options.webcompat))) {
4706
- parser.report(147, name);
4709
+ throw new ParseError(tokenStart, tokenEnd, 147, name);
4707
4710
  }
4708
4711
  currentScope.variableBindings.set(name, kind);
4709
4712
  currentScope = currentScope.parent;
@@ -4712,12 +4715,12 @@ class Scope {
4712
4715
  hasVariable(name) {
4713
4716
  return this.variableBindings.has(name);
4714
4717
  }
4715
- addBlockName(context, name, kind, origin = 0) {
4718
+ addBlockName(context, name, kind, tokenStart, tokenEnd, origin = 0) {
4716
4719
  const { parser } = this;
4717
4720
  const value = this.variableBindings.get(name);
4718
4721
  if (value && (value & 2) === 0) {
4719
4722
  if (kind & 1) {
4720
- this.recordScopeError(147, name);
4723
+ this.recordScopeError(147, tokenStart, tokenEnd, name);
4721
4724
  }
4722
4725
  else if (parser.options.webcompat &&
4723
4726
  (context & 1) === 0 &&
@@ -4725,31 +4728,31 @@ class Scope {
4725
4728
  value === 64 &&
4726
4729
  kind === 64) ;
4727
4730
  else {
4728
- parser.report(147, name);
4731
+ throw new ParseError(tokenStart, tokenEnd, 147, name);
4729
4732
  }
4730
4733
  }
4731
4734
  if (this.type & 64 &&
4732
4735
  this.parent?.hasVariable(name) &&
4733
4736
  (this.parent.variableBindings.get(name) & 2) === 0) {
4734
- parser.report(147, name);
4737
+ throw new ParseError(tokenStart, tokenEnd, 147, name);
4735
4738
  }
4736
4739
  if (this.type & 512 && value && (value & 2) === 0) {
4737
4740
  if (kind & 1) {
4738
- this.recordScopeError(147, name);
4741
+ this.recordScopeError(147, tokenStart, tokenEnd, name);
4739
4742
  }
4740
4743
  }
4741
4744
  if (this.type & 32) {
4742
4745
  if (this.parent.variableBindings.get(name) & 768)
4743
- parser.report(161, name);
4746
+ throw new ParseError(tokenStart, tokenEnd, 161, name);
4744
4747
  }
4745
4748
  this.variableBindings.set(name, kind);
4746
4749
  }
4747
- recordScopeError(type, ...params) {
4748
- this.scopeError = {
4750
+ recordScopeError(type, tokenStart, tokenEnd, ...params) {
4751
+ this.scopeError ??= {
4749
4752
  type,
4750
4753
  params,
4751
- start: this.parser.tokenStart,
4752
- end: this.parser.currentLocation,
4754
+ start: tokenStart,
4755
+ end: tokenEnd,
4753
4756
  };
4754
4757
  }
4755
4758
  reportScopeError() {
@@ -4760,9 +4763,9 @@ class Scope {
4760
4763
  throw new ParseError(scopeError.start, scopeError.end, scopeError.type, ...scopeError.params);
4761
4764
  }
4762
4765
  }
4763
- function createArrowHeadParsingScope(parser, context, value) {
4766
+ function createArrowHeadParsingScope(parser, context, value, tokenStart, tokenEnd) {
4764
4767
  const scope = parser.createScope().createChildScope(512);
4765
- scope.addBlockName(context, value, 1);
4768
+ scope.addBlockName(context, value, 1, tokenStart, tokenEnd);
4766
4769
  return scope;
4767
4770
  }
4768
4771
 
@@ -5524,7 +5527,7 @@ function parseDoWhileStatement(parser, context, scope, privateScope, labels) {
5524
5527
  }, start);
5525
5528
  }
5526
5529
  function parseLetIdentOrVarDeclarationStatement(parser, context, scope, privateScope, origin) {
5527
- const { tokenValue, tokenStart } = parser;
5530
+ const { tokenValue, tokenStart, currentLocation } = parser;
5528
5531
  const token = parser.getToken();
5529
5532
  let expr = parseIdentifier(parser, context);
5530
5533
  if (parser.getToken() & (143360 | 2097152) &&
@@ -5546,7 +5549,7 @@ function parseLetIdentOrVarDeclarationStatement(parser, context, scope, privateS
5546
5549
  if (parser.getToken() === 10) {
5547
5550
  let scope = void 0;
5548
5551
  if (parser.options.lexical)
5549
- scope = createArrowHeadParsingScope(parser, context, tokenValue);
5552
+ scope = createArrowHeadParsingScope(parser, context, tokenValue, tokenStart, currentLocation);
5550
5553
  parser.flags = (parser.flags | 128) ^ 128;
5551
5554
  expr = parseArrowFunctionExpression(parser, context, scope, privateScope, [expr], 0, tokenStart);
5552
5555
  }
@@ -5765,6 +5768,7 @@ function parseForStatement(parser, context, scope, privateScope, labels) {
5765
5768
  }
5766
5769
  else if (parser.getToken() === 471156) {
5767
5770
  const ofStart = parser.tokenStart;
5771
+ const ofEnd = parser.currentLocation;
5768
5772
  const ofToken = parser.getToken();
5769
5773
  const ofValue = parser.tokenValue;
5770
5774
  const ofIdentifier = parseIdentifier(parser, context);
@@ -5780,7 +5784,7 @@ function parseForStatement(parser, context, scope, privateScope, labels) {
5780
5784
  else {
5781
5785
  resourceDeclarationKind = 'using';
5782
5786
  validateBindingIdentifier(parser, context, 16, ofToken, 0);
5783
- scope?.addBlockName(context, ofValue, 16, 32);
5787
+ scope?.addBlockName(context, ofValue, 16, ofStart, ofEnd, 32);
5784
5788
  let declarationInitializer = null;
5785
5789
  if (parser.getToken() === 1077936155) {
5786
5790
  nextToken(parser, context | 32);
@@ -5971,7 +5975,7 @@ function parseRestrictedIdentifier(parser, context, scope) {
5971
5975
  parser.report(120);
5972
5976
  if ((parser.getToken() & 537079808) === 537079808)
5973
5977
  parser.report(121);
5974
- scope?.addBlockName(context, parser.tokenValue, 8);
5978
+ scope?.addBlockName(context, parser.tokenValue, 8, parser.tokenStart, parser.currentLocation);
5975
5979
  return parseIdentifier(parser, context);
5976
5980
  }
5977
5981
  function parseImportDeclaration(parser, context, scope) {
@@ -5988,7 +5992,7 @@ function parseImportDeclaration(parser, context, scope) {
5988
5992
  else {
5989
5993
  if (parser.getToken() & 143360) {
5990
5994
  const token = parser.getToken();
5991
- const { tokenValue } = parser;
5995
+ const { tokenValue, tokenStart: start, currentLocation } = parser;
5992
5996
  const isPhaseDefer = parser.features & 2 && (token & -2147483648) === 0 && tokenValue == 'defer';
5993
5997
  const isPhaseSource = parser.features & 4 && (token & -2147483648) === 0 && tokenValue == 'source';
5994
5998
  if (isPhaseDefer || isPhaseSource) {
@@ -5999,7 +6003,7 @@ function parseImportDeclaration(parser, context, scope) {
5999
6003
  specifiers = [parseImportNamespaceSpecifier(parser, context, scope)];
6000
6004
  }
6001
6005
  else if (parser.getToken() === 209011 || parser.getToken() === 18) {
6002
- scope?.addBlockName(context, tokenValue, 8);
6006
+ scope?.addBlockName(context, tokenValue, 8, start, currentLocation);
6003
6007
  specifiers = [
6004
6008
  parser.finishNode({
6005
6009
  type: 'ImportDefaultSpecifier',
@@ -6014,10 +6018,11 @@ function parseImportDeclaration(parser, context, scope) {
6014
6018
  else if (parser.getToken() === 209011) {
6015
6019
  const fromToken = parser.getToken();
6016
6020
  const fromStart = parser.tokenStart;
6021
+ const fromEnd = parser.currentLocation;
6017
6022
  const fromLocal = parseIdentifier(parser, context);
6018
6023
  if (parser.getToken() === 209011) {
6019
6024
  validateBindingIdentifier(parser, context, 16, fromToken, 0);
6020
- scope?.addBlockName(context, fromLocal.name, 8);
6025
+ scope?.addBlockName(context, fromLocal.name, 8, fromStart, fromEnd);
6021
6026
  phase = 'source';
6022
6027
  specifiers = [
6023
6028
  parser.finishNode({
@@ -6027,7 +6032,7 @@ function parseImportDeclaration(parser, context, scope) {
6027
6032
  ];
6028
6033
  }
6029
6034
  else {
6030
- scope?.addBlockName(context, tokenValue, 8);
6035
+ scope?.addBlockName(context, tokenValue, 8, start, currentLocation);
6031
6036
  specifiers = [
6032
6037
  parser.finishNode({
6033
6038
  type: 'ImportDefaultSpecifier',
@@ -6052,7 +6057,7 @@ function parseImportDeclaration(parser, context, scope) {
6052
6057
  ];
6053
6058
  }
6054
6059
  else if (parser.getToken() === 18) {
6055
- scope?.addBlockName(context, tokenValue, 8);
6060
+ scope?.addBlockName(context, tokenValue, 8, start, currentLocation);
6056
6061
  specifiers = [
6057
6062
  parser.finishNode({
6058
6063
  type: 'ImportDefaultSpecifier',
@@ -6137,7 +6142,8 @@ function parseModuleSpecifier(parser, context) {
6137
6142
  function parseImportSpecifierOrNamedImports(parser, context, scope, specifiers) {
6138
6143
  nextToken(parser, context);
6139
6144
  while (parser.getToken() & 143360 || parser.getToken() === 134283267) {
6140
- let { tokenValue, tokenStart } = parser;
6145
+ let { tokenValue, tokenStart, currentLocation } = parser;
6146
+ const start = tokenStart;
6141
6147
  const token = parser.getToken();
6142
6148
  const imported = parseModuleExportName(parser, context);
6143
6149
  let local;
@@ -6150,6 +6156,8 @@ function parseImportSpecifierOrNamedImports(parser, context, scope, specifiers)
6150
6156
  validateBindingIdentifier(parser, context, 16, parser.getToken(), 0);
6151
6157
  }
6152
6158
  tokenValue = parser.tokenValue;
6159
+ tokenStart = parser.tokenStart;
6160
+ currentLocation = parser.currentLocation;
6153
6161
  local = parseIdentifier(parser, context);
6154
6162
  }
6155
6163
  else if (imported.type === 'Identifier') {
@@ -6159,12 +6167,12 @@ function parseImportSpecifierOrNamedImports(parser, context, scope, specifiers)
6159
6167
  else {
6160
6168
  parser.report(25, KeywordDescTable[77932 & 255]);
6161
6169
  }
6162
- scope?.addBlockName(context, tokenValue, 8);
6170
+ scope?.addBlockName(context, tokenValue, 8, tokenStart, currentLocation);
6163
6171
  specifiers.push(parser.finishNode({
6164
6172
  type: 'ImportSpecifier',
6165
6173
  local,
6166
6174
  imported,
6167
- }, tokenStart));
6175
+ }, start));
6168
6176
  if (parser.getToken() !== 1074790415)
6169
6177
  consume(parser, context, 18);
6170
6178
  }
@@ -6231,7 +6239,7 @@ function parseExportDeclaration(parser, context, scope) {
6231
6239
  }
6232
6240
  else if (parser.getToken() & 143360) {
6233
6241
  if (scope)
6234
- scope = createArrowHeadParsingScope(parser, context, parser.tokenValue);
6242
+ scope = createArrowHeadParsingScope(parser, context, parser.tokenValue, parser.tokenStart, parser.currentLocation);
6235
6243
  declaration = parseIdentifier(parser, context);
6236
6244
  declaration = parseArrowFunctionExpression(parser, context, scope, undefined, [declaration], 1, tokenStart);
6237
6245
  }
@@ -7320,12 +7328,7 @@ function parseFunctionDeclaration(parser, context, scope, privateScope, allowGen
7320
7328
  : 64 | (isAsync ? 1024 : 0) | (isGenerator ? 1024 : 0);
7321
7329
  validateFunctionName(parser, context, parser.getToken());
7322
7330
  if (scope) {
7323
- if (kind & 4) {
7324
- scope.addVarName(context, parser.tokenValue, kind);
7325
- }
7326
- else {
7327
- scope.addBlockName(context, parser.tokenValue, kind, origin);
7328
- }
7331
+ scope.addVarOrBlock(context, parser.tokenValue, kind, parser.tokenStart, parser.currentLocation, origin);
7329
7332
  functionScope = functionScope?.createChildScope(128);
7330
7333
  if (flags) {
7331
7334
  if (flags & 2) {
@@ -7430,7 +7433,7 @@ function parseArrayExpressionOrPattern(parser, context, scope, privateScope, ski
7430
7433
  }
7431
7434
  else {
7432
7435
  let left;
7433
- const { tokenStart, tokenValue } = parser;
7436
+ const { tokenStart, tokenValue, currentLocation } = parser;
7434
7437
  const token = parser.getToken();
7435
7438
  if (token & 143360) {
7436
7439
  left = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, inGroup, 1, tokenStart);
@@ -7438,7 +7441,7 @@ function parseArrayExpressionOrPattern(parser, context, scope, privateScope, ski
7438
7441
  if (parser.assignable & 2)
7439
7442
  parser.report(26);
7440
7443
  nextToken(parser, context | 32);
7441
- scope?.addVarOrBlock(context, tokenValue, kind, origin);
7444
+ scope?.addVarOrBlock(context, tokenValue, kind, tokenStart, currentLocation, origin);
7442
7445
  const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.tokenStart);
7443
7446
  left = parser.finishNode(isPattern
7444
7447
  ? {
@@ -7464,7 +7467,7 @@ function parseArrayExpressionOrPattern(parser, context, scope, privateScope, ski
7464
7467
  destructible |= 16;
7465
7468
  }
7466
7469
  else {
7467
- scope?.addVarOrBlock(context, tokenValue, kind, origin);
7470
+ scope?.addVarOrBlock(context, tokenValue, kind, tokenStart, currentLocation, origin);
7468
7471
  }
7469
7472
  destructible |=
7470
7473
  parser.destructible & 256
@@ -7602,7 +7605,7 @@ function parseSpreadOrRestElement(parser, context, scope, privateScope, closingT
7602
7605
  nextToken(parser, context | 32);
7603
7606
  let argument = null;
7604
7607
  let destructible = 0;
7605
- const { tokenValue, tokenStart } = parser;
7608
+ const { tokenValue, tokenStart, currentLocation } = parser;
7606
7609
  let token = parser.getToken();
7607
7610
  if (token & 143360) {
7608
7611
  parser.assignable = 1;
@@ -7619,7 +7622,7 @@ function parseSpreadOrRestElement(parser, context, scope, privateScope, closingT
7619
7622
  destructible |= 16;
7620
7623
  }
7621
7624
  else if (token === closingToken || token === 18) {
7622
- scope?.addVarOrBlock(context, tokenValue, kind, origin);
7625
+ scope?.addVarOrBlock(context, tokenValue, kind, tokenStart, currentLocation, origin);
7623
7626
  }
7624
7627
  else {
7625
7628
  destructible |= 32;
@@ -7774,7 +7777,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7774
7777
  let prototypeCount = 0;
7775
7778
  context = (context | 131072) ^ 131072;
7776
7779
  while (parser.getToken() !== 1074790415) {
7777
- const { tokenValue, tokenStart } = parser;
7780
+ const { tokenValue, tokenStart, currentLocation } = parser;
7778
7781
  const token = parser.getToken();
7779
7782
  if (token === 14) {
7780
7783
  properties.push(parseSpreadOrRestElement(parser, context, scope, privateScope, 1074790415, kind, 0, inGroup, isPattern, origin));
@@ -7799,7 +7802,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7799
7802
  else {
7800
7803
  validateBindingIdentifier(parser, context, kind, token, 0);
7801
7804
  }
7802
- scope?.addVarOrBlock(context, tokenValue, kind, origin);
7805
+ scope?.addVarOrBlock(context, tokenValue, kind, tokenStart, currentLocation, origin);
7803
7806
  if (consumeOpt(parser, context | 32, 1077936155)) {
7804
7807
  destructible |= 8;
7805
7808
  const right = parseExpression(parser, context, privateScope, 1, inGroup, parser.tokenStart);
@@ -7823,7 +7826,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7823
7826
  }
7824
7827
  }
7825
7828
  else if (consumeOpt(parser, context | 32, 21)) {
7826
- const { tokenStart } = parser;
7829
+ const { tokenStart, currentLocation } = parser;
7827
7830
  if (tokenValue === '__proto__')
7828
7831
  prototypeCount++;
7829
7832
  if (parser.getToken() & 143360) {
@@ -7839,7 +7842,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7839
7842
  destructible |= 16;
7840
7843
  }
7841
7844
  else if ((tokenAfterColon & 143360) === 143360) {
7842
- scope?.addVarOrBlock(context, valueAfterColon, kind, origin);
7845
+ scope?.addVarOrBlock(context, valueAfterColon, kind, tokenStart, currentLocation, origin);
7843
7846
  }
7844
7847
  }
7845
7848
  else {
@@ -7857,7 +7860,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7857
7860
  destructible |= 32;
7858
7861
  }
7859
7862
  else {
7860
- scope?.addVarOrBlock(context, valueAfterColon, kind, origin);
7863
+ scope?.addVarOrBlock(context, valueAfterColon, kind, tokenStart, currentLocation, origin);
7861
7864
  }
7862
7865
  value = parseAssignmentExpression(parser, context, privateScope, inGroup, isPattern, tokenStart, value);
7863
7866
  }
@@ -8025,7 +8028,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
8025
8028
  prototypeCount++;
8026
8029
  if (parser.getToken() & 143360) {
8027
8030
  value = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, inGroup, 1, tokenStart);
8028
- const { tokenValue: valueAfterColon } = parser;
8031
+ const { tokenValue: valueAfterColon, tokenStart: start, currentLocation } = parser;
8029
8032
  const token = parser.getToken();
8030
8033
  value = parseMemberOrUpdateExpression(parser, context, privateScope, value, inGroup, 0, tokenStart);
8031
8034
  if (parser.getToken() === 18 || parser.getToken() === 1074790415) {
@@ -8034,7 +8037,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
8034
8037
  destructible |= 16;
8035
8038
  }
8036
8039
  else {
8037
- scope?.addVarOrBlock(context, valueAfterColon, kind, origin);
8040
+ scope?.addVarOrBlock(context, valueAfterColon, kind, start, currentLocation, origin);
8038
8041
  }
8039
8042
  }
8040
8043
  else {
@@ -8126,7 +8129,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
8126
8129
  state |= 2;
8127
8130
  if (parser.getToken() === 21) {
8128
8131
  nextToken(parser, context | 32);
8129
- const { tokenStart, tokenValue } = parser;
8132
+ const { tokenStart, tokenValue, currentLocation } = parser;
8130
8133
  const tokenAfterColon = parser.getToken();
8131
8134
  if (parser.getToken() & 143360) {
8132
8135
  value = parsePrimaryExpression(parser, context, privateScope, kind, 0, 1, inGroup, 1, tokenStart);
@@ -8147,7 +8150,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
8147
8150
  destructible |= 16;
8148
8151
  }
8149
8152
  else if ((tokenAfterColon & 143360) === 143360) {
8150
- scope?.addVarOrBlock(context, tokenValue, kind, origin);
8153
+ scope?.addVarOrBlock(context, tokenValue, kind, tokenStart, currentLocation, origin);
8151
8154
  }
8152
8155
  }
8153
8156
  else {
@@ -8406,10 +8409,10 @@ function parseParenthesizedExpression(parser, context, privateScope, canAssign,
8406
8409
  const tokenAfterParenthesesStart = parser.tokenStart;
8407
8410
  parser.assignable = 1;
8408
8411
  while (parser.getToken() !== 16) {
8409
- const { tokenStart } = parser;
8412
+ const { tokenStart, currentLocation } = parser;
8410
8413
  const token = parser.getToken();
8411
8414
  if (token & 143360) {
8412
- scope?.addBlockName(context, parser.tokenValue, 1);
8415
+ scope?.addBlockName(context, parser.tokenValue, 1, tokenStart, currentLocation);
8413
8416
  if ((token & 537079808) === 537079808) {
8414
8417
  isNonSimpleParameterList = 1;
8415
8418
  }
@@ -8566,8 +8569,7 @@ function parseParenthesizedExpression(parser, context, privateScope, canAssign,
8566
8569
  : expr;
8567
8570
  }
8568
8571
  function parseIdentifierOrArrow(parser, context, privateScope) {
8569
- const { tokenStart: start } = parser;
8570
- const { tokenValue } = parser;
8572
+ const { tokenValue, tokenStart, currentLocation } = parser;
8571
8573
  let isNonSimpleParameterList = 0;
8572
8574
  let hasStrictReserved = 0;
8573
8575
  if ((parser.getToken() & 537079808) === 537079808) {
@@ -8579,12 +8581,14 @@ function parseIdentifierOrArrow(parser, context, privateScope) {
8579
8581
  const expr = parseIdentifier(parser, context);
8580
8582
  parser.assignable = 1;
8581
8583
  if (parser.getToken() === 10) {
8582
- const scope = parser.options.lexical ? createArrowHeadParsingScope(parser, context, tokenValue) : undefined;
8584
+ const scope = parser.options.lexical
8585
+ ? createArrowHeadParsingScope(parser, context, tokenValue, tokenStart, currentLocation)
8586
+ : undefined;
8583
8587
  if (isNonSimpleParameterList)
8584
8588
  parser.flags |= 128;
8585
8589
  if (hasStrictReserved)
8586
8590
  parser.flags |= 256;
8587
- return parseArrowFunctionExpression(parser, context, scope, privateScope, [expr], 0, start);
8591
+ return parseArrowFunctionExpression(parser, context, scope, privateScope, [expr], 0, tokenStart);
8588
8592
  }
8589
8593
  return expr;
8590
8594
  }
@@ -8594,7 +8598,9 @@ function parseArrowFromIdentifier(parser, context, privateScope, value, expr, in
8594
8598
  if (inNew)
8595
8599
  parser.report(51);
8596
8600
  parser.flags &= -129;
8597
- const scope = parser.options.lexical ? createArrowHeadParsingScope(parser, context, value) : void 0;
8601
+ const scope = parser.options.lexical
8602
+ ? createArrowHeadParsingScope(parser, context, value, start, parser.currentLocation)
8603
+ : void 0;
8598
8604
  return parseArrowFunctionExpression(parser, context, scope, privateScope, [expr], isAsync, start, origin);
8599
8605
  }
8600
8606
  function parseParenthesizedArrow(parser, context, scope, privateScope, params, canAssign, isAsync, start, origin = 0) {
@@ -8852,10 +8858,10 @@ function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee,
8852
8858
  (256 | 128);
8853
8859
  const params = [];
8854
8860
  while (parser.getToken() !== 16) {
8855
- const { tokenStart } = parser;
8861
+ const { tokenStart, currentLocation } = parser;
8856
8862
  const token = parser.getToken();
8857
8863
  if (token & 143360) {
8858
- scope?.addBlockName(context, parser.tokenValue, kind);
8864
+ scope?.addBlockName(context, parser.tokenValue, kind, tokenStart, currentLocation);
8859
8865
  if ((token & 537079808) === 537079808) {
8860
8866
  parser.flags |= 512;
8861
8867
  }
@@ -9012,7 +9018,7 @@ function parseClassDeclaration(parser, context, scope, privateScope, flags) {
9012
9018
  consume(parser, context, 86094);
9013
9019
  let id = null;
9014
9020
  let superClass = null;
9015
- const { tokenValue } = parser;
9021
+ const { tokenValue, tokenStart, currentLocation } = parser;
9016
9022
  if (parser.getToken() & 4096 && parser.getToken() !== 20565) {
9017
9023
  if (isStrictReservedWord(parser, context, parser.getToken())) {
9018
9024
  parser.report(120);
@@ -9021,7 +9027,7 @@ function parseClassDeclaration(parser, context, scope, privateScope, flags) {
9021
9027
  parser.report(121);
9022
9028
  }
9023
9029
  if (scope) {
9024
- scope.addBlockName(context, tokenValue, 32);
9030
+ scope.addBlockName(context, tokenValue, 32, tokenStart, currentLocation);
9025
9031
  if (flags) {
9026
9032
  if (flags & 2) {
9027
9033
  parser.declareUnboundVariable(tokenValue);
@@ -9424,13 +9430,13 @@ function parseAndClassifyIdentifier(parser, context, scope, kind, origin = 0) {
9424
9430
  if (context & 2)
9425
9431
  parser.report(112);
9426
9432
  }
9427
- const { tokenValue, tokenStart: start } = parser;
9433
+ const { tokenValue, tokenStart, currentLocation } = parser;
9428
9434
  nextToken(parser, context);
9429
- scope?.addVarOrBlock(context, tokenValue, kind, origin);
9435
+ scope?.addVarOrBlock(context, tokenValue, kind, tokenStart, currentLocation, origin);
9430
9436
  return parser.finishNode({
9431
9437
  type: 'Identifier',
9432
9438
  name: tokenValue,
9433
- }, start);
9439
+ }, tokenStart);
9434
9440
  }
9435
9441
  function parseJSXRootElementOrFragment(parser, context, privateScope, inJSXChild, start) {
9436
9442
  if (!inJSXChild)
@@ -9569,7 +9575,7 @@ function parseJSXOpeningElementOrSelfCloseElement(parser, context, privateScope,
9569
9575
  const attributes = parseJSXAttributes(parser, context, privateScope);
9570
9576
  const selfClosing = parser.getToken() === 8457014;
9571
9577
  if (selfClosing)
9572
- consume(parser, context, 8457014);
9578
+ consume(parser, context | 1048576, 8457014);
9573
9579
  if (parser.getToken() !== 8390721) {
9574
9580
  parser.report(25, KeywordDescTable[8390721 & 255]);
9575
9581
  }
@@ -9720,7 +9726,7 @@ function parseJSXIdentifier(parser, context) {
9720
9726
  parser.report(30, KeywordDescTable[parser.getToken() & 255]);
9721
9727
  }
9722
9728
  const { tokenValue } = parser;
9723
- nextToken(parser, context);
9729
+ nextToken(parser, context | 1048576);
9724
9730
  return parser.finishNode({
9725
9731
  type: 'JSXIdentifier',
9726
9732
  name: tokenValue,