diff --git a/packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareUnionTypeNodeFactory.php b/packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareUnionTypeNodeFactory.php index 671f828daa7a..94f850af2c61 100644 --- a/packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareUnionTypeNodeFactory.php +++ b/packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareUnionTypeNodeFactory.php @@ -34,7 +34,6 @@ public function isMatch(Node $node): bool */ public function create(Node $node, string $docContent): AttributeAwareNodeInterface { - // @todo how to get content here foreach ($node->types as $key => $unionedType) { $node->types[$key] = $this->attributeAwareNodeFactory->createFromNode($unionedType, $docContent); } diff --git a/packages/better-php-doc-parser/src/PhpDocNode/AbstractTagValueNode.php b/packages/better-php-doc-parser/src/PhpDocNode/AbstractTagValueNode.php index 66e4c3adf976..58412c179dcd 100644 --- a/packages/better-php-doc-parser/src/PhpDocNode/AbstractTagValueNode.php +++ b/packages/better-php-doc-parser/src/PhpDocNode/AbstractTagValueNode.php @@ -82,7 +82,12 @@ public function __construct(array $items, ?string $originalContent = null) */ public function __toString(): string { - $items = $this->completeItemsQuotes($this->items); + return $this->printItems($this->items); + } + + protected function printItems(array $items): string + { + $items = $this->completeItemsQuotes($items); $items = $this->filterOutMissingItems($items); $items = $this->makeKeysExplicit($items); @@ -117,7 +122,6 @@ protected function printArrayItem(array $item, ?string $key = null): string // should unquote if ($this->isValueWithoutQuotes($key)) { - // @todo resolve per key item $json = Strings::replace($json, '#"#'); } diff --git a/packages/better-php-doc-parser/src/PhpDocNode/Symfony/SymfonyRouteTagValueNode.php b/packages/better-php-doc-parser/src/PhpDocNode/Symfony/SymfonyRouteTagValueNode.php index e10fcbe311d1..32573238b5fe 100644 --- a/packages/better-php-doc-parser/src/PhpDocNode/Symfony/SymfonyRouteTagValueNode.php +++ b/packages/better-php-doc-parser/src/PhpDocNode/Symfony/SymfonyRouteTagValueNode.php @@ -21,14 +21,12 @@ final class SymfonyRouteTagValueNode extends AbstractTagValueNode implements Sho public function __toString(): string { - if (isset($this->items['path']) || isset($this->items['localizedPaths'])) { - $this->items['path'] = $this->items['path'] ?? $this->items['localizedPaths']; + $items = $this->items; + if (isset($items['path']) || isset($items['localizedPaths'])) { + $items['path'] = $items['path'] ?? $this->items['localizedPaths']; } - $items = $this->completeItemsQuotes($this->items); - $items = $this->makeKeysExplicit($items); - - return $this->printContentItems($items); + return $this->printItems($items); } public function changeMethods(array $methods): void diff --git a/packages/better-php-doc-parser/src/PhpDocNode/Symfony/Validator/Constraints/AssertRangeTagValueNode.php b/packages/better-php-doc-parser/src/PhpDocNode/Symfony/Validator/Constraints/AssertRangeTagValueNode.php index 55473fdaa0b5..529c6aaa3e62 100644 --- a/packages/better-php-doc-parser/src/PhpDocNode/Symfony/Validator/Constraints/AssertRangeTagValueNode.php +++ b/packages/better-php-doc-parser/src/PhpDocNode/Symfony/Validator/Constraints/AssertRangeTagValueNode.php @@ -21,11 +21,6 @@ public function getShortName(): string public function toAttributeString(): string { - $items = $this->filterOutMissingItems($this->items); - $items = $this->completeItemsQuotes($items); - - $content = $this->printPhpAttributeItemsAsArray($items); - - return $this->printPhpAttributeContent($content); + return $this->printItemsToAttributeAsArrayString($this->items); } } diff --git a/packages/better-php-doc-parser/src/PhpDocParser/BetterPhpDocParser.php b/packages/better-php-doc-parser/src/PhpDocParser/BetterPhpDocParser.php index 0f569a6f58b4..26ec48a428c6 100644 --- a/packages/better-php-doc-parser/src/PhpDocParser/BetterPhpDocParser.php +++ b/packages/better-php-doc-parser/src/PhpDocParser/BetterPhpDocParser.php @@ -313,7 +313,6 @@ private function resolveTokenEnd(TokenIterator $tokenIterator): int private function getOriginalContentFromTokenIterator(TokenIterator $tokenIterator): string { - // @todo iterate through tokens... $originalTokens = $this->privatesAccessor->getPrivateProperty($tokenIterator, 'tokens'); $originalContent = ''; diff --git a/packages/dynamic-type-analysis/src/Rector/ClassMethod/AddArgumentTypeWithProbeDataRector.php b/packages/dynamic-type-analysis/src/Rector/ClassMethod/AddArgumentTypeWithProbeDataRector.php index 20509d3d5545..ed8791344873 100644 --- a/packages/dynamic-type-analysis/src/Rector/ClassMethod/AddArgumentTypeWithProbeDataRector.php +++ b/packages/dynamic-type-analysis/src/Rector/ClassMethod/AddArgumentTypeWithProbeDataRector.php @@ -96,7 +96,6 @@ private function completeTypesToClassMethodParams(ClassMethod $classMethod, arra if (count($parameterData) > 1) { // is union or nullable type? - // @todo continue; } diff --git a/packages/node-type-resolver/src/NodeTypeResolver/NameTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/NameTypeResolver.php index 519814f05db5..99ca1fb1a6c7 100644 --- a/packages/node-type-resolver/src/NodeTypeResolver/NameTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/NameTypeResolver.php @@ -61,7 +61,6 @@ private function resolveParent(Name $name): Type $type = new ObjectType($parentClassName); - // @todo abstract $parentParentClass = get_parent_class($parentClassName); if ($parentParentClass) { $type = new UnionType([$type, new ObjectType($parentParentClass)]); diff --git a/packages/node-type-resolver/src/NodeTypeResolver/ParamTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/ParamTypeResolver.php index 3d61ae918893..cab01cd72a70 100644 --- a/packages/node-type-resolver/src/NodeTypeResolver/ParamTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/ParamTypeResolver.php @@ -11,7 +11,6 @@ use PhpParser\Node\Param; use PhpParser\NodeTraverser; use PHPStan\Type\MixedType; -use PHPStan\Type\ObjectType; use PHPStan\Type\Type; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\Core\PhpParser\NodeTraverser\CallableNodeTraverser; @@ -19,6 +18,7 @@ use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; +use Rector\StaticTypeMapper\StaticTypeMapper; /** * @see \Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\ParamTypeResolver\ParamTypeResolverTest @@ -40,6 +40,11 @@ final class ParamTypeResolver implements NodeTypeResolverInterface */ private $nodeTypeResolver; + /** + * @var StaticTypeMapper + */ + private $staticTypeMapper; + public function __construct(NodeNameResolver $nodeNameResolver, CallableNodeTraverser $callableNodeTraverser) { $this->nodeNameResolver = $nodeNameResolver; @@ -49,9 +54,12 @@ public function __construct(NodeNameResolver $nodeNameResolver, CallableNodeTrav /** * @required */ - public function autowirePropertyTypeResolver(NodeTypeResolver $nodeTypeResolver): void - { + public function autowirePropertyTypeResolver( + NodeTypeResolver $nodeTypeResolver, + StaticTypeMapper $staticTypeMapper + ): void { $this->nodeTypeResolver = $nodeTypeResolver; + $this->staticTypeMapper = $staticTypeMapper; } /** @@ -83,11 +91,7 @@ public function resolve(Node $node): Type private function resolveFromType(Node $node): Type { if ($node->type !== null && ! $node->type instanceof Identifier) { - $resolveTypeName = $this->nodeNameResolver->getName($node->type); - if ($resolveTypeName) { - // @todo map the other way every type :) - return new ObjectType($resolveTypeName); - } + return $this->staticTypeMapper->mapPhpParserNodePHPStanType($node->type); } return new MixedType(); diff --git a/packages/node-type-resolver/src/PHPStan/TypeHasher.php b/packages/node-type-resolver/src/PHPStan/TypeHasher.php index f913ef5b3d1a..7e3f8b788fca 100644 --- a/packages/node-type-resolver/src/PHPStan/TypeHasher.php +++ b/packages/node-type-resolver/src/PHPStan/TypeHasher.php @@ -33,7 +33,6 @@ public function createTypeHash(Type $type): string } if ($type instanceof ArrayType) { - // @todo sort to make different order identical return $this->createTypeHash($type->getItemType()) . '[]'; } diff --git a/packages/phpstan-static-type-mapper/src/TypeMapper/ArrayTypeMapper.php b/packages/phpstan-static-type-mapper/src/TypeMapper/ArrayTypeMapper.php index 3600ee76d908..4ebd2f8136a9 100644 --- a/packages/phpstan-static-type-mapper/src/TypeMapper/ArrayTypeMapper.php +++ b/packages/phpstan-static-type-mapper/src/TypeMapper/ArrayTypeMapper.php @@ -82,9 +82,6 @@ public function mapToDocString(Type $type, ?Type $parentType = null): string return $this->phpStanStaticTypeMapper->mapToDocString($itemType, $parentType) . '[]'; } - /** - * @todo improve - */ private function convertUnionArrayTypeNodesToArrayTypeOfUnionTypeNodes( UnionTypeNode $unionTypeNode ): AttributeAwareUnionTypeNode { diff --git a/packages/polyfill/src/Rector/If_/UnwrapFutureCompatibleIfPhpVersionRector.php b/packages/polyfill/src/Rector/If_/UnwrapFutureCompatibleIfPhpVersionRector.php index bf701fd03816..f410c9f950c1 100644 --- a/packages/polyfill/src/Rector/If_/UnwrapFutureCompatibleIfPhpVersionRector.php +++ b/packages/polyfill/src/Rector/If_/UnwrapFutureCompatibleIfPhpVersionRector.php @@ -70,7 +70,6 @@ public function getNodeTypes(): array */ public function refactor(Node $node): ?Node { - // has some elseif, we need to check them too later @todo if ((bool) $node->elseifs) { return null; } @@ -97,7 +96,6 @@ public function refactor(Node $node): ?Node private function refactorIsMatch(If_ $if): void { - // has some elseif, we need to check them too @todo if ((bool) $if->elseifs) { return; } diff --git a/packages/post-rector/src/Collector/NodesToReplaceCollector.php b/packages/post-rector/src/Collector/NodesToReplaceCollector.php index e61f0f48793b..150b22f87ca5 100644 --- a/packages/post-rector/src/Collector/NodesToReplaceCollector.php +++ b/packages/post-rector/src/Collector/NodesToReplaceCollector.php @@ -10,7 +10,6 @@ final class NodesToReplaceCollector implements NodeCollectorInterface { /** - * @todo use value object * @var Node[][] */ private $nodesToReplace = []; diff --git a/packages/post-rector/src/Collector/UseNodesToAddCollector.php b/packages/post-rector/src/Collector/UseNodesToAddCollector.php index 1eb3c8643eae..a8fb2868d3d1 100644 --- a/packages/post-rector/src/Collector/UseNodesToAddCollector.php +++ b/packages/post-rector/src/Collector/UseNodesToAddCollector.php @@ -21,7 +21,6 @@ final class UseNodesToAddCollector implements NodeCollectorInterface private $useImportTypesInFilePath = []; /** - * @todo use value object * @var string[][] */ private $removedShortUsesInFilePath = []; diff --git a/packages/refactoring/src/Rector/FileSystem/MoveAndRenameNamespaceRector.php b/packages/refactoring/src/Rector/FileSystem/MoveAndRenameNamespaceRector.php index 6a0bb2e07dc6..a09870da5189 100644 --- a/packages/refactoring/src/Rector/FileSystem/MoveAndRenameNamespaceRector.php +++ b/packages/refactoring/src/Rector/FileSystem/MoveAndRenameNamespaceRector.php @@ -62,10 +62,6 @@ public function refactor(SmartFileInfo $smartFileInfo): void $renamedNamespaceValueObject ); - // @todo - // create helping rename class rector.yaml + class_alias autoload file - // $this->renamedClassesCollector->addClassRename($oldClass, $newClass); - $this->moveFile($smartFileInfo, $newFileLocation); } diff --git a/packages/static-type-mapper/src/PhpDocParser/IdentifierTypeMapper.php b/packages/static-type-mapper/src/PhpDocParser/IdentifierTypeMapper.php index 259a36cdd807..05c67efb8fc0 100644 --- a/packages/static-type-mapper/src/PhpDocParser/IdentifierTypeMapper.php +++ b/packages/static-type-mapper/src/PhpDocParser/IdentifierTypeMapper.php @@ -79,7 +79,6 @@ public function mapToPHPStanType(TypeNode $typeNode, Node $node, NameScope $name return new IterableType(new MixedType(), new MixedType()); } - // @todo improve - making many false positives now $objectType = new ObjectType($typeNode->name); return $this->objectTypeSpecifier->narrowToFullyQualifiedOrAlaisedObjectType($node, $objectType); diff --git a/packages/vendor-locker/src/NodeVendorLocker/ClassMethodReturnVendorLockResolver.php b/packages/vendor-locker/src/NodeVendorLocker/ClassMethodReturnVendorLockResolver.php index 0bdd493972d6..c58307e505a0 100644 --- a/packages/vendor-locker/src/NodeVendorLocker/ClassMethodReturnVendorLockResolver.php +++ b/packages/vendor-locker/src/NodeVendorLocker/ClassMethodReturnVendorLockResolver.php @@ -25,10 +25,8 @@ public function isVendorLocked(ClassMethod $classMethod): bool /** @var string $methodName */ $methodName = $this->nodeNameResolver->getName($classMethod); - // @todo extract to some "inherited parent method" service /** @var string|null $parentClassName */ $parentClassName = $classMethod->getAttribute(AttributeKey::PARENT_CLASS_NAME); - if ($parentClassName !== null) { return $this->isVendorLockedByParentClass($parentClassName, $methodName); } diff --git a/packages/vendor-locker/src/NodeVendorLocker/PropertyVendorLockResolver.php b/packages/vendor-locker/src/NodeVendorLocker/PropertyVendorLockResolver.php index 5b5fc94d75c2..88225bea2bb1 100644 --- a/packages/vendor-locker/src/NodeVendorLocker/PropertyVendorLockResolver.php +++ b/packages/vendor-locker/src/NodeVendorLocker/PropertyVendorLockResolver.php @@ -29,27 +29,27 @@ public function isVendorLocked(Property $property): bool throw new ShouldNotHappenException(); } - // @todo extract to some "inherited parent method" service + // extract to some "inherited parent method" service /** @var string|null $parentClassName */ $parentClassName = $classNode->getAttribute(AttributeKey::PARENT_CLASS_NAME); if ($parentClassName !== null) { $parentClassProperty = $this->findParentProperty($parentClassName, $propertyName); - // @todo validate type is conflicting + // validate type is conflicting // parent class property in local scope → it's ok if ($parentClassProperty !== null) { return $parentClassProperty->type !== null; } - // if not, look for it's parent parent - @todo recursion + // if not, look for it's parent parent - recursion if (property_exists($parentClassName, $propertyName)) { - // @todo validate type is conflicting + // validate type is conflicting // parent class property in external scope → it's not ok return true; - // if not, look for it's parent parent - @todo recursion + // if not, look for it's parent parent } } diff --git a/rules/cakephp/src/Rector/MethodCall/ModalToGetSetRector.php b/rules/cakephp/src/Rector/MethodCall/ModalToGetSetRector.php index 21acb7d105f0..a0bcf14a695c 100644 --- a/rules/cakephp/src/Rector/MethodCall/ModalToGetSetRector.php +++ b/rules/cakephp/src/Rector/MethodCall/ModalToGetSetRector.php @@ -80,7 +80,6 @@ public function refactor(Node $node): ?Node return null; } - // @todo important, maybe unique condition $newName = $this->resolveNewMethodNameByCondition($node, $typeAndMethodNames); $node->name = new Identifier($newName); diff --git a/rules/coding-style/tests/Rector/Namespace_/ImportFullyQualifiedNamesRector/FixturePartial/conflicting_endings.php.inc b/rules/coding-style/tests/Rector/Namespace_/ImportFullyQualifiedNamesRector/FixturePartial/conflicting_endings.php.inc deleted file mode 100644 index 4b0aad7ee326..000000000000 --- a/rules/coding-style/tests/Rector/Namespace_/ImportFullyQualifiedNamesRector/FixturePartial/conflicting_endings.php.inc +++ /dev/null @@ -1,46 +0,0 @@ - ------ - diff --git a/rules/coding-style/tests/Rector/Namespace_/ImportFullyQualifiedNamesRector/FixturePartial/doc_combined.php.inc b/rules/coding-style/tests/Rector/Namespace_/ImportFullyQualifiedNamesRector/FixturePartial/doc_combined.php.inc deleted file mode 100644 index 21dcaa4ef4ea..000000000000 --- a/rules/coding-style/tests/Rector/Namespace_/ImportFullyQualifiedNamesRector/FixturePartial/doc_combined.php.inc +++ /dev/null @@ -1,44 +0,0 @@ - ------ - diff --git a/rules/coding-style/tests/Rector/Namespace_/ImportFullyQualifiedNamesRector/FixturePartial/import_return_doc.php.inc b/rules/coding-style/tests/Rector/Namespace_/ImportFullyQualifiedNamesRector/FixturePartial/import_return_doc.php.inc deleted file mode 100644 index 138b8b983856..000000000000 --- a/rules/coding-style/tests/Rector/Namespace_/ImportFullyQualifiedNamesRector/FixturePartial/import_return_doc.php.inc +++ /dev/null @@ -1,36 +0,0 @@ - ------ - diff --git a/rules/coding-style/tests/Rector/Namespace_/ImportFullyQualifiedNamesRector/ImportFullyQualifiedNamesRectorTest.php b/rules/coding-style/tests/Rector/Namespace_/ImportFullyQualifiedNamesRector/ImportFullyQualifiedNamesRectorTest.php index de5f1699cbe8..5d782cf04755 100644 --- a/rules/coding-style/tests/Rector/Namespace_/ImportFullyQualifiedNamesRector/ImportFullyQualifiedNamesRectorTest.php +++ b/rules/coding-style/tests/Rector/Namespace_/ImportFullyQualifiedNamesRector/ImportFullyQualifiedNamesRectorTest.php @@ -35,12 +35,6 @@ public function provideDataFunction(): Iterator return $this->yieldFilesFromDirectory(__DIR__ . '/FixtureFunction'); } - public function skippedProviderPartials(): Iterator - { - // @todo fix later - return $this->yieldFilesFromDirectory(__DIR__ . '/FixturePartial'); - } - protected function getRectorClass(): string { // the must be some Rector class to run diff --git a/rules/dead-code/src/NodeCollector/ModifiedVariableNamesCollector.php b/rules/dead-code/src/NodeCollector/ModifiedVariableNamesCollector.php index 20c6d051d444..fc23097c2abd 100644 --- a/rules/dead-code/src/NodeCollector/ModifiedVariableNamesCollector.php +++ b/rules/dead-code/src/NodeCollector/ModifiedVariableNamesCollector.php @@ -74,9 +74,6 @@ private function isVariableOverriddenInAssign(Node $node): bool return $node->var instanceof Variable; } - /** - * @todo decouple to changed variable service - */ private function isVariableChangedInReference(Node $node): bool { if (! $node instanceof Arg) { diff --git a/rules/doctrine-gedmo-to-knplabs/src/Rector/Class_/TranslationBehaviorRector.php b/rules/doctrine-gedmo-to-knplabs/src/Rector/Class_/TranslationBehaviorRector.php index 6f97a46735c0..baaddaa3030b 100644 --- a/rules/doctrine-gedmo-to-knplabs/src/Rector/Class_/TranslationBehaviorRector.php +++ b/rules/doctrine-gedmo-to-knplabs/src/Rector/Class_/TranslationBehaviorRector.php @@ -174,7 +174,6 @@ public function refactor(Node $node): ?Node $removedPropertyNameToPhpDocInfo = $this->collectAndRemoveTranslatableProperties($node); $removePropertyNames = array_keys($removedPropertyNameToPhpDocInfo); - // @todo add them as a @method annotation, so the autocomplete still works? $this->removeSetAndGetMethods($node, $removePropertyNames); $this->dumpEntityTranslation($node, $removedPropertyNameToPhpDocInfo); diff --git a/rules/nette-to-symfony/src/Rector/Assign/FormControlToControllerAndFormTypeRector.php b/rules/nette-to-symfony/src/Rector/Assign/FormControlToControllerAndFormTypeRector.php index 8aa445b57a00..ea9f4f165b71 100644 --- a/rules/nette-to-symfony/src/Rector/Assign/FormControlToControllerAndFormTypeRector.php +++ b/rules/nette-to-symfony/src/Rector/Assign/FormControlToControllerAndFormTypeRector.php @@ -143,7 +143,6 @@ public function refactor(Node $node): ?Node $this->dumpFormController($node, $formTypeClass); - // @todo dump to new file? or the symfony controller? return $formTypeClass; } @@ -257,7 +256,6 @@ private function createFormTypeClassFromBuildFormClassMethod(ClassMethod $buildF private function createActionWithFormProcess(string $formTypeClass): ClassMethod { - // @todo make dynamic $classMethod = $this->nodeFactory->createPublicMethod('actionSomeForm'); $requestVariable = new Variable('request'); diff --git a/rules/nette-to-symfony/src/Rector/ClassMethod/RouterListToControllerAnnotationsRector.php b/rules/nette-to-symfony/src/Rector/ClassMethod/RouterListToControllerAnnotationsRector.php index ece8205762c7..40235264e3e1 100644 --- a/rules/nette-to-symfony/src/Rector/ClassMethod/RouterListToControllerAnnotationsRector.php +++ b/rules/nette-to-symfony/src/Rector/ClassMethod/RouterListToControllerAnnotationsRector.php @@ -276,7 +276,6 @@ private function isRouteStaticCallMatch(StaticCall $staticCall): bool return false; } - // @todo decouple - resolve method return type if (! method_exists($className, $methodName)) { return false; } diff --git a/rules/nette-to-symfony/src/Rector/Class_/NetteControlToSymfonyControllerRector.php b/rules/nette-to-symfony/src/Rector/Class_/NetteControlToSymfonyControllerRector.php index 9c9aa69e20c6..b8149f8ef9be 100644 --- a/rules/nette-to-symfony/src/Rector/Class_/NetteControlToSymfonyControllerRector.php +++ b/rules/nette-to-symfony/src/Rector/Class_/NetteControlToSymfonyControllerRector.php @@ -141,7 +141,6 @@ private function processRenderMethod(ClassMethod $classMethod): void { $this->processGetPresenterGetSessionMethodCall($classMethod); - // rename method - @todo pick $classMethod->name = new Identifier('action'); $magicTemplatePropertyCalls = $this->templatePropertyAssignCollector->collectTemplateFileNameVariablesAndNodesToRemove( diff --git a/rules/nette-to-symfony/src/Route/RouteInfoFactory.php b/rules/nette-to-symfony/src/Route/RouteInfoFactory.php index b96707c92f6d..375e22ae432a 100644 --- a/rules/nette-to-symfony/src/Route/RouteInfoFactory.php +++ b/rules/nette-to-symfony/src/Route/RouteInfoFactory.php @@ -96,7 +96,6 @@ private function createRouteInfoFromArgs(Node $node, array $methods = []): ?Rout $targetNode = $node->args[1]->value; if ($targetNode instanceof ClassConstFetch) { return $this->createForClassConstFetch($node, $methods, $routePath); - // @todo method specific route } if ($targetNode instanceof String_) { diff --git a/rules/nette-to-symfony/src/SymfonyFormAbstractTypeFactory.php b/rules/nette-to-symfony/src/SymfonyFormAbstractTypeFactory.php index 77e8212ae2bf..be4a5da65567 100644 --- a/rules/nette-to-symfony/src/SymfonyFormAbstractTypeFactory.php +++ b/rules/nette-to-symfony/src/SymfonyFormAbstractTypeFactory.php @@ -84,7 +84,6 @@ private function createBuildFormMethodCalls(array $methodCalls, Variable $formBu $methodCall = new MethodCall($formBuilderVariable, 'add', $args); $buildFormMethodCalls[] = new Expression($methodCall); } - // @todo } return $buildFormMethodCalls; diff --git a/rules/php72/src/Rector/FuncCall/ParseStrWithResultArgumentRector.php b/rules/php72/src/Rector/FuncCall/ParseStrWithResultArgumentRector.php index 0c5e73d24435..f1b8e4096c56 100644 --- a/rules/php72/src/Rector/FuncCall/ParseStrWithResultArgumentRector.php +++ b/rules/php72/src/Rector/FuncCall/ParseStrWithResultArgumentRector.php @@ -67,7 +67,6 @@ public function refactor(Node $node): ?Node return null; } - // @todo maybe solve in generic way as attribute? $nextExpression = $expression->getAttribute(AttributeKey::NEXT_NODE); if ($nextExpression === null) { return null; diff --git a/rules/phpunit/src/Rector/MethodCall/RemoveExpectAnyFromMockRector.php b/rules/phpunit/src/Rector/MethodCall/RemoveExpectAnyFromMockRector.php index b144dd1d62f1..40763c579009 100644 --- a/rules/phpunit/src/Rector/MethodCall/RemoveExpectAnyFromMockRector.php +++ b/rules/phpunit/src/Rector/MethodCall/RemoveExpectAnyFromMockRector.php @@ -78,8 +78,6 @@ public function refactor(Node $node): ?Node } $onlyArgument = $node->args[0]->value; - - // @todo add match sequence method, ref https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/be664e0c9f3cca94d0bbefa06a731848144e4a22/src/Tokenizer/Tokens.php#L776 if (! $onlyArgument instanceof MethodCall) { return null; } diff --git a/rules/removing-static/src/Rector/Class_/PassFactoryToUniqueObjectRector.php b/rules/removing-static/src/Rector/Class_/PassFactoryToUniqueObjectRector.php index 0b400a74738e..eee009d3769c 100644 --- a/rules/removing-static/src/Rector/Class_/PassFactoryToUniqueObjectRector.php +++ b/rules/removing-static/src/Rector/Class_/PassFactoryToUniqueObjectRector.php @@ -131,12 +131,12 @@ final class AnotherClassFactory * @var StaticClass */ private $staticClass; - + public function __construct(StaticClass $staticClass) { $this->staticClass = $staticClass; } - + public function create(): AnotherClass { return new AnotherClass($this->staticClass); @@ -145,7 +145,7 @@ public function create(): AnotherClass PHP , [ - 'typesToServices' => ['StaticClass'], + '$typesToServices' => ['StaticClass'], ] ), ]); } @@ -203,7 +203,6 @@ private function refactorClass(Class_ $class): Class_ } } - // @todo 3. iterate parents with same effect etc. return $class; } } diff --git a/rules/symfony/src/Rector/Form/StringFormTypeToClassRector.php b/rules/symfony/src/Rector/Form/StringFormTypeToClassRector.php index 46a04ce76dfb..79a057c40817 100644 --- a/rules/symfony/src/Rector/Form/StringFormTypeToClassRector.php +++ b/rules/symfony/src/Rector/Form/StringFormTypeToClassRector.php @@ -29,9 +29,6 @@ public function __construct(FormTypeStringToTypeProvider $formTypeStringToTypePr $this->formTypeStringToTypeProvider = $formTypeStringToTypeProvider; } - /** - * @todo add custom form types - */ public function getDefinition(): RectorDefinition { return new RectorDefinition( diff --git a/rules/symfony/src/Rector/FrameworkBundle/GetParameterToConstructorInjectionRector.php b/rules/symfony/src/Rector/FrameworkBundle/GetParameterToConstructorInjectionRector.php index ec98a20b9ab6..90a9458da26c 100644 --- a/rules/symfony/src/Rector/FrameworkBundle/GetParameterToConstructorInjectionRector.php +++ b/rules/symfony/src/Rector/FrameworkBundle/GetParameterToConstructorInjectionRector.php @@ -103,11 +103,7 @@ public function refactor(Node $node): ?Node return null; } - $this->addPropertyToClass( - $classNode, - new StringType(), // @todo: resolve type from container provider? see parameter autowire compiler pass - $propertyName - ); + $this->addPropertyToClass($classNode, new StringType(), $propertyName); return $this->createPropertyFetch('this', $propertyName); } diff --git a/rules/symfony/src/Rector/MethodCall/FormTypeInstanceToClassConstRector.php b/rules/symfony/src/Rector/MethodCall/FormTypeInstanceToClassConstRector.php index 5c80e1916ea6..f2eac91e72e1 100644 --- a/rules/symfony/src/Rector/MethodCall/FormTypeInstanceToClassConstRector.php +++ b/rules/symfony/src/Rector/MethodCall/FormTypeInstanceToClassConstRector.php @@ -159,7 +159,6 @@ private function moveArgumentsToOptions( $methodCall->args[$position + 1] = new Arg($this->createNull()); } - // @todo extend current options - array analyzer if (! isset($methodCall->args[$optionsPosition])) { $optionsArrayNode = new Array_(); foreach ($namesToArgs as $name => $arg) { @@ -215,7 +214,6 @@ private function resolveNamesToArgs(string $className, array $argNodes): array private function addBuildFormMethod(Class_ $classNode, ClassMethod $classMethod): void { if ($classNode->getMethod('buildForm') !== null) { - // @todo return; } @@ -233,7 +231,8 @@ private function addBuildFormMethod(Class_ $classNode, ClassMethod $classMethod) $buildFormClassMethodBuilder->makePublic(); $buildFormClassMethodBuilder->addParam($formBuilderParam); $buildFormClassMethodBuilder->addParam($optionsParam); - // raw copy stmts from ctor @todo improve + + // raw copy stmts from ctor $buildFormClassMethodBuilder->addStmts( $this->replaceParameterAssignWithOptionAssign((array) $classMethod->stmts, $optionsParam) ); @@ -249,7 +248,6 @@ private function addBuildFormMethod(Class_ $classNode, ClassMethod $classMethod) private function addConfigureOptionsMethod(Class_ $classNode, array $namesToArgs): void { if ($classNode->getMethod('configureOptions') !== null) { - // @todo return; } diff --git a/rules/symfony/src/Rector/New_/StringToArrayArgumentProcessRector.php b/rules/symfony/src/Rector/New_/StringToArrayArgumentProcessRector.php index 5ac7b7cb4abf..d33723802431 100644 --- a/rules/symfony/src/Rector/New_/StringToArrayArgumentProcessRector.php +++ b/rules/symfony/src/Rector/New_/StringToArrayArgumentProcessRector.php @@ -160,8 +160,6 @@ private function findPreviousNodeAssign(Node $node, Node $firstArgument): ?Assig return null; } - // @todo check out of scope assign, e.g. in previous method - return $checkedNode; }); } diff --git a/rules/type-declaration/src/Rector/FunctionLike/ReturnTypeDeclarationRector.php b/rules/type-declaration/src/Rector/FunctionLike/ReturnTypeDeclarationRector.php index 1651f2874c8b..5dfdadacbe78 100644 --- a/rules/type-declaration/src/Rector/FunctionLike/ReturnTypeDeclarationRector.php +++ b/rules/type-declaration/src/Rector/FunctionLike/ReturnTypeDeclarationRector.php @@ -169,7 +169,7 @@ private function shouldSkip(FunctionLike $functionLike): bool */ private function shouldSkipInferredReturnNode(FunctionLike $functionLike, ?Node $inferredReturnNode): bool { - // nothing to change in PHP code - @todo add @var annotation fallback? + // nothing to change in PHP code if ($inferredReturnNode === null) { return true; } diff --git a/rules/zend-to-symfony/src/Rector/ClassMethod/ThisRequestToRequestParameterRector.php b/rules/zend-to-symfony/src/Rector/ClassMethod/ThisRequestToRequestParameterRector.php index 1dbbd88a1760..4be725c841df 100644 --- a/rules/zend-to-symfony/src/Rector/ClassMethod/ThisRequestToRequestParameterRector.php +++ b/rules/zend-to-symfony/src/Rector/ClassMethod/ThisRequestToRequestParameterRector.php @@ -76,7 +76,6 @@ public function refactor(Node $node): ?Node $hasRequest = true; - // @todo rename method call based on Zend → Symfony // "isXmlHttpRequest()" → // "isPost()" → // "getPosts()" → diff --git a/rules/zend-to-symfony/src/Rector/Expression/RedirectorToRedirectToUrlRector.php b/rules/zend-to-symfony/src/Rector/Expression/RedirectorToRedirectToUrlRector.php index 5258f0d7520d..373a538c22b4 100644 --- a/rules/zend-to-symfony/src/Rector/Expression/RedirectorToRedirectToUrlRector.php +++ b/rules/zend-to-symfony/src/Rector/Expression/RedirectorToRedirectToUrlRector.php @@ -84,7 +84,6 @@ public function refactor(Node $node): ?Node return null; } - // @todo better check type in the future with custom PHPStan type extension if (! $this->isVariableName($possibleRedirector->var, 'redirector')) { return null; } diff --git a/rules/zend-to-symfony/src/Rector/MethodCall/ThisHelperToServiceMethodCallRector.php b/rules/zend-to-symfony/src/Rector/MethodCall/ThisHelperToServiceMethodCallRector.php index 03468be51990..ce52020c77eb 100644 --- a/rules/zend-to-symfony/src/Rector/MethodCall/ThisHelperToServiceMethodCallRector.php +++ b/rules/zend-to-symfony/src/Rector/MethodCall/ThisHelperToServiceMethodCallRector.php @@ -56,7 +56,7 @@ class SomeController public function someAction() { $this->_helper->onlinePayment(1000); - + $this->_helper->onlinePayment()->isPaid(); } } @@ -69,7 +69,7 @@ class SomeController * @var Zend_Controller_Action_HelperBroker */ private $_helper; - + /** * @var Zend_Controller_Action_Helper_OnlinePayment */ @@ -147,7 +147,6 @@ private function resolveHelperName(MethodCall $methodCall): string private function resolveHelperClassType(string $helperName): Type { - // @todo make configurable/adaptable for custom helper override in own namespace $possibleClasses = [sprintf('Zend_Controller_Action_Helper_%s', ucfirst($helperName))]; foreach ($possibleClasses as $possibleClass) { diff --git a/rules/zend-to-symfony/src/ValueObject/RouteValueObject.php b/rules/zend-to-symfony/src/ValueObject/RouteValueObject.php index 393c20834f9e..3d767d87a8bd 100644 --- a/rules/zend-to-symfony/src/ValueObject/RouteValueObject.php +++ b/rules/zend-to-symfony/src/ValueObject/RouteValueObject.php @@ -71,7 +71,6 @@ private function getPath(): string $path = '/' . $controllerPath . '/' . $methodPath; $path = strtolower($path); - // @todo solve required/optional/type of params foreach ($this->params as $param) { $path .= '/{' . $param . '}'; } diff --git a/src/Application/FileProcessor.php b/src/Application/FileProcessor.php index 6a8d389fa9b9..06d2b7d540e3 100644 --- a/src/Application/FileProcessor.php +++ b/src/Application/FileProcessor.php @@ -111,8 +111,6 @@ public function parseFileInfoToLocalCache(SmartFileInfo $smartFileInfo): void // store tokens by absolute path, so we don't have to print them right now $this->tokensByFilePath[$smartFileInfo->getRealPath()] = [$newStmts, $oldStmts, $oldTokens]; - - // @todo use filesystem cache to save parsing? } public function printToFile(SmartFileInfo $smartFileInfo): string diff --git a/src/PhpParser/Node/Manipulator/ClassDependencyManipulator.php b/src/PhpParser/Node/Manipulator/ClassDependencyManipulator.php index de71e8265581..7bdb8ab5fdb9 100644 --- a/src/PhpParser/Node/Manipulator/ClassDependencyManipulator.php +++ b/src/PhpParser/Node/Manipulator/ClassDependencyManipulator.php @@ -63,8 +63,6 @@ public function __construct( public function addConstructorDependency(Class_ $classNode, string $name, ?Type $type): void { - // add property - // @todo should be factory $this->classInsertManipulator->addPropertyToClass($classNode, $name, $type); $propertyAssignNode = $this->nodeFactory->createPropertyAssignment($name); diff --git a/src/PhpParser/Node/Manipulator/ClassInsertManipulator.php b/src/PhpParser/Node/Manipulator/ClassInsertManipulator.php index 4504dc214f95..c786ef0d1172 100644 --- a/src/PhpParser/Node/Manipulator/ClassInsertManipulator.php +++ b/src/PhpParser/Node/Manipulator/ClassInsertManipulator.php @@ -140,7 +140,6 @@ private function hasClassConstant(Class_ $class, string $constantName) } /** - * @todo simplify * Waits on https://github.com/nikic/PHP-Parser/pull/646 */ private function hasClassProperty(Class_ $classNode, string $name): bool diff --git a/src/PhpParser/Node/Manipulator/ClassMethodAssignManipulator.php b/src/PhpParser/Node/Manipulator/ClassMethodAssignManipulator.php index f9e843fb55d3..e9a8154eb754 100644 --- a/src/PhpParser/Node/Manipulator/ClassMethodAssignManipulator.php +++ b/src/PhpParser/Node/Manipulator/ClassMethodAssignManipulator.php @@ -157,7 +157,6 @@ private function filterOutReferencedVariables(array $variableAssigns, ClassMetho $parentNode = $parentNode->getAttribute(AttributeKey::PARENT_NODE); } - // @todo improve, possibly extract to own services if (! $parentNode instanceof FuncCall) { return null; } diff --git a/src/PhpParser/Printer/BetterStandardPrinter.php b/src/PhpParser/Printer/BetterStandardPrinter.php index 04ea84d8185d..2f9a029a5567 100644 --- a/src/PhpParser/Printer/BetterStandardPrinter.php +++ b/src/PhpParser/Printer/BetterStandardPrinter.php @@ -418,9 +418,6 @@ private function removeComments(string $printerNode): string return Strings::replace($printerNode, '#\/\/(.*?)$#m'); } - /** - * @todo decopule - */ private function moveCommentsFromAttributeObjectToCommentsAttribute(array $nodes): void { // move phpdoc from node to "comment" attribute diff --git a/src/Rector/Argument/ArgumentDefaultValueReplacerRector.php b/src/Rector/Argument/ArgumentDefaultValueReplacerRector.php index 13a146d17654..e68ef883dc9f 100644 --- a/src/Rector/Argument/ArgumentDefaultValueReplacerRector.php +++ b/src/Rector/Argument/ArgumentDefaultValueReplacerRector.php @@ -107,8 +107,6 @@ private function processReplaces(Node $node, array $replaces): Node if (! isset($node->params[$position])) { continue; } - - // @todo } elseif (isset($node->args[$position])) { $this->processArgs($node, $position, $oldToNewValues); } diff --git a/utils/documentation-generator/src/Command/DumpNodesCommand.php b/utils/documentation-generator/src/Command/DumpNodesCommand.php index 8f68ecb575d8..01ff918ffd0f 100644 --- a/utils/documentation-generator/src/Command/DumpNodesCommand.php +++ b/utils/documentation-generator/src/Command/DumpNodesCommand.php @@ -403,9 +403,6 @@ protected function execute(InputInterface $input, OutputInterface $output): int trim($this->betterStandardPrinter->print($node)), true )); - - // @todo print also the node structure, how it was made! basically 1:1 how it was created here; so people have the idea what everything they can/need put in it - // @todo maybe show naked + full use + printed version :) } }