diff --git a/rector.php b/rector.php index b24f7fe82f0..09fb70c3cf8 100644 --- a/rector.php +++ b/rector.php @@ -4,6 +4,7 @@ use Rector\CodingStyle\Rector\String_\UseClassKeywordForClassNameResolutionRector; use Rector\Config\RectorConfig; +use Rector\DeadCode\Rector\Cast\RecastingRemovalRector; use Rector\DeadCode\Rector\ConstFetch\RemovePhpVersionIdCheckRector; use Rector\Php55\Rector\String_\StringClassNameToClassConstantRector; @@ -52,4 +53,9 @@ __DIR__ . '/src/Configuration/RectorConfigBuilder.php', __DIR__ . '/src/Console/Notifier.php', ], + + // on php 7.x, substr() result can return false, so force (string) is needed + RecastingRemovalRector::class => [ + __DIR__ . '/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php', + ], ]); diff --git a/rules-tests/DeadCode/Rector/Cast/RecastingRemovalRector/Fixture/skip_substr.php.inc b/rules-tests/DeadCode/Rector/Cast/RecastingRemovalRector/Fixture/skip_substr.php.inc deleted file mode 100644 index 07f63228bfb..00000000000 --- a/rules-tests/DeadCode/Rector/Cast/RecastingRemovalRector/Fixture/skip_substr.php.inc +++ /dev/null @@ -1,17 +0,0 @@ - diff --git a/rules-tests/DeadCode/Rector/Cast/RecastingRemovalRector/Fixture/with_substr.php.inc b/rules-tests/DeadCode/Rector/Cast/RecastingRemovalRector/Fixture/with_substr.php.inc new file mode 100644 index 00000000000..4e28363cc08 --- /dev/null +++ b/rules-tests/DeadCode/Rector/Cast/RecastingRemovalRector/Fixture/with_substr.php.inc @@ -0,0 +1,29 @@ + +----- + \ No newline at end of file diff --git a/rules/DeadCode/Rector/Cast/RecastingRemovalRector.php b/rules/DeadCode/Rector/Cast/RecastingRemovalRector.php index fa2f3ce3fbd..616459d996a 100644 --- a/rules/DeadCode/Rector/Cast/RecastingRemovalRector.php +++ b/rules/DeadCode/Rector/Cast/RecastingRemovalRector.php @@ -13,14 +13,12 @@ use PhpParser\Node\Expr\Cast\Int_; use PhpParser\Node\Expr\Cast\Object_; use PhpParser\Node\Expr\Cast\String_; -use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Expr\MethodCall; use PhpParser\Node\Expr\StaticCall; use PHPStan\Reflection\Php\PhpPropertyReflection; use PHPStan\Type\ArrayType; use PHPStan\Type\BooleanType; use PHPStan\Type\Constant\ConstantArrayType; -use PHPStan\Type\Constant\ConstantBooleanType; use PHPStan\Type\FloatType; use PHPStan\Type\IntegerType; use PHPStan\Type\MixedType; @@ -105,13 +103,6 @@ public function refactor(Node $node): ?Node return null; } - // substr can return false on php 7.x - if ($node->expr instanceof FuncCall - && $this->isName($node->expr, 'substr') - && ! $node->expr->isFirstClassCallable()) { - $nodeType = new UnionType([new StringType(), new ConstantBooleanType(false)]); - } - if ($nodeType instanceof ConstantArrayType && $nodeClass === Array_::class) { if ($this->shouldSkip($node->expr)) { return null;