diff options
Diffstat (limited to 'tools/eslint/lib/code-path-analysis/fork-context.js')
-rw-r--r-- | tools/eslint/lib/code-path-analysis/fork-context.js | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/tools/eslint/lib/code-path-analysis/fork-context.js b/tools/eslint/lib/code-path-analysis/fork-context.js index 8716ddd6ff..af82e68e0c 100644 --- a/tools/eslint/lib/code-path-analysis/fork-context.js +++ b/tools/eslint/lib/code-path-analysis/fork-context.js @@ -47,6 +47,7 @@ function isReachable(segment) { */ function makeSegments(context, begin, end, create) { var list = context.segmentsList; + if (begin < 0) { begin = list.length + begin; } @@ -55,6 +56,7 @@ function makeSegments(context, begin, end, create) { } var segments = []; + for (var i = 0; i < context.count; ++i) { var allPrevSegments = []; @@ -81,6 +83,7 @@ function makeSegments(context, begin, end, create) { function mergeExtraSegments(context, segments) { while (segments.length > context.count) { var merged = []; + for (var i = 0, length = segments.length / 2 | 0; i < length; ++i) { merged.push(CodePathSegment.newNext( context.idGenerator.next(), @@ -120,6 +123,7 @@ ForkContext.prototype = { */ get head() { var list = this.segmentsList; + return list.length === 0 ? [] : list[list.length - 1]; }, @@ -137,6 +141,7 @@ ForkContext.prototype = { */ get reachable() { var segments = this.head; + return segments.length > 0 && segments.some(isReachable); }, @@ -212,6 +217,7 @@ ForkContext.prototype = { assert(context.count === this.count); var source = context.segmentsList; + for (var i = 0; i < source.length; ++i) { this.segmentsList.push(source[i]); } |