1313use function count ;
1414use function range ;
1515use SebastianBergmann \CodeCoverage \CrapIndex ;
16- use SebastianBergmann \LinesOfCode \LinesOfCode ;
1716
1817/**
1918 * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
@@ -44,7 +43,10 @@ final class File extends AbstractNode
4443
4544 private array $ functions = [];
4645
47- private LinesOfCode $ linesOfCode ;
46+ /**
47+ * @psalm-return array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int}
48+ */
49+ private array $ linesOfCode ;
4850
4951 private ?int $ numClasses = null ;
5052
@@ -62,7 +64,10 @@ final class File extends AbstractNode
6264
6365 private array $ codeUnitsByLine = [];
6466
65- public function __construct (string $ name , AbstractNode $ parent , array $ lineCoverageData , array $ functionCoverageData , array $ testData , array $ classes , array $ traits , array $ functions , LinesOfCode $ linesOfCode )
67+ /**
68+ * @psalm-param array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int} $linesOfCode
69+ */
70+ public function __construct (string $ name , AbstractNode $ parent , array $ lineCoverageData , array $ functionCoverageData , array $ testData , array $ classes , array $ traits , array $ functions , array $ linesOfCode )
6671 {
6772 parent ::__construct ($ name , $ parent );
6873
@@ -109,7 +114,10 @@ public function functions(): array
109114 return $ this ->functions ;
110115 }
111116
112- public function linesOfCode (): LinesOfCode
117+ /**
118+ * @psalm-return array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int}
119+ */
120+ public function linesOfCode (): array
113121 {
114122 return $ this ->linesOfCode ;
115123 }
@@ -267,15 +275,15 @@ public function numberOfTestedFunctions(): int
267275
268276 private function calculateStatistics (array $ classes , array $ traits , array $ functions ): void
269277 {
270- foreach (range (1 , $ this ->linesOfCode -> linesOfCode () ) as $ lineNumber ) {
278+ foreach (range (1 , $ this ->linesOfCode [ ' linesOfCode ' ] ) as $ lineNumber ) {
271279 $ this ->codeUnitsByLine [$ lineNumber ] = [];
272280 }
273281
274282 $ this ->processClasses ($ classes );
275283 $ this ->processTraits ($ traits );
276284 $ this ->processFunctions ($ functions );
277285
278- foreach (range (1 , $ this ->linesOfCode -> linesOfCode () ) as $ lineNumber ) {
286+ foreach (range (1 , $ this ->linesOfCode [ ' linesOfCode ' ] ) as $ lineNumber ) {
279287 if (isset ($ this ->lineCoverageData [$ lineNumber ])) {
280288 foreach ($ this ->codeUnitsByLine [$ lineNumber ] as &$ codeUnit ) {
281289 $ codeUnit ['executableLines ' ]++;
0 commit comments