Skip to content

Commit f629d5d

Browse files
committed
fix: use strict mixed in StrictTypeSafetyChecker
1 parent ae6af2e commit f629d5d

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

phpstan.neon

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ parameters:
6868
# phpstan class constant value
6969
- identifier: phpstanApi.classConstant
7070

71+
# phpstan class construction
72+
- identifier: phpstanApi.constructor
73+
7174
# phpstan instanceof
7275
- identifier: phpstanApi.instanceofAssumption
7376

rules/TypeDeclaration/NodeAnalyzer/StrictTypeSafetyChecker.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use PHPStan\Reflection\Php\PhpPropertyReflection;
1919
use PHPStan\Type\MixedType;
2020
use PHPStan\Type\NeverType;
21+
use PHPStan\Type\StrictMixedType;
2122
use PHPStan\Type\Type;
2223
use Rector\NodeTypeResolver\NodeTypeResolver;
2324
use Rector\NodeTypeResolver\PHPStan\ParametersAcceptorSelectorVariantsWrapper;
@@ -197,6 +198,11 @@ private function isPropertyAssignSafe(Assign $assign): bool
197198

198199
private function isTypeSafeForStrictMode(Type $declaredType, Type $valueType): bool
199200
{
201+
// need to be strict with mixed to avoid false positives
202+
if ($valueType instanceof MixedType) {
203+
$valueType = new StrictMixedType();
204+
}
205+
200206
return $declaredType->accepts($valueType, strictTypes: true)
201207
->yes();
202208
}

0 commit comments

Comments
 (0)