diff --git a/src/StaticAnalysis/ExecutableLinesFindingVisitor.php b/src/StaticAnalysis/ExecutableLinesFindingVisitor.php index d32ca4675..84e7bde7f 100644 --- a/src/StaticAnalysis/ExecutableLinesFindingVisitor.php +++ b/src/StaticAnalysis/ExecutableLinesFindingVisitor.php @@ -129,13 +129,17 @@ public function enterNode(Node $node): void $node instanceof Node\Expr\Closure || $node instanceof Node\Stmt\Trait_) { if ($node instanceof Node\Stmt\Function_ || $node instanceof Node\Stmt\ClassMethod) { + $unsets = []; + foreach ($node->getParams() as $param) { foreach (range($param->getStartLine(), $param->getEndLine()) as $line) { - $this->unsets[$line] = true; + $unsets[$line] = true; } } - unset($this->unsets[$node->getEndLine()]); + unset($unsets[$node->getEndLine()]); + + $this->unsets += $unsets; } $isConcreteClassLike = $node instanceof Node\Stmt\Enum_ || $node instanceof Node\Stmt\Class_ || $node instanceof Node\Stmt\Trait_; diff --git a/tests/_files/source_for_branched_exec_lines.php b/tests/_files/source_for_branched_exec_lines.php index b55a54a00..f7d8106f9 100644 --- a/tests/_files/source_for_branched_exec_lines.php +++ b/tests/_files/source_for_branched_exec_lines.php @@ -572,12 +572,17 @@ interface MyInterface 'string', ]; public function myMethod(); + public function multiline( + \stdClass $var + ): \stdClass; + public function multilineVoid( + ): void; } trait MyTrait { public function myTrait() - {} // +3 + {} // +5 } abstract class MyAbstractClass implements MyInterface