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 +8 -0
- package/dist/meriyah.cjs +76 -70
- package/dist/meriyah.min.mjs +1 -1
- package/dist/meriyah.mjs +76 -70
- package/dist/meriyah.umd.js +76 -70
- package/dist/meriyah.umd.min.js +1 -1
- package/dist/types/common.d.ts +2 -1
- package/dist/types/parser/scope.d.ts +5 -5
- package/package.json +1 -1
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.
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
4752
|
-
end:
|
|
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
|
-
},
|
|
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
|
-
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
-
},
|
|
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,
|