@@ -24,6 +24,9 @@ export class JestFileCoverage extends vscode.FileCoverage {
24
24
return this . iCoverage ;
25
25
}
26
26
27
+ private isInvalidRange = ( range : Range ) : boolean =>
28
+ range . start . line === undefined || range . end . line === undefined ;
29
+
27
30
public loadDetails ( ) : vscode . FileCoverageDetail [ ] {
28
31
if ( this . details ) {
29
32
return this . details ;
@@ -40,9 +43,14 @@ export class JestFileCoverage extends vscode.FileCoverage {
40
43
return statement . location . end . character ;
41
44
}
42
45
} ;
46
+
43
47
// transform istanbul line number from 1-based to vscode 0-based
44
48
// and replace null end-column with the end of line, if available
45
- const transformRange = ( range : Range ) : vscode . Range => {
49
+ const transformRange = ( range : Range ) : vscode . Range | undefined => {
50
+ if ( this . isInvalidRange ( range ) ) {
51
+ return ;
52
+ }
53
+
46
54
const endColumn = range . end . column ?? getEOL ( range . end . line ) ?? range . start . column ;
47
55
return new vscode . Range (
48
56
range . start . line - 1 ,
@@ -57,6 +65,9 @@ export class JestFileCoverage extends vscode.FileCoverage {
57
65
Object . entries ( transformed . statementMap ) . forEach ( ( [ statementId , range ] ) => {
58
66
const executionCount = transformed . s [ statementId ] ;
59
67
const vRange = transformRange ( range ) ;
68
+ if ( ! vRange ) {
69
+ return ;
70
+ }
60
71
const statementCoverage = new vscode . StatementCoverage ( executionCount , vRange ) ;
61
72
details . push ( statementCoverage ) ;
62
73
statementByLine [ vRange . start . line ] = statementCoverage ;
@@ -67,6 +78,9 @@ export class JestFileCoverage extends vscode.FileCoverage {
67
78
branch . locations . forEach ( ( location , index ) => {
68
79
const branchExecutionCount = transformed . b [ branchId ] [ index ] ;
69
80
const vRange = transformRange ( location ) ;
81
+ if ( ! vRange ) {
82
+ return ;
83
+ }
70
84
const branchCoverage = new vscode . BranchCoverage (
71
85
branchExecutionCount > 0 ,
72
86
vRange ,
@@ -83,6 +97,9 @@ export class JestFileCoverage extends vscode.FileCoverage {
83
97
Object . entries ( transformed . fnMap ) . forEach ( ( [ functionId , func ] ) => {
84
98
const executionCount = transformed . f [ functionId ] ;
85
99
const vRange = transformRange ( func . loc ) ;
100
+ if ( ! vRange ) {
101
+ return ;
102
+ }
86
103
details . push ( new vscode . DeclarationCoverage ( func . name , executionCount , vRange ) ) ;
87
104
} ) ;
88
105
} catch ( e ) {
0 commit comments