Skip to content

Commit c3cdb0b

Browse files
committed
test functions
1 parent 0e03ad5 commit c3cdb0b

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

src/Parser/VariadicMethodsVisitor.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66
use PhpParser\Node\Name;
77
use PhpParser\Node\Stmt\ClassMethod;
88
use PhpParser\NodeVisitorAbstract;
9-
use PHPStan\Node\AnonymousClassNode;
109
use PHPStan\Reflection\ParametersAcceptor;
1110
use PHPStan\TrinaryLogic;
1211
use function array_key_exists;
12+
use function array_pop;
13+
use function implode;
1314
use function in_array;
1415

1516
final class VariadicMethodsVisitor extends NodeVisitorAbstract
@@ -21,9 +22,7 @@ final class VariadicMethodsVisitor extends NodeVisitorAbstract
2122

2223
private ?string $inClassLike = null;
2324

24-
/**
25-
* @var array<string>
26-
*/
25+
/** @var array<string> */
2726
private array $classStack = [];
2827

2928
private ?string $inMethod = null;
@@ -60,7 +59,7 @@ public function enterNode(Node $node): ?Node
6059
|| $node instanceof Node\Stmt\ClassLike
6160
) {
6261
if (!$node->name instanceof Node\Identifier) {
63-
$className = 'class@anonymous';
62+
$className = 'class@anonymous:' . $node->getStartLine();
6463
} else {
6564
$className = $node->name->name;
6665
}

tests/PHPStan/Parser/ParserTest.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public function dataVariadicCallLikes(): iterable
2121
'VariadicFunctions\variadic_fn1' => TrinaryLogic::createYes(),
2222
'VariadicFunctions\nonvariadic' => TrinaryLogic::createNo(),
2323
'VariadicFunctions\maybe_variadic_fn1' => TrinaryLogic::createNo(),
24+
'VariadicFunctions\implicit_variadic_fn1' => TrinaryLogic::createYes(),
2425
],
2526
];
2627

@@ -38,12 +39,12 @@ public function dataVariadicCallLikes(): iterable
3839
'variadic_fnZ' => TrinaryLogic::createNo(), // variadicness later on detected via reflection
3940
'implicit_variadic_fnZ' => TrinaryLogic::createYes(),
4041
],
41-
'VariadicMethod\Z\class@anonymous' => [
42+
'VariadicMethod\Z\class@anonymous:20' => [
4243
'non_variadic_fn_subZ' => TrinaryLogic::createNo(),
4344
'variadic_fn_subZ' => TrinaryLogic::createNo(), // variadicness later on detected via reflection
4445
'implicit_variadic_subZ' => TrinaryLogic::createYes(),
4546
],
46-
'VariadicMethod\class@anonymous' => [
47+
'VariadicMethod\class@anonymous:42' => [
4748
'non_variadic_fn' => TrinaryLogic::createNo(),
4849
'variadic_fn' => TrinaryLogic::createNo(), // variadicness later on detected via reflection
4950
'implicit_variadic_fn' => TrinaryLogic::createYes(),
@@ -60,7 +61,7 @@ public function dataVariadicCallLikes(): iterable
6061
'variadic_fn1' => TrinaryLogic::createNo(), // variadicness later on detected via reflection
6162
'implicit_variadic_fn1' => TrinaryLogic::createYes(),
6263
],
63-
]
64+
],
6465
];
6566
}
6667

tests/PHPStan/Parser/data/variadic-functions.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,7 @@ function maybe_variadic_fn1(...$v)
2525
$fn2 = function ($x) use ($y) {
2626
return $x + $y;
2727
};
28+
29+
function implicit_variadic_fn1() {
30+
$args = func_get_args();
31+
}

0 commit comments

Comments
 (0)