mirror of
https://github.com/rectorphp/rector.git
synced 2024-05-28 23:10:51 +00:00
[Downgrade] Drop ChangePhpVersionInPlatformCheckRector as not useful, paltform check false is good enough (#4939)
* [Downgrade] Drop ChangePhpVersionInPlatformCheckRector as not useful, paltform check false is good enough * fixup! [Downgrade] Drop ChangePhpVersionInPlatformCheckRector as not useful, paltform check false is good enough
This commit is contained in:
parent
34e6c6ffdf
commit
c5d258e0cc
|
@ -162,8 +162,7 @@
|
|||
"Rector\\Twig\\": "rules/twig/src",
|
||||
"Rector\\TypeDeclaration\\": "rules/type-declaration/src",
|
||||
"Rector\\VendorLocker\\": "packages/vendor-locker/src",
|
||||
"Rector\\Carbon\\": "rules/carbon/src",
|
||||
"Rector\\Downgrade\\": "rules/downgrade/src"
|
||||
"Rector\\Carbon\\": "rules/carbon/src"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
|
@ -289,8 +288,7 @@
|
|||
"Rector\\Utils\\PHPStanAttributeTypeSyncer\\": "utils/phpstan-attribute-type-syncer/src",
|
||||
"Rector\\Utils\\PHPStanStaticTypeMapperChecker\\": "utils/phpstan-static-type-mapper-checker/src",
|
||||
"Rector\\Utils\\ProjectValidator\\": "utils/project-validator/src",
|
||||
"Rector\\Carbon\\Tests\\": "rules/carbon/tests",
|
||||
"Rector\\Downgrade\\Tests\\": "rules/downgrade/tests"
|
||||
"Rector\\Carbon\\Tests\\": "rules/carbon/tests"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
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;
|
||||
|
@ -11,8 +10,4 @@ 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 => 50600,
|
||||
]]);
|
||||
};
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Rector\Downgrade\Rector\LNumber\ChangePhpVersionInPlatformCheckRector;
|
||||
use Rector\DowngradePhp71\Rector\Array_\SymmetricArrayDestructuringToListRector;
|
||||
use Rector\DowngradePhp71\Rector\ClassConst\DowngradeClassConstantVisibilityRector;
|
||||
use Rector\DowngradePhp71\Rector\FunctionLike\DowngradeNullableTypeParamDeclarationRector;
|
||||
|
@ -18,10 +17,6 @@ return static function (ContainerConfigurator $containerConfigurator): void {
|
|||
$services->set(DowngradeNullableTypeReturnDeclarationRector::class);
|
||||
$services->set(DowngradeVoidTypeReturnDeclarationRector::class);
|
||||
$services->set(DowngradeClassConstantVisibilityRector::class);
|
||||
$services->set(ChangePhpVersionInPlatformCheckRector::class)
|
||||
->call('configure', [[
|
||||
ChangePhpVersionInPlatformCheckRector::TARGET_PHP_VERSION => 70000,
|
||||
]]);
|
||||
$services->set(DowngradePipeToMultiCatchExceptionRector::class);
|
||||
$services->set(SymmetricArrayDestructuringToListRector::class);
|
||||
$services->set(DowngradeNegativeStringOffsetToStrlenRector::class);
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Rector\Downgrade\Rector\LNumber\ChangePhpVersionInPlatformCheckRector;
|
||||
use Rector\DowngradePhp72\Rector\ClassMethod\DowngradeParameterTypeWideningRector;
|
||||
use Rector\DowngradePhp72\Rector\FunctionLike\DowngradeParamObjectTypeDeclarationRector;
|
||||
use Rector\DowngradePhp72\Rector\FunctionLike\DowngradeReturnObjectTypeDeclarationRector;
|
||||
|
@ -12,9 +11,5 @@ return static function (ContainerConfigurator $containerConfigurator): void {
|
|||
$services = $containerConfigurator->services();
|
||||
$services->set(DowngradeParamObjectTypeDeclarationRector::class);
|
||||
$services->set(DowngradeReturnObjectTypeDeclarationRector::class);
|
||||
$services->set(ChangePhpVersionInPlatformCheckRector::class)
|
||||
->call('configure', [[
|
||||
ChangePhpVersionInPlatformCheckRector::TARGET_PHP_VERSION => 70100,
|
||||
]]);
|
||||
$services->set(DowngradeParameterTypeWideningRector::class);
|
||||
};
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Rector\Downgrade\Rector\LNumber\ChangePhpVersionInPlatformCheckRector;
|
||||
use Rector\DowngradePhp73\Rector\FuncCall\DowngradeTrailingCommasInFunctionCallsRector;
|
||||
use Rector\DowngradePhp73\Rector\FuncCall\SetCookieOptionsArrayToArgumentsRector;
|
||||
use Rector\DowngradePhp73\Rector\List_\DowngradeListReferenceAssignmentRector;
|
||||
|
@ -13,10 +12,6 @@ return static function (ContainerConfigurator $containerConfigurator): void {
|
|||
$services = $containerConfigurator->services();
|
||||
$services->set(DowngradeFlexibleHeredocSyntaxRector::class);
|
||||
$services->set(DowngradeListReferenceAssignmentRector::class);
|
||||
$services->set(ChangePhpVersionInPlatformCheckRector::class)
|
||||
->call('configure', [[
|
||||
ChangePhpVersionInPlatformCheckRector::TARGET_PHP_VERSION => 70200,
|
||||
]]);
|
||||
$services->set(DowngradeTrailingCommasInFunctionCallsRector::class);
|
||||
$services->set(SetCookieOptionsArrayToArgumentsRector::class);
|
||||
};
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Rector\Downgrade\Rector\LNumber\ChangePhpVersionInPlatformCheckRector;
|
||||
use Rector\DowngradePhp74\Rector\Array_\DowngradeArraySpreadRector;
|
||||
use Rector\DowngradePhp74\Rector\ArrowFunction\ArrowFunctionToAnonymousFunctionRector;
|
||||
use Rector\DowngradePhp74\Rector\ClassMethod\DowngradeContravariantArgumentTypeRector;
|
||||
|
@ -26,9 +25,5 @@ return static function (ContainerConfigurator $containerConfigurator): void {
|
|||
$services->set(DowngradeStripTagsCallWithArrayRector::class);
|
||||
$services->set(DowngradeArraySpreadRector::class);
|
||||
$services->set(DowngradeArrayMergeCallWithoutArgumentsRector::class);
|
||||
$services->set(ChangePhpVersionInPlatformCheckRector::class)
|
||||
->call('configure', [[
|
||||
ChangePhpVersionInPlatformCheckRector::TARGET_PHP_VERSION => 70300,
|
||||
]]);
|
||||
$services->set(DowngradeFreadFwriteFalsyToNegationRector::class);
|
||||
};
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Rector\Downgrade\Rector\LNumber\ChangePhpVersionInPlatformCheckRector;
|
||||
use Rector\DowngradePhp80\Rector\Catch_\DowngradeNonCapturingCatchesRector;
|
||||
use Rector\DowngradePhp80\Rector\Class_\DowngradePropertyPromotionToConstructorPropertyAssignRector;
|
||||
use Rector\DowngradePhp80\Rector\ClassConstFetch\DowngradeClassOnObjectToGetClassRector;
|
||||
|
@ -25,9 +24,6 @@ return static function (ContainerConfigurator $containerConfigurator): void {
|
|||
$services->set(DowngradeParamMixedTypeDeclarationRector::class);
|
||||
$services->set(DowngradeReturnMixedTypeDeclarationRector::class);
|
||||
$services->set(DowngradeReturnStaticTypeDeclarationRector::class);
|
||||
$services->set(ChangePhpVersionInPlatformCheckRector::class)->call('configure', [[
|
||||
ChangePhpVersionInPlatformCheckRector::TARGET_PHP_VERSION => 70400,
|
||||
]]);
|
||||
$services->set(DowngradePropertyPromotionToConstructorPropertyAssignRector::class);
|
||||
$services->set(DowngradeNonCapturingCatchesRector::class);
|
||||
$services->set(DowngradeMatchToSwitchRector::class);
|
||||
|
|
|
@ -1967,7 +1967,7 @@ return new Function_('some_function');
|
|||
↓
|
||||
|
||||
```php
|
||||
function some_function(): void
|
||||
function some_function()
|
||||
{
|
||||
}
|
||||
```
|
||||
|
@ -2428,7 +2428,7 @@ return new TryCatch($tryStmts, [$catch]);
|
|||
```php
|
||||
try {
|
||||
echo 'one';
|
||||
} catch (\CatchedType) {
|
||||
} catch (CatchedType) {
|
||||
echo 'two';
|
||||
}
|
||||
```
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,162 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Rector\Downgrade\Rector\LNumber;
|
||||
|
||||
use Nette\Utils\Strings;
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Expr\BinaryOp\Greater;
|
||||
use PhpParser\Node\Expr\BinaryOp\GreaterOrEqual;
|
||||
use PhpParser\Node\Scalar\LNumber;
|
||||
use PhpParser\Node\Scalar\String_;
|
||||
use Rector\Core\Contract\Rector\ConfigurableRectorInterface;
|
||||
use Rector\Core\Rector\AbstractRector;
|
||||
use Rector\Core\Util\PhpVersionFactory;
|
||||
use Rector\NodeTypeResolver\Node\AttributeKey;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
use Symplify\SmartFileSystem\SmartFileInfo;
|
||||
use Webmozart\Assert\Assert;
|
||||
|
||||
/**
|
||||
* @see https://php.watch/articles/composer-platform-check
|
||||
* @see https://getcomposer.org/doc/06-config.md#platform-check
|
||||
*
|
||||
* @see \Rector\Downgrade\Tests\Rector\LNumber\ChangePhpVersionInPlatformCheckRector\ChangePhpVersionInPlatformCheckRectorTest
|
||||
*/
|
||||
final class ChangePhpVersionInPlatformCheckRector extends AbstractRector implements ConfigurableRectorInterface
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public const TARGET_PHP_VERSION = 'target_php_version';
|
||||
|
||||
/**
|
||||
* @see https://regex101.com/r/oVWPoe/1/
|
||||
* @var string
|
||||
*/
|
||||
private const PHP_VERSION_REGEX = '#(?<sign>>=|>) (?<version>\d\.\d\.\d)#';
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $targetPhpVersion;
|
||||
|
||||
/**
|
||||
* @var PhpVersionFactory
|
||||
*/
|
||||
private $phpVersionFactory;
|
||||
|
||||
public function __construct(PhpVersionFactory $phpVersionFactory)
|
||||
{
|
||||
$this->phpVersionFactory = $phpVersionFactory;
|
||||
}
|
||||
|
||||
public function getRuleDefinition(): RuleDefinition
|
||||
{
|
||||
return new RuleDefinition('Change `vendor/composer/platform_check.php` to desired minimal PHP version', [
|
||||
new ConfiguredCodeSample(
|
||||
<<<'CODE_SAMPLE'
|
||||
$issues = [];
|
||||
|
||||
if (!(PHP_VERSION_ID >= 70300)) {
|
||||
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.3.0". You are running ' . PHP_VERSION . '.';
|
||||
}
|
||||
CODE_SAMPLE
|
||||
,
|
||||
<<<'CODE_SAMPLE'
|
||||
$issues = [];
|
||||
|
||||
if (!(PHP_VERSION_ID >= 70100)) {
|
||||
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.1.0". You are running ' . PHP_VERSION . '.';
|
||||
}
|
||||
CODE_SAMPLE
|
||||
,
|
||||
[
|
||||
self::TARGET_PHP_VERSION => 70100,
|
||||
]
|
||||
),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function getNodeTypes(): array
|
||||
{
|
||||
return [LNumber::class, String_::class];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param LNumber|String_ $node
|
||||
*/
|
||||
public function refactor(Node $node): ?Node
|
||||
{
|
||||
if (! $this->isPlatformCheckFile($node)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if ($node instanceof LNumber) {
|
||||
return $this->refactorLNumber($node);
|
||||
}
|
||||
|
||||
return $this->refactorString($node);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed[] $configuration
|
||||
*/
|
||||
public function configure(array $configuration): void
|
||||
{
|
||||
$targetPhpVersion = $configuration[self::TARGET_PHP_VERSION] ?? null;
|
||||
Assert::integer($targetPhpVersion);
|
||||
|
||||
$this->targetPhpVersion = $targetPhpVersion;
|
||||
}
|
||||
|
||||
private function isPlatformCheckFile(Node $node): bool
|
||||
{
|
||||
$fileInfo = $node->getAttribute(SmartFileInfo::class);
|
||||
if (! $fileInfo instanceof SmartFileInfo) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return Strings::endsWith($fileInfo->getFilename(), 'platform_check.php');
|
||||
}
|
||||
|
||||
private function refactorLNumber(LNumber $lNumber): ?LNumber
|
||||
{
|
||||
if (Strings::length((string) $lNumber->value) !== 5) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$parent = $lNumber->getAttribute(AttributeKey::PARENT_NODE);
|
||||
if (! $parent instanceof Greater && ! $parent instanceof GreaterOrEqual) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new LNumber($this->targetPhpVersion);
|
||||
}
|
||||
|
||||
private function refactorString(String_ $string): ?String_
|
||||
{
|
||||
$match = Strings::match($string->value, self::PHP_VERSION_REGEX);
|
||||
if ($match === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$stringPhpVersion = $this->phpVersionFactory->createStringVersion($this->targetPhpVersion);
|
||||
$changedContent = Strings::replace($string->value, self::PHP_VERSION_REGEX, function (array $match) use (
|
||||
$stringPhpVersion
|
||||
): string {
|
||||
return $match['sign'] . ' ' . $stringPhpVersion;
|
||||
});
|
||||
|
||||
if ($string->value === $changedContent) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new String_($changedContent);
|
||||
}
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Rector\Downgrade\Tests\Rector\LNumber\ChangePhpVersionInPlatformCheckRector;
|
||||
|
||||
use Iterator;
|
||||
use Rector\Downgrade\Rector\LNumber\ChangePhpVersionInPlatformCheckRector;
|
||||
use Rector\Testing\PHPUnit\AbstractRectorTestCase;
|
||||
use Symplify\SmartFileSystem\SmartFileInfo;
|
||||
|
||||
final class ChangePhpVersionInPlatformCheckRectorTest extends AbstractRectorTestCase
|
||||
{
|
||||
/**
|
||||
* @dataProvider provideData()
|
||||
*/
|
||||
public function test(SmartFileInfo $fileInfo): void
|
||||
{
|
||||
$this->doTestFileInfo($fileInfo);
|
||||
}
|
||||
|
||||
public function provideData(): Iterator
|
||||
{
|
||||
return $this->yieldFilesFromDirectory(__DIR__ . '/Fixture');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed[]
|
||||
*/
|
||||
protected function getRectorsWithConfiguration(): array
|
||||
{
|
||||
return [
|
||||
ChangePhpVersionInPlatformCheckRector::class => [
|
||||
ChangePhpVersionInPlatformCheckRector::TARGET_PHP_VERSION => 70100,
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Rector\Downgrade\Tests\Rector\LNumber\ChangePhpVersionInPlatformCheckRector\Fixture;
|
||||
|
||||
$issues = [];
|
||||
|
||||
if (!(PHP_VERSION_ID >= 70300)) {
|
||||
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.3.0". You are running ' . PHP_VERSION . '.';
|
||||
}
|
||||
|
||||
?>
|
||||
-----
|
||||
<?php
|
||||
|
||||
namespace Rector\Downgrade\Tests\Rector\LNumber\ChangePhpVersionInPlatformCheckRector\Fixture;
|
||||
|
||||
$issues = [];
|
||||
|
||||
if (!(PHP_VERSION_ID >= 70100)) {
|
||||
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.1". You are running ' . PHP_VERSION . '.';
|
||||
}
|
||||
|
||||
?>
|
|
@ -1,9 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Rector\Downgrade\Tests\Rector\LNumber\ChangePhpVersionInPlatformCheckRector\Fixture;
|
||||
|
||||
$issues = [];
|
||||
|
||||
if (!(PHP_VERSION_ID >= 70300)) {
|
||||
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.3.0". You are running ' . PHP_VERSION . '.';
|
||||
}
|
Loading…
Reference in New Issue
Block a user