Skip to content

Commit 4dfc8a7

Browse files
authored
feat: add support for eslint v9 (#478)
1 parent afbda82 commit 4dfc8a7

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

.github/workflows/ci.yml

+4
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ jobs:
4444
node: [12.22.0, 12, 14.17.0, 14, 16.0.0, 16, 18, 20]
4545
os: [ubuntu-latest]
4646
include:
47+
# ESLint v9
48+
- eslint: 9
49+
node: 20
50+
os: ubuntu-latest
4751
# On other platforms
4852
- os: windows-latest
4953
eslint: 8

rules/no-multiple-resolved.js

+28-3
Original file line numberDiff line numberDiff line change
@@ -139,12 +139,22 @@ class CodePathInfo {
139139
/** @type {Map<CodePathSegment, CodePathSegmentInfo>} */
140140
this.segmentInfos = new Map()
141141
this.resolvedCount = 0
142-
/** @type {CodePathSegment[]} */
143-
this.allSegments = []
142+
/** @type {Set<CodePathSegment>} */
143+
this.currentSegments = new Set()
144+
}
145+
146+
/** @param {CodePathSegment} segment */
147+
onSegmentEnter(segment) {
148+
this.currentSegments.add(segment)
149+
}
150+
151+
/** @param {CodePathSegment} segment */
152+
onSegmentExit(segment) {
153+
this.currentSegments.delete(segment)
144154
}
145155

146156
getCurrentSegmentInfos() {
147-
return this.path.currentSegments.map((segment) => {
157+
return [...this.currentSegments].map((segment) => {
148158
const info = this.segmentInfos.get(segment)
149159
if (info) {
150160
return info
@@ -434,6 +444,15 @@ module.exports = {
434444
) {
435445
lastThrowableExpression = node
436446
},
447+
/** @param {CodePathSegment} segment */
448+
onCodePathSegmentStart(segment) {
449+
codePathInfoStack[0].onSegmentEnter(segment)
450+
},
451+
/** @param {CodePathSegment} segment */
452+
/* istanbul ignore next */ // It is not called in ESLint v7.
453+
onUnreachableCodePathSegmentStart(segment) {
454+
codePathInfoStack[0].onSegmentEnter(segment)
455+
},
437456
/**
438457
* @param {CodePathSegment} segment
439458
* @param {Node} node
@@ -453,6 +472,12 @@ module.exports = {
453472
promiseCodePathContext.addResolvedTryBlockCodePathSegment(segment)
454473
}
455474
}
475+
codePathInfoStack[0].onSegmentExit(segment)
476+
},
477+
/** @param {CodePathSegment} segment */
478+
/* istanbul ignore next */ // It is not called in ESLint v7.
479+
onUnreachableCodePathSegmentEnd(segment) {
480+
codePathInfoStack[0].onSegmentExit(segment)
456481
},
457482
/** @type {Identifier} */
458483
'CallExpression > Identifier.callee'(node) {

0 commit comments

Comments
 (0)