[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:
Tomas Votruba 2020-12-22 16:48:25 +01:00 committed by GitHub
parent 34e6c6ffdf
commit c5d258e0cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 950 additions and 931 deletions

View File

@ -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": {

View File

@ -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,
]]);
};

View File

@ -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);

View File

@ -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);
};

View File

@ -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);
};

View File

@ -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);
};

View File

@ -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);

View File

@ -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

View File

@ -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);
}
}

View File

@ -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,
],
];
}
}

View File

@ -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 . '.';
}
?>

View File

@ -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 . '.';
}