Skip to content

Commit 022a1e1

Browse files
committed
accept callable as callback to preg_replace_callback
1 parent 7d10951 commit 022a1e1

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

src/Type/Php/PregReplaceCallbackClosureTypeExtension.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use PHPStan\Reflection\Native\NativeParameterReflection;
99
use PHPStan\Reflection\ParameterReflection;
1010
use PHPStan\TrinaryLogic;
11-
use PHPStan\Type\ClosureType;
11+
use PHPStan\Type\CallableType;
1212
use PHPStan\Type\FunctionParameterClosureTypeExtension;
1313
use PHPStan\Type\StringType;
1414
use PHPStan\Type\Type;
@@ -49,7 +49,7 @@ public function getTypeFromFunctionCall(FunctionReflection $functionReflection,
4949
return null;
5050
}
5151

52-
return new ClosureType(
52+
return new CallableType(
5353
[
5454
new NativeParameterReflection($parameter->getName(), $parameter->isOptional(), $matchesType, $parameter->passedByReference(), $parameter->isVariadic(), $parameter->getDefaultValue()),
5555
],

tests/PHPStan/Rules/Functions/CallToFunctionParametersRuleTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -671,19 +671,19 @@ public function testPregReplaceCallback(): void
671671
{
672672
$this->analyse([__DIR__ . '/data/preg_replace_callback.php'], [
673673
[
674-
'Parameter #2 $callback of function preg_replace_callback expects Closure(array{string}): string, Closure(string): string given.',
674+
'Parameter #2 $callback of function preg_replace_callback expects callable(array{string}): string, Closure(string): string given.',
675675
6,
676676
],
677677
[
678-
'Parameter #2 $callback of function preg_replace_callback expects Closure(array{string}): string, Closure(string): string given.',
678+
'Parameter #2 $callback of function preg_replace_callback expects callable(array{string}): string, Closure(string): string given.',
679679
13,
680680
],
681681
[
682-
'Parameter #2 $callback of function preg_replace_callback expects Closure(array{string}): string, Closure(array): void given.',
682+
'Parameter #2 $callback of function preg_replace_callback expects callable(array{string}): string, Closure(array): void given.',
683683
20,
684684
],
685685
[
686-
'Parameter #2 $callback of function preg_replace_callback expects Closure(array{string}): string, Closure(): void given.',
686+
'Parameter #2 $callback of function preg_replace_callback expects callable(array{string}): string, Closure(): void given.',
687687
25,
688688
],
689689
]);
@@ -1774,7 +1774,7 @@ public function testParameterClosureTypeExtension(): void
17741774

17751775
$this->analyse([__DIR__ . '/data/function-parameter-closure-type-extension.php'], [
17761776
[
1777-
'Parameter #2 $callback of function preg_replace_callback expects Closure(array{0: array{string, int<-1, max>}, 1?: array{\'\'|\'foo\', int<-1, max>}, 2?: array{\'\'|\'bar\', int<-1, max>}, 3?: array{\'baz\', int<-1, max>}}): string, Closure(array<int>): string given.',
1777+
'Parameter #2 $callback of function preg_replace_callback expects callable(array{0: array{string, int<-1, max>}, 1?: array{\'\'|\'foo\', int<-1, max>}, 2?: array{\'\'|\'bar\', int<-1, max>}, 3?: array{\'baz\', int<-1, max>}}): string, Closure(array<int>): string given.',
17781778
44,
17791779
],
17801780
]);

0 commit comments

Comments
 (0)