mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-07 11:50:51 +00:00
[Downgrade PHP 7.0] Remove param and return types (#4819)
Co-authored-by: rector-bot <tomas@getrector.org>
This commit is contained in:
parent
a3add7d409
commit
7c991a9898
|
@ -86,6 +86,7 @@
|
|||
"Rector\\DoctrineCodeQuality\\": "rules/doctrine-code-quality/src",
|
||||
"Rector\\DoctrineGedmoToKnplabs\\": "rules/doctrine-gedmo-to-knplabs/src",
|
||||
"Rector\\Doctrine\\": "rules/doctrine/src",
|
||||
"Rector\\DowngradePhp70\\": "rules/downgrade-php70/src",
|
||||
"Rector\\DowngradePhp71\\": "rules/downgrade-php71/src",
|
||||
"Rector\\DowngradePhp72\\": "rules/downgrade-php72/src",
|
||||
"Rector\\DowngradePhp73\\": "rules/downgrade-php73/src",
|
||||
|
@ -209,6 +210,7 @@
|
|||
"Rector\\DoctrineCodeQuality\\Tests\\": "rules/doctrine-code-quality/tests",
|
||||
"Rector\\DoctrineGedmoToKnplabs\\Tests\\": "rules/doctrine-gedmo-to-knplabs/tests",
|
||||
"Rector\\Doctrine\\Tests\\": "rules/doctrine/tests",
|
||||
"Rector\\DowngradePhp70\\Tests\\": "rules/downgrade-php70/tests",
|
||||
"Rector\\DowngradePhp71\\Tests\\": "rules/downgrade-php71/tests",
|
||||
"Rector\\DowngradePhp72\\Tests\\": "rules/downgrade-php72/tests",
|
||||
"Rector\\DowngradePhp73\\Tests\\": "rules/downgrade-php73/tests",
|
||||
|
|
18
config/set/downgrade-php70.php
Normal file
18
config/set/downgrade-php70.php
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Rector\Downgrade\Rector\LNumber\ChangePhpVersionInPlatformCheckRector;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\DowngradeTypeParamDeclarationRector;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\DowngradeTypeReturnDeclarationRector;
|
||||
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
|
||||
|
||||
return static function (ContainerConfigurator $containerConfigurator): void {
|
||||
$services = $containerConfigurator->services();
|
||||
$services->set(DowngradeTypeParamDeclarationRector::class);
|
||||
$services->set(DowngradeTypeReturnDeclarationRector::class);
|
||||
$services->set(ChangePhpVersionInPlatformCheckRector::class)
|
||||
->call('configure', [[
|
||||
ChangePhpVersionInPlatformCheckRector::TARGET_PHP_VERSION => 70000,
|
||||
]]);
|
||||
};
|
|
@ -6,6 +6,11 @@ namespace Rector\Set\ValueObject;
|
|||
|
||||
final class DowngradeSetList
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public const PHP_70 = __DIR__ . '/../../../../config/set/downgrade-php70.php';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Rector\DowngradePhp71\Contract\Rector;
|
||||
namespace Rector\DowngradePhp70\Contract\Rector;
|
||||
|
||||
use PhpParser\Node\FunctionLike;
|
||||
use PhpParser\Node\Param;
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Rector\DowngradePhp71\Contract\Rector;
|
||||
namespace Rector\DowngradePhp70\Contract\Rector;
|
||||
|
||||
use PhpParser\Node\FunctionLike;
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Rector\DowngradePhp71\Rector\FunctionLike;
|
||||
namespace Rector\DowngradePhp70\Rector\FunctionLike;
|
||||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\FunctionLike;
|
||||
|
@ -15,7 +15,7 @@ use PHPStan\Type\ObjectType;
|
|||
use PHPStan\Type\UnionType;
|
||||
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
|
||||
use Rector\Core\Rector\AbstractRector;
|
||||
use Rector\DowngradePhp71\Contract\Rector\DowngradeParamDeclarationRectorInterface;
|
||||
use Rector\DowngradePhp70\Contract\Rector\DowngradeParamDeclarationRectorInterface;
|
||||
use Rector\NodeTypeResolver\Node\AttributeKey;
|
||||
use Traversable;
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Rector\DowngradePhp71\Rector\FunctionLike;
|
||||
namespace Rector\DowngradePhp70\Rector\FunctionLike;
|
||||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\FunctionLike;
|
||||
|
@ -14,7 +14,7 @@ use PHPStan\Type\ObjectType;
|
|||
use PHPStan\Type\UnionType;
|
||||
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
|
||||
use Rector\Core\Rector\AbstractRector;
|
||||
use Rector\DowngradePhp71\Contract\Rector\DowngradeReturnDeclarationRectorInterface;
|
||||
use Rector\DowngradePhp70\Contract\Rector\DowngradeReturnDeclarationRectorInterface;
|
||||
use Rector\NodeTypeResolver\Node\AttributeKey;
|
||||
use Traversable;
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Rector\DowngradePhp70\Rector\FunctionLike;
|
||||
|
||||
use PhpParser\Node\FunctionLike;
|
||||
use PhpParser\Node\Param;
|
||||
use PHPStan\Type\ArrayType;
|
||||
use PHPStan\Type\CallableType;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
|
||||
/**
|
||||
* @see \Rector\DowngradePhp70\Tests\Rector\FunctionLike\DowngradeTypeParamDeclarationRector\DowngradeTypeParamDeclarationRectorTest
|
||||
*/
|
||||
final class DowngradeTypeParamDeclarationRector extends AbstractDowngradeParamDeclarationRector
|
||||
{
|
||||
public function getRuleDefinition(): RuleDefinition
|
||||
{
|
||||
return new RuleDefinition(
|
||||
'Remove the type params, add @param tags instead',
|
||||
[
|
||||
new CodeSample(
|
||||
<<<'CODE_SAMPLE'
|
||||
class SomeClass
|
||||
{
|
||||
public function run(string $input)
|
||||
{
|
||||
// do something
|
||||
}
|
||||
}
|
||||
CODE_SAMPLE
|
||||
,
|
||||
<<<'CODE_SAMPLE'
|
||||
class SomeClass
|
||||
{
|
||||
/**
|
||||
* @param string $input
|
||||
*/
|
||||
public function run($input)
|
||||
{
|
||||
// do something
|
||||
}
|
||||
}
|
||||
CODE_SAMPLE
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Only accepted types before PHP 7.0 are `array` and `callable`
|
||||
*/
|
||||
public function shouldRemoveParamDeclaration(Param $param, FunctionLike $functionLike): bool
|
||||
{
|
||||
if ($param->type === null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$type = $this->staticTypeMapper->mapPhpParserNodePHPStanType($param->type);
|
||||
|
||||
return ! is_a($type, ArrayType::class, true) && ! is_a($type, CallableType::class, true);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Rector\DowngradePhp70\Rector\FunctionLike;
|
||||
|
||||
use PhpParser\Node\FunctionLike;
|
||||
use PhpParser\Node\Stmt\ClassMethod;
|
||||
use PhpParser\Node\Stmt\Function_;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\AbstractDowngradeReturnDeclarationRector;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
|
||||
/**
|
||||
* @see \Rector\DowngradePhp70\Tests\Rector\FunctionLike\DowngradeTypeReturnDeclarationRector\DowngradeTypeReturnDeclarationRectorTest
|
||||
*/
|
||||
final class DowngradeTypeReturnDeclarationRector extends AbstractDowngradeReturnDeclarationRector
|
||||
{
|
||||
public function getRuleDefinition(): RuleDefinition
|
||||
{
|
||||
return new RuleDefinition(
|
||||
'Remove returning types, add a @return tag instead',
|
||||
[
|
||||
new CodeSample(
|
||||
<<<'CODE_SAMPLE'
|
||||
class SomeClass
|
||||
{
|
||||
public function getResponse(): string
|
||||
{
|
||||
return 'Hello world';
|
||||
}
|
||||
}
|
||||
CODE_SAMPLE
|
||||
,
|
||||
<<<'CODE_SAMPLE'
|
||||
class SomeClass
|
||||
{
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getResponse()
|
||||
{
|
||||
return 'Hello world';
|
||||
}
|
||||
}
|
||||
CODE_SAMPLE
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ClassMethod|Function_ $functionLike
|
||||
*/
|
||||
public function shouldRemoveReturnDeclaration(FunctionLike $functionLike): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Rector\DowngradePhp70\Tests\Rector\FunctionLike\DowngradeTypeParamDeclarationRector;
|
||||
|
||||
use Iterator;
|
||||
use Rector\Core\ValueObject\PhpVersionFeature;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\DowngradeTypeParamDeclarationRector;
|
||||
use Rector\Testing\PHPUnit\AbstractRectorTestCase;
|
||||
use Symplify\SmartFileSystem\SmartFileInfo;
|
||||
|
||||
final class DowngradeTypeParamDeclarationRectorTest extends AbstractRectorTestCase
|
||||
{
|
||||
/**
|
||||
* @dataProvider provideData()
|
||||
*/
|
||||
public function test(SmartFileInfo $fileInfo): void
|
||||
{
|
||||
$this->doTestFileInfo($fileInfo);
|
||||
}
|
||||
|
||||
public function provideData(): Iterator
|
||||
{
|
||||
return $this->yieldFilesFromDirectory(__DIR__ . '/Fixture');
|
||||
}
|
||||
|
||||
protected function getRectorClass(): string
|
||||
{
|
||||
return DowngradeTypeParamDeclarationRector::class;
|
||||
}
|
||||
|
||||
protected function getPhpVersion(): int
|
||||
{
|
||||
return PhpVersionFeature::NULLABLE_TYPE - 1;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
|
||||
namespace Rector\DowngradePhp70\Tests\Rector\FunctionLike\DowngradeTypeParamDeclarationRector\Fixture;
|
||||
|
||||
class ArrayFunctionParam
|
||||
{
|
||||
public function run(array $value)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
|
||||
namespace Rector\DowngradePhp70\Tests\Rector\FunctionLike\DowngradeTypeParamDeclarationRector\Fixture;
|
||||
|
||||
class CallableFunctionParam
|
||||
{
|
||||
public function run(callable $value)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
namespace Rector\DowngradePhp70\Tests\Rector\FunctionLike\DowngradeTypeParamDeclarationRector\Fixture;
|
||||
|
||||
class FunctionParam
|
||||
{
|
||||
public function run(string $value)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
-----
|
||||
<?php
|
||||
|
||||
namespace Rector\DowngradePhp70\Tests\Rector\FunctionLike\DowngradeTypeParamDeclarationRector\Fixture;
|
||||
|
||||
class FunctionParam
|
||||
{
|
||||
/**
|
||||
* @param string $value
|
||||
*/
|
||||
public function run($value)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Rector\DowngradePhp70\Tests\Rector\FunctionLike\DowngradeTypeReturnDeclarationRector;
|
||||
|
||||
use Iterator;
|
||||
use Rector\Core\ValueObject\PhpVersionFeature;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\DowngradeTypeReturnDeclarationRector;
|
||||
use Rector\Testing\PHPUnit\AbstractRectorTestCase;
|
||||
use Symplify\SmartFileSystem\SmartFileInfo;
|
||||
|
||||
final class DowngradeTypeReturnDeclarationRectorTest extends AbstractRectorTestCase
|
||||
{
|
||||
/**
|
||||
* @dataProvider provideData()
|
||||
*/
|
||||
public function test(SmartFileInfo $fileInfo): void
|
||||
{
|
||||
$this->doTestFileInfo($fileInfo);
|
||||
}
|
||||
|
||||
public function provideData(): Iterator
|
||||
{
|
||||
return $this->yieldFilesFromDirectory(__DIR__ . '/Fixture');
|
||||
}
|
||||
|
||||
protected function getRectorClass(): string
|
||||
{
|
||||
return DowngradeTypeReturnDeclarationRector::class;
|
||||
}
|
||||
|
||||
protected function getPhpVersion(): int
|
||||
{
|
||||
return PhpVersionFeature::NULLABLE_TYPE - 1;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
namespace Rector\DowngradePhp70\Tests\Rector\FunctionLike\DowngradeTypeReturnDeclarationRector\Fixture;
|
||||
|
||||
class ReturnArrayTypeOnClassMethod
|
||||
{
|
||||
public function run(): array
|
||||
{
|
||||
return [1, 2, 3];
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
-----
|
||||
<?php
|
||||
|
||||
namespace Rector\DowngradePhp70\Tests\Rector\FunctionLike\DowngradeTypeReturnDeclarationRector\Fixture;
|
||||
|
||||
class ReturnArrayTypeOnClassMethod
|
||||
{
|
||||
/**
|
||||
* @return mixed[]
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
return [1, 2, 3];
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
namespace Rector\DowngradePhp70\Tests\Rector\FunctionLike\DowngradeTypeReturnDeclarationRector\Fixture;
|
||||
|
||||
class ReturnTypeOnClassMethod
|
||||
{
|
||||
public function run(): string
|
||||
{
|
||||
return 'Hello world';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
-----
|
||||
<?php
|
||||
|
||||
namespace Rector\DowngradePhp70\Tests\Rector\FunctionLike\DowngradeTypeReturnDeclarationRector\Fixture;
|
||||
|
||||
class ReturnTypeOnClassMethod
|
||||
{
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
return 'Hello world';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
|
@ -7,6 +7,7 @@ namespace Rector\DowngradePhp71\Rector\FunctionLike;
|
|||
use PhpParser\Node\FunctionLike;
|
||||
use PhpParser\Node\Identifier;
|
||||
use PhpParser\Node\Param;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\AbstractDowngradeParamDeclarationRector;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ namespace Rector\DowngradePhp71\Rector\FunctionLike;
|
|||
use PhpParser\Node\FunctionLike;
|
||||
use PhpParser\Node\Stmt\ClassMethod;
|
||||
use PhpParser\Node\Stmt\Function_;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\AbstractDowngradeReturnDeclarationRector;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ namespace Rector\DowngradePhp71\Rector\FunctionLike;
|
|||
use PhpParser\Node\FunctionLike;
|
||||
use PhpParser\Node\NullableType;
|
||||
use PhpParser\Node\Param;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\AbstractDowngradeParamDeclarationRector;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ use PhpParser\Node\FunctionLike;
|
|||
use PhpParser\Node\NullableType;
|
||||
use PhpParser\Node\Stmt\ClassMethod;
|
||||
use PhpParser\Node\Stmt\Function_;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\AbstractDowngradeReturnDeclarationRector;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ namespace Rector\DowngradePhp72\Rector\FunctionLike;
|
|||
|
||||
use PhpParser\Node\FunctionLike;
|
||||
use PhpParser\Node\Param;
|
||||
use Rector\DowngradePhp71\Rector\FunctionLike\AbstractDowngradeParamDeclarationRector;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\AbstractDowngradeParamDeclarationRector;
|
||||
use Rector\DowngradePhp72\Contract\Rector\DowngradeTypeRectorInterface;
|
||||
|
||||
abstract class AbstractDowngradeParamTypeDeclarationRector extends AbstractDowngradeParamDeclarationRector implements DowngradeTypeRectorInterface
|
||||
|
|
|
@ -7,7 +7,7 @@ namespace Rector\DowngradePhp72\Rector\FunctionLike;
|
|||
use PhpParser\Node\FunctionLike;
|
||||
use PhpParser\Node\Stmt\ClassMethod;
|
||||
use PhpParser\Node\Stmt\Function_;
|
||||
use Rector\DowngradePhp71\Rector\FunctionLike\AbstractDowngradeReturnDeclarationRector;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\AbstractDowngradeReturnDeclarationRector;
|
||||
use Rector\DowngradePhp72\Contract\Rector\DowngradeTypeRectorInterface;
|
||||
|
||||
abstract class AbstractDowngradeReturnTypeDeclarationRector extends AbstractDowngradeReturnDeclarationRector implements DowngradeTypeRectorInterface
|
||||
|
|
|
@ -11,7 +11,7 @@ use PhpParser\Node\Param;
|
|||
use PhpParser\Node\UnionType;
|
||||
use PHPStan\Analyser\Scope;
|
||||
use PHPStan\Reflection\ClassReflection;
|
||||
use Rector\DowngradePhp71\Rector\FunctionLike\AbstractDowngradeParamDeclarationRector;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\AbstractDowngradeParamDeclarationRector;
|
||||
use Rector\NodeTypeResolver\Node\AttributeKey;
|
||||
use ReflectionMethod;
|
||||
use ReflectionNamedType;
|
||||
|
|
|
@ -7,7 +7,7 @@ namespace Rector\DowngradePhp80\Rector\FunctionLike;
|
|||
use PhpParser\Node\FunctionLike;
|
||||
use PhpParser\Node\Param;
|
||||
use PhpParser\Node\UnionType;
|
||||
use Rector\DowngradePhp71\Rector\FunctionLike\AbstractDowngradeParamDeclarationRector;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\AbstractDowngradeParamDeclarationRector;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ use PhpParser\Node\FunctionLike;
|
|||
use PhpParser\Node\Stmt\ClassMethod;
|
||||
use PhpParser\Node\Stmt\Function_;
|
||||
use PhpParser\Node\UnionType;
|
||||
use Rector\DowngradePhp71\Rector\FunctionLike\AbstractDowngradeReturnDeclarationRector;
|
||||
use Rector\DowngradePhp70\Rector\FunctionLike\AbstractDowngradeReturnDeclarationRector;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user