@@ -91,7 +91,7 @@ const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
91
91
/** @typedef {import("../Parser").ParserState } ParserState */
92
92
/** @typedef {import("../Parser").PreparsedAst } PreparsedAst */
93
93
/** @typedef {{declaredScope: ScopeInfo, freeName: string | true, tagInfo: TagInfo | undefined} } VariableInfoInterface */
94
- /** @typedef {{ name: string | VariableInfo, rootInfo: string | VariableInfo, getMembers: () => string[], getMembersOptionals: () => boolean[], getMemberRangeStarts : () => number [] } } GetInfoResult */
94
+ /** @typedef {{ name: string | VariableInfo, rootInfo: string | VariableInfo, getMembers: () => string[], getMembersOptionals: () => boolean[], getMemberRanges : () => Range [] } } GetInfoResult */
95
95
96
96
const EMPTY_ARRAY = [ ] ;
97
97
const ALLOWED_MEMBER_TYPES_CALL_EXPRESSION = 0b01 ;
@@ -350,14 +350,14 @@ class JavascriptParser extends Parser {
350
350
/** @type {HookMap<SyncBailHook<[BaseCallExpression], boolean | void>> } */
351
351
call : new HookMap ( ( ) => new SyncBailHook ( [ "expression" ] ) ) ,
352
352
/** Something like "a.b()" */
353
- /** @type {HookMap<SyncBailHook<[CallExpression, string[], boolean[], number []], boolean | void>> } */
353
+ /** @type {HookMap<SyncBailHook<[CallExpression, string[], boolean[], Range []], boolean | void>> } */
354
354
callMemberChain : new HookMap (
355
355
( ) =>
356
356
new SyncBailHook ( [
357
357
"expression" ,
358
358
"members" ,
359
359
"membersOptionals" ,
360
- "memberRangeStarts "
360
+ "memberRanges "
361
361
] )
362
362
) ,
363
363
/** Something like "a.b().c.d" */
@@ -390,14 +390,14 @@ class JavascriptParser extends Parser {
390
390
binaryExpression : new SyncBailHook ( [ "binaryExpression" ] ) ,
391
391
/** @type {HookMap<SyncBailHook<[Expression], boolean | void>> } */
392
392
expression : new HookMap ( ( ) => new SyncBailHook ( [ "expression" ] ) ) ,
393
- /** @type {HookMap<SyncBailHook<[Expression, string[], boolean[], number []], boolean | void>> } */
393
+ /** @type {HookMap<SyncBailHook<[Expression, string[], boolean[], Range []], boolean | void>> } */
394
394
expressionMemberChain : new HookMap (
395
395
( ) =>
396
396
new SyncBailHook ( [
397
397
"expression" ,
398
398
"members" ,
399
399
"membersOptionals" ,
400
- "memberRangeStarts "
400
+ "memberRanges "
401
401
] )
402
402
) ,
403
403
/** @type {HookMap<SyncBailHook<[Expression, string[]], boolean | void>> } */
@@ -1163,7 +1163,7 @@ class JavascriptParser extends Parser {
1163
1163
info . rootInfo ,
1164
1164
info . getMembers ,
1165
1165
info . getMembersOptionals ,
1166
- info . getMemberRangeStarts
1166
+ info . getMemberRanges
1167
1167
)
1168
1168
. setRange ( expr . range ) ;
1169
1169
}
@@ -1184,7 +1184,7 @@ class JavascriptParser extends Parser {
1184
1184
rootInfo : info ,
1185
1185
getMembers : ( ) => [ ] ,
1186
1186
getMembersOptionals : ( ) => [ ] ,
1187
- getMemberRangeStarts : ( ) => [ ]
1187
+ getMemberRanges : ( ) => [ ]
1188
1188
} ;
1189
1189
}
1190
1190
} ) ;
@@ -1199,7 +1199,7 @@ class JavascriptParser extends Parser {
1199
1199
rootInfo : info ,
1200
1200
getMembers : ( ) => [ ] ,
1201
1201
getMembersOptionals : ( ) => [ ] ,
1202
- getMemberRangeStarts : ( ) => [ ]
1202
+ getMemberRanges : ( ) => [ ]
1203
1203
} ;
1204
1204
}
1205
1205
} ) ;
@@ -3264,7 +3264,7 @@ class JavascriptParser extends Parser {
3264
3264
callee . getMembersOptionals
3265
3265
? callee . getMembersOptionals ( )
3266
3266
: callee . getMembers ( ) . map ( ( ) => false ) ,
3267
- callee . getMemberRangeStarts ? callee . getMemberRangeStarts ( ) : [ ]
3267
+ callee . getMemberRanges ? callee . getMemberRanges ( ) : [ ]
3268
3268
) ;
3269
3269
if ( result1 === true ) return ;
3270
3270
const result2 = this . callHooksForInfo (
@@ -3308,14 +3308,14 @@ class JavascriptParser extends Parser {
3308
3308
if ( result1 === true ) return ;
3309
3309
const members = exprInfo . getMembers ( ) ;
3310
3310
const membersOptionals = exprInfo . getMembersOptionals ( ) ;
3311
- const memberRangeStarts = exprInfo . getMemberRangeStarts ( ) ;
3311
+ const memberRanges = exprInfo . getMemberRanges ( ) ;
3312
3312
const result2 = this . callHooksForInfo (
3313
3313
this . hooks . expressionMemberChain ,
3314
3314
exprInfo . rootInfo ,
3315
3315
expression ,
3316
3316
members ,
3317
3317
membersOptionals ,
3318
- memberRangeStarts
3318
+ memberRanges
3319
3319
) ;
3320
3320
if ( result2 === true ) return ;
3321
3321
this . walkMemberExpressionWithExpressionName (
@@ -4271,23 +4271,23 @@ class JavascriptParser extends Parser {
4271
4271
4272
4272
/**
4273
4273
* @param {MemberExpression } expression a member expression
4274
- * @returns {{ members: string[], object: Expression | Super, membersOptionals: boolean[], memberRangeStarts: number [] } } member names (reverse order) and remaining object
4274
+ * @returns {{ members: string[], object: Expression | Super, membersOptionals: boolean[], memberRanges: Range [] } } member names (reverse order) and remaining object
4275
4275
*/
4276
4276
extractMemberExpressionChain ( expression ) {
4277
4277
/** @type {AnyNode } */
4278
4278
let expr = expression ;
4279
4279
const members = [ ] ;
4280
4280
const membersOptionals = [ ] ;
4281
- const memberRangeStarts = [ ] ;
4281
+ const memberRanges = [ ] ;
4282
4282
while ( expr . type === "MemberExpression" ) {
4283
4283
if ( expr . computed ) {
4284
4284
if ( expr . property . type !== "Literal" ) break ;
4285
- members . push ( `${ expr . property . value } ` ) ;
4286
- memberRangeStarts . push ( expr . object . range [ 1 ] ) ;
4285
+ members . push ( `${ expr . property . value } ` ) ; // the literal
4286
+ memberRanges . push ( expr . object . range ) ; // the range of the expression fragment before the literal
4287
4287
} else {
4288
4288
if ( expr . property . type !== "Identifier" ) break ;
4289
- members . push ( expr . property . name ) ;
4290
- memberRangeStarts . push ( expr . object . range [ 1 ] ) ;
4289
+ members . push ( expr . property . name ) ; // the identifier
4290
+ memberRanges . push ( expr . object . range ) ; // the range of the expression fragment before the identifier
4291
4291
}
4292
4292
membersOptionals . push ( expr . optional ) ;
4293
4293
expr = expr . object ;
@@ -4296,7 +4296,7 @@ class JavascriptParser extends Parser {
4296
4296
return {
4297
4297
members,
4298
4298
membersOptionals,
4299
- memberRangeStarts ,
4299
+ memberRanges ,
4300
4300
object : expr
4301
4301
} ;
4302
4302
}
@@ -4319,16 +4319,16 @@ class JavascriptParser extends Parser {
4319
4319
return { info, name } ;
4320
4320
}
4321
4321
4322
- /** @typedef {{ type: "call", call: CallExpression, calleeName: string, rootInfo: string | VariableInfo, getCalleeMembers: () => string[], name: string, getMembers: () => string[], getMembersOptionals: () => boolean[], getMemberRangeStarts : () => number []} } CallExpressionInfo */
4323
- /** @typedef {{ type: "expression", rootInfo: string | VariableInfo, name: string, getMembers: () => string[], getMembersOptionals: () => boolean[], getMemberRangeStarts : () => number []} } ExpressionExpressionInfo */
4322
+ /** @typedef {{ type: "call", call: CallExpression, calleeName: string, rootInfo: string | VariableInfo, getCalleeMembers: () => string[], name: string, getMembers: () => string[], getMembersOptionals: () => boolean[], getMemberRanges : () => Range []} } CallExpressionInfo */
4323
+ /** @typedef {{ type: "expression", rootInfo: string | VariableInfo, name: string, getMembers: () => string[], getMembersOptionals: () => boolean[], getMemberRanges : () => Range []} } ExpressionExpressionInfo */
4324
4324
4325
4325
/**
4326
4326
* @param {MemberExpression } expression a member expression
4327
4327
* @param {number } allowedTypes which types should be returned, presented in bit mask
4328
4328
* @returns {CallExpressionInfo | ExpressionExpressionInfo | undefined } expression info
4329
4329
*/
4330
4330
getMemberExpressionInfo ( expression , allowedTypes ) {
4331
- const { object, members, membersOptionals, memberRangeStarts } =
4331
+ const { object, members, membersOptionals, memberRanges } =
4332
4332
this . extractMemberExpressionChain ( expression ) ;
4333
4333
switch ( object . type ) {
4334
4334
case "CallExpression" : {
@@ -4355,7 +4355,7 @@ class JavascriptParser extends Parser {
4355
4355
name : objectAndMembersToName ( `${ calleeName } ()` , members ) ,
4356
4356
getMembers : memoize ( ( ) => members . reverse ( ) ) ,
4357
4357
getMembersOptionals : memoize ( ( ) => membersOptionals . reverse ( ) ) ,
4358
- getMemberRangeStarts : memoize ( ( ) => memberRangeStarts . reverse ( ) )
4358
+ getMemberRanges : memoize ( ( ) => memberRanges . reverse ( ) )
4359
4359
} ;
4360
4360
}
4361
4361
case "Identifier" :
@@ -4375,7 +4375,7 @@ class JavascriptParser extends Parser {
4375
4375
rootInfo,
4376
4376
getMembers : memoize ( ( ) => members . reverse ( ) ) ,
4377
4377
getMembersOptionals : memoize ( ( ) => membersOptionals . reverse ( ) ) ,
4378
- getMemberRangeStarts : memoize ( ( ) => memberRangeStarts . reverse ( ) )
4378
+ getMemberRanges : memoize ( ( ) => memberRanges . reverse ( ) )
4379
4379
} ;
4380
4380
}
4381
4381
}
0 commit comments