@@ -139,12 +139,22 @@ class CodePathInfo {
139
139
/** @type {Map<CodePathSegment, CodePathSegmentInfo> } */
140
140
this . segmentInfos = new Map ( )
141
141
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 )
144
154
}
145
155
146
156
getCurrentSegmentInfos ( ) {
147
- return this . path . currentSegments . map ( ( segment ) => {
157
+ return [ ... this . currentSegments ] . map ( ( segment ) => {
148
158
const info = this . segmentInfos . get ( segment )
149
159
if ( info ) {
150
160
return info
@@ -434,6 +444,15 @@ module.exports = {
434
444
) {
435
445
lastThrowableExpression = node
436
446
} ,
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
+ } ,
437
456
/**
438
457
* @param {CodePathSegment } segment
439
458
* @param {Node } node
@@ -453,6 +472,12 @@ module.exports = {
453
472
promiseCodePathContext . addResolvedTryBlockCodePathSegment ( segment )
454
473
}
455
474
}
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 )
456
481
} ,
457
482
/** @type {Identifier } */
458
483
'CallExpression > Identifier.callee' ( node ) {
0 commit comments