@@ -94,7 +94,7 @@ const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
9494 */
9595/** @typedef {import("../Parser").ParserState } ParserState */
9696/** @typedef {import("../Parser").PreparsedAst } PreparsedAst */
97- /** @typedef {{declaredScope: ScopeInfo, freeName: string | true, tagInfo: TagInfo | undefined} } VariableInfoInterface */
97+ /** @typedef {{declaredScope: ScopeInfo, freeName: string | true | undefined , tagInfo: TagInfo | undefined} } VariableInfoInterface */
9898/** @typedef {{ name: string | VariableInfo, rootInfo: string | VariableInfo, getMembers: () => string[], getMembersOptionals: () => boolean[], getMemberRanges: () => Range[] } } GetInfoResult */
9999/** @typedef {Statement | ModuleDeclaration | Expression } StatementPathItem */
100100/** @typedef {TODO } OnIdent */
@@ -248,7 +248,7 @@ class JavascriptParser extends Parser {
248248 this . hooks = Object . freeze ( {
249249 /** @type {HookMap<SyncBailHook<[UnaryExpression], BasicEvaluatedExpression | undefined | null>> } */
250250 evaluateTypeof : new HookMap ( ( ) => new SyncBailHook ( [ "expression" ] ) ) ,
251- /** @type {HookMap<SyncBailHook<[Expression | SpreadElement], BasicEvaluatedExpression | undefined | null>> } */
251+ /** @type {HookMap<SyncBailHook<[Expression | SpreadElement | PrivateIdentifier ], BasicEvaluatedExpression | undefined | null>> } */
252252 evaluate : new HookMap ( ( ) => new SyncBailHook ( [ "expression" ] ) ) ,
253253 /** @type {HookMap<SyncBailHook<[Identifier | ThisExpression | MemberExpression | MetaProperty], BasicEvaluatedExpression | undefined | null>> } */
254254 evaluateIdentifier : new HookMap ( ( ) => new SyncBailHook ( [ "expression" ] ) ) ,
@@ -1211,7 +1211,7 @@ class JavascriptParser extends Parser {
12111211 }
12121212 } ) ;
12131213 /**
1214- * @param {string } exprType expression type name
1214+ * @param {"Identifier" | "ThisExpression" | "MemberExpression" } exprType expression type name
12151215 * @param {function(Expression | SpreadElement): GetInfoResult | undefined } getInfo get info
12161216 * @returns {void }
12171217 */
@@ -1221,9 +1221,10 @@ class JavascriptParser extends Parser {
12211221 /** @type {GetInfoResult | undefined } */
12221222 let cachedInfo ;
12231223 this . hooks . evaluate . for ( exprType ) . tap ( "JavascriptParser" , expr => {
1224- const expression = /** @type {MemberExpression } */ ( expr ) ;
1224+ const expression =
1225+ /** @type {Identifier | ThisExpression | MemberExpression } */ ( expr ) ;
12251226
1226- const info = getInfo ( expr ) ;
1227+ const info = getInfo ( expression ) ;
12271228 if ( info !== undefined ) {
12281229 return this . callHooksForInfoWithFallback (
12291230 this . hooks . evaluateIdentifier ,
@@ -1245,7 +1246,11 @@ class JavascriptParser extends Parser {
12451246 this . hooks . evaluate
12461247 . for ( exprType )
12471248 . tap ( { name : "JavascriptParser" , stage : 100 } , expr => {
1248- const info = cachedExpression === expr ? cachedInfo : getInfo ( expr ) ;
1249+ const expression =
1250+ /** @type {Identifier | ThisExpression | MemberExpression } */
1251+ ( expr ) ;
1252+ const info =
1253+ cachedExpression === expression ? cachedInfo : getInfo ( expression ) ;
12491254 if ( info !== undefined ) {
12501255 return new BasicEvaluatedExpression ( )
12511256 . setIdentifier (
@@ -1255,7 +1260,7 @@ class JavascriptParser extends Parser {
12551260 info . getMembersOptionals ,
12561261 info . getMemberRanges
12571262 )
1258- . setRange ( /** @type {Range } */ ( expr . range ) ) ;
1263+ . setRange ( /** @type {Range } */ ( expression . range ) ) ;
12591264 }
12601265 } ) ;
12611266 this . hooks . finish . tap ( "JavascriptParser" , ( ) => {
@@ -1298,7 +1303,7 @@ class JavascriptParser extends Parser {
12981303
12991304 return this . callHooksForName (
13001305 this . hooks . evaluateIdentifier ,
1301- getRootName ( expr ) ,
1306+ getRootName ( metaProperty ) ,
13021307 metaProperty
13031308 ) ;
13041309 } ) ;
@@ -2365,12 +2370,13 @@ class JavascriptParser extends Parser {
23652370 ! this . hooks . importSpecifier . call (
23662371 statement ,
23672372 source ,
2368- specifier . imported . name ||
2369- // eslint-disable-next-line no-warning-comments
2370- // @ts -ignore
2371- // Old version of acorn used it
2372- // TODO drop it in webpack@6
2373- specifier . imported . value ,
2373+ /** @type {Identifier } */
2374+ ( specifier . imported ) . name ||
2375+ /** @type {string } */
2376+ (
2377+ /** @type {Literal } */
2378+ ( specifier . imported ) . value
2379+ ) ,
23742380 name
23752381 )
23762382 ) {
@@ -2446,25 +2452,28 @@ class JavascriptParser extends Parser {
24462452 const specifier = statement . specifiers [ specifierIndex ] ;
24472453 switch ( specifier . type ) {
24482454 case "ExportSpecifier" : {
2455+ const localName =
2456+ /** @type {Identifier } */ ( specifier . local ) . name ||
2457+ /** @type {string } */ (
2458+ /** @type {Literal } */ ( specifier . local ) . value
2459+ ) ;
24492460 const name =
2450- specifier . exported . name ||
2451- // eslint-disable-next-line no-warning-comments
2452- // @ts -ignore
2453- // Old version of acorn used it
2454- // TODO drop it in webpack@6
2455- specifier . exported . value ;
2461+ /** @type {Identifier } */
2462+ ( specifier . exported ) . name ||
2463+ /** @type {string } */
2464+ ( /** @type {Literal } */ ( specifier . exported ) . value ) ;
24562465 if ( source ) {
24572466 this . hooks . exportImportSpecifier . call (
24582467 statement ,
24592468 source ,
2460- specifier . local . name ,
2469+ localName ,
24612470 name ,
24622471 specifierIndex
24632472 ) ;
24642473 } else {
24652474 this . hooks . exportSpecifier . call (
24662475 statement ,
2467- specifier . local . name ,
2476+ localName ,
24682477 name ,
24692478 specifierIndex
24702479 ) ;
@@ -2567,7 +2576,12 @@ class JavascriptParser extends Parser {
25672576 */
25682577 blockPreWalkExportAllDeclaration ( statement ) {
25692578 const source = /** @type {ImportSource } */ ( statement . source . value ) ;
2570- const name = statement . exported ? statement . exported . name : null ;
2579+ const name = statement . exported
2580+ ? /** @type {Identifier } */
2581+ ( statement . exported ) . name ||
2582+ /** @type {string } */
2583+ ( /** @type {Literal } */ ( statement . exported ) . value )
2584+ : null ;
25712585 this . hooks . exportImport . call ( statement , source ) ;
25722586 this . hooks . exportImportSpecifier . call ( statement , source , null , name , 0 ) ;
25732587 }
@@ -4033,7 +4047,7 @@ class JavascriptParser extends Parser {
40334047 }
40344048
40354049 /**
4036- * @param {Expression | SpreadElement } expression expression node
4050+ * @param {Expression | SpreadElement | PrivateIdentifier } expression expression node
40374051 * @returns {BasicEvaluatedExpression } evaluation result
40384052 */
40394053 evaluateExpression ( expression ) {
@@ -4064,7 +4078,7 @@ class JavascriptParser extends Parser {
40644078 case "BinaryExpression" :
40654079 if ( expression . operator === "+" ) {
40664080 return (
4067- this . parseString ( expression . left ) +
4081+ this . parseString ( /** @type { Expression } */ ( expression . left ) ) +
40684082 this . parseString ( expression . right )
40694083 ) ;
40704084 }
@@ -4079,13 +4093,16 @@ class JavascriptParser extends Parser {
40794093
40804094 /**
40814095 * @param {Expression } expression expression
4082- * @returns {TODO } result
4096+ * @returns {{ range: Range, value: string, code: boolean, conditional: TODO } } result
40834097 */
40844098 parseCalculatedString ( expression ) {
40854099 switch ( expression . type ) {
40864100 case "BinaryExpression" :
40874101 if ( expression . operator === "+" ) {
4088- const left = this . parseCalculatedString ( expression . left ) ;
4102+ const left = this . parseCalculatedString (
4103+ /** @type {Expression } */
4104+ ( expression . left )
4105+ ) ;
40894106 const right = this . parseCalculatedString ( expression . right ) ;
40904107 if ( left . code ) {
40914108 return {
0 commit comments