|
6 | 6 | getAttributeValueQuoteAndRange, |
7 | 7 | getStringIfConstant |
8 | 8 | } from '../utils/ast-utils.js'; |
| 9 | +import { ASTSearchHelper } from '../utils/ast-search-helper.js'; |
9 | 10 |
|
10 | 11 | export default createRule('no-dynamic-slot-name', { |
11 | 12 | meta: { |
@@ -76,22 +77,23 @@ export default createRule('no-dynamic-slot-name', { |
76 | 77 | node: TSESTree.Expression, |
77 | 78 | already = new Set<TSESTree.Identifier>() |
78 | 79 | ): TSESTree.Expression { |
79 | | - if (node.type !== 'Identifier' || already.has(node)) { |
80 | | - return node; |
81 | | - } |
82 | | - already.add(node); |
83 | | - const variable = findVariable(context, node); |
84 | | - if (!variable || variable.defs.length !== 1) { |
85 | | - return node; |
86 | | - } |
87 | | - const def = variable.defs[0]; |
88 | | - if (def.type === 'Variable') { |
89 | | - if (def.parent.kind === 'const' && def.node.init) { |
90 | | - const init = def.node.init; |
91 | | - return findRootExpression(init, already); |
92 | | - } |
93 | | - } |
94 | | - return node; |
| 80 | + return ( |
| 81 | + ASTSearchHelper(node, { |
| 82 | + Identifier: (node) => { |
| 83 | + const variable = findVariable(context, node); |
| 84 | + if ( |
| 85 | + variable === null || |
| 86 | + variable.defs.length !== 1 || |
| 87 | + variable.defs[0].type !== 'Variable' || |
| 88 | + variable.defs[0].parent.kind !== 'const' || |
| 89 | + variable.defs[0].node.init === null |
| 90 | + ) { |
| 91 | + return node; |
| 92 | + } |
| 93 | + return findRootExpression(variable.defs[0].node.init, already); |
| 94 | + } |
| 95 | + }) ?? node |
| 96 | + ); |
95 | 97 | } |
96 | 98 | } |
97 | 99 | }); |
0 commit comments