* Walk member expression. * @param {MemberExpression} expression member expression
(expression)
| 4268 | * @param {MemberExpression} expression member expression |
| 4269 | */ |
| 4270 | walkMemberExpression(expression) { |
| 4271 | const exprInfo = this.getMemberExpressionInfo( |
| 4272 | expression, |
| 4273 | ALLOWED_MEMBER_TYPES_ALL |
| 4274 | ); |
| 4275 | if (exprInfo) { |
| 4276 | switch (exprInfo.type) { |
| 4277 | case "expression": { |
| 4278 | const result1 = this.callHooksForInfo( |
| 4279 | this.hooks.expression, |
| 4280 | exprInfo.name, |
| 4281 | expression |
| 4282 | ); |
| 4283 | if (result1 === true) return; |
| 4284 | const members = exprInfo.getMembers(); |
| 4285 | const membersOptionals = exprInfo.getMembersOptionals(); |
| 4286 | const memberRanges = exprInfo.getMemberRanges(); |
| 4287 | const result2 = this.callHooksForInfo( |
| 4288 | this.hooks.expressionMemberChain, |
| 4289 | exprInfo.rootInfo, |
| 4290 | expression, |
| 4291 | members, |
| 4292 | membersOptionals, |
| 4293 | memberRanges |
| 4294 | ); |
| 4295 | if (result2 === true) return; |
| 4296 | this.walkMemberExpressionWithExpressionName( |
| 4297 | expression, |
| 4298 | exprInfo.name, |
| 4299 | exprInfo.rootInfo, |
| 4300 | [...members], |
| 4301 | () => |
| 4302 | this.callHooksForInfo( |
| 4303 | this.hooks.unhandledExpressionMemberChain, |
| 4304 | exprInfo.rootInfo, |
| 4305 | expression, |
| 4306 | members |
| 4307 | ) |
| 4308 | ); |
| 4309 | return; |
| 4310 | } |
| 4311 | case "call": { |
| 4312 | const result = this.callHooksForInfo( |
| 4313 | this.hooks.memberChainOfCallMemberChain, |
| 4314 | exprInfo.rootInfo, |
| 4315 | expression, |
| 4316 | exprInfo.getCalleeMembers(), |
| 4317 | exprInfo.call, |
| 4318 | exprInfo.getMembers(), |
| 4319 | exprInfo.getMemberRanges() |
| 4320 | ); |
| 4321 | if (result === true) return; |
| 4322 | // Fast skip over the member chain as we already called memberChainOfCallMemberChain |
| 4323 | // and call computed property are literals anyway |
| 4324 | this.walkExpression(exprInfo.call); |
| 4325 | return; |
| 4326 | } |
| 4327 | } |
no test coverage detected