Skip to content

Commit 910bd13

Browse files
authored
fix: nodeTypeKey not being used in NodeEventGenerator (#19631)
Closes #19630
1 parent ca7a735 commit 910bd13

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

lib/linter/node-event-generator.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,11 +346,13 @@ class NodeEventGenerator {
346346
* @returns {void}
347347
*/
348348
applySelectors(node, isExit) {
349+
const nodeTypeKey = this.esqueryOptions?.nodeTypeKey || "type";
350+
349351
const selectorsByNodeType =
350352
(isExit
351353
? this.exitSelectorsByNodeType
352354
: this.enterSelectorsByNodeType
353-
).get(node.type) || [];
355+
).get(node[nodeTypeKey]) || [];
354356
const anyTypeSelectors = isExit
355357
? this.anyTypeExitSelectors
356358
: this.anyTypeEnterSelectors;

tests/lib/linter/node-event-generator.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,31 @@ describe("NodeEventGenerator", () => {
9090
assert(emitter.emit.calledWith("Foo > Bar", dummyNode));
9191
assert(emitter.emit.calledWith("Bar", dummyNode));
9292
});
93+
94+
it("should use `nodeTypeKey` if provided", () => {
95+
generator = new NodeEventGenerator(emitter, {
96+
...STANDARD_ESQUERY_OPTION,
97+
nodeTypeKey: "kind",
98+
});
99+
100+
const dummyNode = { kind: "Foo" };
101+
102+
generator.enterNode(dummyNode);
103+
104+
assert(emitter.emit.calledOnce);
105+
assert(emitter.emit.calledWith("Foo", dummyNode));
106+
});
107+
108+
it("should succeed without esqueryOptions", () => {
109+
generator = new NodeEventGenerator(emitter);
110+
111+
const dummyNode = { type: "Foo" };
112+
113+
generator.enterNode(dummyNode);
114+
115+
assert(emitter.emit.calledOnce);
116+
assert(emitter.emit.calledWith("Foo", dummyNode));
117+
});
93118
});
94119

95120
describe("traversing the entire AST", () => {

0 commit comments

Comments
 (0)