Skip to content

Commit b8516ed

Browse files
Fix dynamic return type extension for wp_die() (#204)
* Add missing tests for wp_die() * Fix wp_die() extension * Bump min PHPStan --------- Co-authored-by: Viktor Szépe <viktor@szepe.net>
1 parent 78db560 commit b8516ed

File tree

3 files changed

+9
-7
lines changed

3 files changed

+9
-7
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"require": {
1414
"php": "^7.2 || ^8.0",
1515
"php-stubs/wordpress-stubs": "^4.7 || ^5.0 || ^6.0",
16-
"phpstan/phpstan": "^1.10.0",
16+
"phpstan/phpstan": "^1.10.30",
1717
"symfony/polyfill-php73": "^1.12.0"
1818
},
1919
"require-dev": {

src/WpDieDynamicFunctionReturnTypeExtension.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
use PHPStan\Type\Constant\ConstantStringType;
1515
use PHPStan\Type\Type;
1616
use PHPStan\Type\VoidType;
17-
use PHPStan\Type\NeverType;
17+
use PHPStan\Type\NonAcceptingNeverType;
1818

1919
class WpDieDynamicFunctionReturnTypeExtension implements \PHPStan\Type\DynamicFunctionReturnTypeExtension
2020
{
@@ -30,7 +30,7 @@ public function getTypeFromFunctionCall(FunctionReflection $functionReflection,
3030

3131
// Called without $args parameter
3232
if (count($args) < 3) {
33-
return new NeverType();
33+
return new NonAcceptingNeverType();
3434
}
3535

3636
$argType = $scope->getType($args[2]->value);
@@ -42,12 +42,12 @@ public function getTypeFromFunctionCall(FunctionReflection $functionReflection,
4242

4343
// Return never if the key 'exit' is not set.
4444
if (! $argType->hasOffsetValueType(new ConstantStringType('exit'))->yes()) {
45-
return new NeverType();
45+
return new NonAcceptingNeverType();
4646
}
4747

4848
// Note WP's wp_die handlers do lazy comparison
4949
return $argType->getOffsetValueType(new ConstantStringType('exit'))->toBoolean()->isTrue()->yes()
50-
? new NeverType()
50+
? new NonAcceptingNeverType()
5151
: new VoidType();
5252
}
5353
}

tests/data/wp_die.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
/** @var array $array */
1010
$array = null;
1111

12-
assertType('*NEVER*', wp_die('', ''));
13-
assertType('*NEVER*', wp_die('', '', ['exit' => true]));
12+
assertType('never', wp_die());
13+
assertType('never', wp_die(''));
14+
assertType('never', wp_die('', ''));
15+
assertType('never', wp_die('', '', ['exit' => true]));
1416
assertType('void', wp_die('', '', ['exit' => false]));
1517
assertType('void', wp_die('', '', $array));

0 commit comments

Comments
 (0)