From a127bf16ebc89c1f6f9a6c129662f350cea5c76b Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 3 Sep 2020 20:02:07 +0200 Subject: [PATCH] revert [Experimental] Add safe_types option - #3535 (#4120) --- README.md | 43 ---------------- config/config.php | 1 - .../Scope/PHPStanNodeScopeResolver.php | 34 ------------- .../complete_strict_type.php.inc | 31 ------------ .../make_sure_docs_is_kept.php.inc | 49 ------------------- .../FixtureSafeTypes/skip_for_doc.php.inc | 16 ------ .../TypedPropertyRector/SafeTypesTest.php | 40 --------------- src/Configuration/Option.php | 5 -- 8 files changed, 219 deletions(-) delete mode 100644 rules/php74/tests/Rector/Property/TypedPropertyRector/FixtureSafeTypes/complete_strict_type.php.inc delete mode 100644 rules/php74/tests/Rector/Property/TypedPropertyRector/FixtureSafeTypes/make_sure_docs_is_kept.php.inc delete mode 100644 rules/php74/tests/Rector/Property/TypedPropertyRector/FixtureSafeTypes/skip_for_doc.php.inc delete mode 100644 rules/php74/tests/Rector/Property/TypedPropertyRector/SafeTypesTest.php diff --git a/README.md b/README.md index f962d6ee52e..1b45d0cfa30 100644 --- a/README.md +++ b/README.md @@ -262,49 +262,6 @@ vendor/bin/rector process src --set solid --only Rector\SOLID\Rector\Class_\Fina vendor/bin/rector process src --set solid --only FinalizeClassesWithoutChildrenRector ``` -### Safe Types - - -**Experimental** feature - -In default type resolving settings, all docblocks are taken seriously. - -```php -parameters(); - - // [default: false] - $parameters->set(Option::SAFE_TYPES, true); -}; -``` - -E.g. the `TypedPropertyRector` rule will skip this case, as `string` is defined only in docblock: - -```php -value = $value; - } -} -``` - ### Limit Execution to Changed Files Execution can be limited to changed files using the `process` option `--match-git-diff`. diff --git a/config/config.php b/config/config.php index 17f0bb2fca1..a16dff0ef94 100644 --- a/config/config.php +++ b/config/config.php @@ -29,5 +29,4 @@ return static function (ContainerConfigurator $containerConfigurator): void { $parameters->set(Option::PROJECT_TYPE, Option::PROJECT_TYPE_PROPRIETARY); $parameters->set(Option::NESTED_CHAIN_METHOD_CALL_LIMIT, 30); - $parameters->set(Option::SAFE_TYPES, false); }; diff --git a/packages/node-type-resolver/src/PHPStan/Scope/PHPStanNodeScopeResolver.php b/packages/node-type-resolver/src/PHPStan/Scope/PHPStanNodeScopeResolver.php index 16321a1ed31..4e5bb979ab4 100644 --- a/packages/node-type-resolver/src/PHPStan/Scope/PHPStanNodeScopeResolver.php +++ b/packages/node-type-resolver/src/PHPStan/Scope/PHPStanNodeScopeResolver.php @@ -11,7 +11,6 @@ use PhpParser\Node\Stmt\ClassLike; use PhpParser\Node\Stmt\Interface_; use PhpParser\Node\Stmt\Trait_; use PhpParser\NodeTraverser; -use PhpParser\NodeVisitorAbstract; use PHPStan\AnalysedCodeException; use PHPStan\Analyser\MutatingScope; use PHPStan\Analyser\NodeScopeResolver; @@ -21,13 +20,11 @@ use PHPStan\Reflection\ReflectionProvider; use Rector\Caching\ChangedFilesDetector; use Rector\Caching\FileSystem\DependencyResolver; use Rector\Core\Configuration\Configuration; -use Rector\Core\Configuration\Option; use Rector\Core\Exception\ShouldNotHappenException; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\PHPStan\Collector\TraitNodeScopeCollector; use Rector\NodeTypeResolver\PHPStan\Scope\NodeVisitor\RemoveDeepChainMethodCallNodeVisitor; use Symfony\Component\Console\Style\SymfonyStyle; -use Symplify\PackageBuilder\Parameter\ParameterProvider; use Symplify\SmartFileSystem\SmartFileInfo; /** @@ -86,17 +83,11 @@ final class PHPStanNodeScopeResolver */ private $symfonyStyle; - /** - * @var ParameterProvider - */ - private $parameterProvider; - public function __construct( ChangedFilesDetector $changedFilesDetector, Configuration $configuration, DependencyResolver $dependencyResolver, NodeScopeResolver $nodeScopeResolver, - ParameterProvider $parameterProvider, ReflectionProvider $reflectionProvider, RemoveDeepChainMethodCallNodeVisitor $removeDeepChainMethodCallNodeVisitor, ScopeFactory $scopeFactory, @@ -112,7 +103,6 @@ final class PHPStanNodeScopeResolver $this->changedFilesDetector = $changedFilesDetector; $this->configuration = $configuration; $this->symfonyStyle = $symfonyStyle; - $this->parameterProvider = $parameterProvider; } /** @@ -156,11 +146,6 @@ final class PHPStanNodeScopeResolver $this->resolveDependentFiles($node, $scope); }; - $safeTypes = (bool) $this->parameterProvider->provideParameter(Option::SAFE_TYPES); - if ($safeTypes) { - $this->removeCommentsFromNodes($nodes); - } - /** @var MutatingScope $scope */ $this->nodeScopeResolver->processNodes($nodes, $scope, $nodeCallback); @@ -212,25 +197,6 @@ final class PHPStanNodeScopeResolver } } - /** - * Remove comments, to enable scope resolving only from code, not docblocks - * - * @param Node[] $nodes - */ - private function removeCommentsFromNodes(array $nodes): void - { - $nodeTraverser = new NodeTraverser(); - $nodeTraverser->addVisitor(new class() extends NodeVisitorAbstract { - public function enterNode(Node $node): ?Node - { - $node->setAttribute('comments', null); - return $node; - } - }); - - $nodeTraverser->traverse($nodes); - } - /** * @param string[] $dependentFiles */ diff --git a/rules/php74/tests/Rector/Property/TypedPropertyRector/FixtureSafeTypes/complete_strict_type.php.inc b/rules/php74/tests/Rector/Property/TypedPropertyRector/FixtureSafeTypes/complete_strict_type.php.inc deleted file mode 100644 index d1fa93da55c..00000000000 --- a/rules/php74/tests/Rector/Property/TypedPropertyRector/FixtureSafeTypes/complete_strict_type.php.inc +++ /dev/null @@ -1,31 +0,0 @@ -name = $name; - } -} - -?> ------ -name = $name; - } -} - -?> diff --git a/rules/php74/tests/Rector/Property/TypedPropertyRector/FixtureSafeTypes/make_sure_docs_is_kept.php.inc b/rules/php74/tests/Rector/Property/TypedPropertyRector/FixtureSafeTypes/make_sure_docs_is_kept.php.inc deleted file mode 100644 index 24056ba9429..00000000000 --- a/rules/php74/tests/Rector/Property/TypedPropertyRector/FixtureSafeTypes/make_sure_docs_is_kept.php.inc +++ /dev/null @@ -1,49 +0,0 @@ -name = $name; - $this->surname = $surname; - } -} - -?> ------ -name = $name; - $this->surname = $surname; - } -} - -?> diff --git a/rules/php74/tests/Rector/Property/TypedPropertyRector/FixtureSafeTypes/skip_for_doc.php.inc b/rules/php74/tests/Rector/Property/TypedPropertyRector/FixtureSafeTypes/skip_for_doc.php.inc deleted file mode 100644 index 79d4f5a89d4..00000000000 --- a/rules/php74/tests/Rector/Property/TypedPropertyRector/FixtureSafeTypes/skip_for_doc.php.inc +++ /dev/null @@ -1,16 +0,0 @@ -name = $name; - } -} diff --git a/rules/php74/tests/Rector/Property/TypedPropertyRector/SafeTypesTest.php b/rules/php74/tests/Rector/Property/TypedPropertyRector/SafeTypesTest.php deleted file mode 100644 index 59805db1aac..00000000000 --- a/rules/php74/tests/Rector/Property/TypedPropertyRector/SafeTypesTest.php +++ /dev/null @@ -1,40 +0,0 @@ -setParameter(Option::SAFE_TYPES, true); - $this->doTestFileInfo($fileInfo); - } - - public function provideData(): Iterator - { - return $this->yieldFilesFromDirectory(__DIR__ . '/FixtureSafeTypes'); - } - - /** - * @return mixed[] - */ - protected function getRectorsWithConfiguration(): array - { - return [ - TypedPropertyRector::class => [ - TypedPropertyRector::CLASS_LIKE_TYPE_ONLY => false, - ], - ]; - } -} diff --git a/src/Configuration/Option.php b/src/Configuration/Option.php index b61dc7d0550..1c4ff144af3 100644 --- a/src/Configuration/Option.php +++ b/src/Configuration/Option.php @@ -46,11 +46,6 @@ final class Option */ public const AUTO_IMPORT_NAMES = 'auto_import_names'; - /** - * @var string - */ - public const SAFE_TYPES = 'safe_types'; - /** * @var string */