diff --git a/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockNamespaceRenamer.php b/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockNamespaceRenamer.php deleted file mode 100644 index 1f536a803b0..00000000000 --- a/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockNamespaceRenamer.php +++ /dev/null @@ -1,70 +0,0 @@ - $oldToNewNamespaces - */ - public function renameFullyQualifiedNamespace( - Property|ClassMethod|Function_|Expression|ClassLike $node, - array $oldToNewNamespaces - ): ?Node { - $phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node); - - $phpDocNodeTraverser = new PhpDocNodeTraverser(); - $phpDocNodeTraverser->traverseWithCallable( - $phpDocInfo->getPhpDocNode(), - '', - function (DocNode $docNode) use ($oldToNewNamespaces): ?DocNode { - if (! $docNode instanceof IdentifierTypeNode) { - return null; - } - - $trimmedName = ltrim($docNode->name, '\\'); - - if ($docNode->name === $trimmedName) { - return null; - } - - $renamedNamespaceValueObject = $this->namespaceMatcher->matchRenamedNamespace( - $trimmedName, - $oldToNewNamespaces - ); - if (! $renamedNamespaceValueObject instanceof RenamedNamespace) { - return null; - } - - return new IdentifierTypeNode('\\' . $renamedNamespaceValueObject->getNameInNewNamespace()); - } - ); - - if (! $phpDocInfo->hasChanged()) { - return null; - } - - return $node; - } -} diff --git a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture.php.inc b/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture.php.inc deleted file mode 100644 index df8f8aaa423..00000000000 --- a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture.php.inc +++ /dev/null @@ -1,37 +0,0 @@ - ------ - diff --git a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture2.php.inc b/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture2.php.inc deleted file mode 100644 index b5c8d138eba..00000000000 --- a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture2.php.inc +++ /dev/null @@ -1,29 +0,0 @@ - ------ - diff --git a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture3.php.inc b/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture3.php.inc deleted file mode 100644 index 0ca435556d4..00000000000 --- a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture3.php.inc +++ /dev/null @@ -1,31 +0,0 @@ - ------ - diff --git a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture5.php.inc b/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture5.php.inc deleted file mode 100644 index 212b843ab7b..00000000000 --- a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture5.php.inc +++ /dev/null @@ -1,27 +0,0 @@ - ------ - diff --git a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture6.php.inc b/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture6.php.inc deleted file mode 100644 index 954a396bc73..00000000000 --- a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/fixture6.php.inc +++ /dev/null @@ -1,27 +0,0 @@ - ------ - diff --git a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_param.php.inc b/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_param.php.inc deleted file mode 100644 index c5b04c4ae4c..00000000000 --- a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_param.php.inc +++ /dev/null @@ -1,37 +0,0 @@ - ------ - diff --git a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_return.php.inc b/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_return.php.inc deleted file mode 100644 index 67ad982a446..00000000000 --- a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_return.php.inc +++ /dev/null @@ -1,37 +0,0 @@ - ------ - diff --git a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_return_array.php.inc b/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_return_array.php.inc deleted file mode 100644 index b60b58ff7c4..00000000000 --- a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_return_array.php.inc +++ /dev/null @@ -1,37 +0,0 @@ - ------ - diff --git a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_union.php.inc b/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_union.php.inc deleted file mode 100644 index ac2cec203f5..00000000000 --- a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_union.php.inc +++ /dev/null @@ -1,39 +0,0 @@ - ------ - diff --git a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_var.php.inc b/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_var.php.inc deleted file mode 100644 index b1a8204d5b3..00000000000 --- a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/rename_namespace_docblock_var.php.inc +++ /dev/null @@ -1,39 +0,0 @@ - ------ - diff --git a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/skip_already_changed.php.inc b/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/skip_already_changed.php.inc deleted file mode 100644 index 4f51fedba75..00000000000 --- a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/Fixture/skip_already_changed.php.inc +++ /dev/null @@ -1,11 +0,0 @@ -doTestFile($filePath); - } - - public static function provideData(): Iterator - { - return self::yieldFilesFromDirectory(__DIR__ . '/Fixture'); - } - - public function provideConfigFilePath(): string - { - return __DIR__ . '/config/configured_rule.php'; - } -} diff --git a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/config/configured_rule.php b/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/config/configured_rule.php deleted file mode 100644 index 17e15928fc8..00000000000 --- a/rules-tests/Renaming/Rector/Namespace_/RenameNamespaceRector/config/configured_rule.php +++ /dev/null @@ -1,18 +0,0 @@ -ruleWithConfiguration(RenameNamespaceRector::class, [ - 'OldNamespace' => 'NewNamespace', - 'OldNamespaceWith\OldSplitNamespace' => 'NewNamespaceWith\NewSplitNamespace', - 'Old\Long\AnyNamespace' => 'Short\AnyNamespace', - 'PHPUnit_Framework_' => 'PHPUnit\Framework', - 'Foo\Bar' => 'Foo\Tmp', - 'App\Repositories' => 'App\Repositories\Example', - ]); -}; diff --git a/rules/CodeQuality/Rector/If_/SimplifyIfElseToTernaryRector.php b/rules/CodeQuality/Rector/If_/SimplifyIfElseToTernaryRector.php index b34c7e4000a..216b6384b8c 100644 --- a/rules/CodeQuality/Rector/If_/SimplifyIfElseToTernaryRector.php +++ b/rules/CodeQuality/Rector/If_/SimplifyIfElseToTernaryRector.php @@ -102,22 +102,22 @@ public function refactor(Node $node): ?Node return null; } - $ternaryIf = $this->resolveOnlyStmtAssignExpr($node->stmts); - $ternaryElse = $this->resolveOnlyStmtAssignExpr($node->else->stmts); - if (! $ternaryIf instanceof Expr) { + $ternaryIfExpr = $this->resolveOnlyStmtAssignExpr($node->stmts); + $expr = $this->resolveOnlyStmtAssignExpr($node->else->stmts); + if (! $ternaryIfExpr instanceof Expr) { return null; } - if (! $ternaryElse instanceof Expr) { + if (! $expr instanceof Expr) { return null; } // has nested ternary → skip, it's super hard to read - if ($this->haveNestedTernary([$node->cond, $ternaryIf, $ternaryElse])) { + if ($this->haveNestedTernary([$node->cond, $ternaryIfExpr, $expr])) { return null; } - $ternary = new Ternary($node->cond, $ternaryIf, $ternaryElse); + $ternary = new Ternary($node->cond, $ternaryIfExpr, $expr); $assign = new Assign($ifAssignVarExpr, $ternary); // do not create super long lines diff --git a/rules/Naming/NamespaceMatcher.php b/rules/Naming/NamespaceMatcher.php deleted file mode 100644 index a24b7abb95e..00000000000 --- a/rules/Naming/NamespaceMatcher.php +++ /dev/null @@ -1,31 +0,0 @@ - $newNamespace) { - if ($name === $oldNamespace) { - return new RenamedNamespace($name, $oldNamespace, $newNamespace); - } - - if (str_starts_with($name, $oldNamespace . '\\')) { - return new RenamedNamespace($name, $oldNamespace, $newNamespace); - } - } - - return null; - } -} diff --git a/rules/Renaming/Rector/Namespace_/RenameNamespaceRector.php b/rules/Renaming/Rector/Namespace_/RenameNamespaceRector.php deleted file mode 100644 index 47872108cea..00000000000 --- a/rules/Renaming/Rector/Namespace_/RenameNamespaceRector.php +++ /dev/null @@ -1,193 +0,0 @@ -> - */ - private const ONLY_CHANGE_DOCBLOCK_NODE = [ - Property::class, - ClassMethod::class, - Function_::class, - Expression::class, - ClassLike::class, - ]; - - /** - * @var array - */ - private array $oldToNewNamespaces = []; - - /** - * @var array - */ - private array $isChangedInNamespaces = []; - - public function __construct( - private readonly NamespaceMatcher $namespaceMatcher, - private readonly DocBlockNamespaceRenamer $docBlockNamespaceRenamer - ) { - } - - public function getRuleDefinition(): RuleDefinition - { - return new RuleDefinition('Replaces old namespace by new one.', [ - new ConfiguredCodeSample( - '$someObject = new SomeOldNamespace\SomeClass;', - '$someObject = new SomeNewNamespace\SomeClass;', - [ - 'SomeOldNamespace' => 'SomeNewNamespace', - ] - ), - ]); - } - - /** - * @return array> - */ - public function getNodeTypes(): array - { - return [Namespace_::class, Use_::class, Name::class, ...self::ONLY_CHANGE_DOCBLOCK_NODE]; - } - - /** - * @param Namespace_|Use_|Name|Property|ClassMethod|Function_|Expression|ClassLike $node - */ - public function refactor(Node $node): ?Node - { - if (in_array($node::class, self::ONLY_CHANGE_DOCBLOCK_NODE, true)) { - /** @var Property|ClassMethod|Function_|Expression|ClassLike $node */ - return $this->docBlockNamespaceRenamer->renameFullyQualifiedNamespace($node, $this->oldToNewNamespaces); - } - - /** @var Namespace_|Use_|Name $node */ - $name = $this->getName($node); - if ($name === null) { - return null; - } - - $renamedNamespaceValueObject = $this->namespaceMatcher->matchRenamedNamespace($name, $this->oldToNewNamespaces); - if (! $renamedNamespaceValueObject instanceof RenamedNamespace) { - return null; - } - - if ($this->isClassFullyQualifiedName($node)) { - return null; - } - - if ($node instanceof Namespace_) { - $newName = $renamedNamespaceValueObject->getNameInNewNamespace(); - $node->name = new Name($newName); - $this->isChangedInNamespaces[$newName] = true; - - return $node; - } - - if ($node instanceof Use_) { - $newName = $renamedNamespaceValueObject->getNameInNewNamespace(); - $node->uses[0]->name = new Name($newName); - - return $node; - } - - $parentNode = $node->getAttribute(AttributeKey::PARENT_NODE); - // already resolved above - if ($parentNode instanceof Namespace_) { - return null; - } - - if (! $parentNode instanceof UseUse) { - return $this->processFullyQualified($node, $renamedNamespaceValueObject); - } - - if ($parentNode->type !== Use_::TYPE_UNKNOWN) { - return $this->processFullyQualified($node, $renamedNamespaceValueObject); - } - - return null; - } - - /** - * @param mixed[] $configuration - */ - public function configure(array $configuration): void - { - Assert::allStringNotEmpty(array_keys($configuration)); - Assert::allStringNotEmpty($configuration); - - /** @var array $configuration */ - $this->oldToNewNamespaces = $configuration; - } - - private function processFullyQualified(Name $name, RenamedNamespace $renamedNamespace): ?FullyQualified - { - if (str_starts_with($name->toString(), $renamedNamespace->getNewNamespace() . '\\')) { - return null; - } - - $nameInNewNamespace = $renamedNamespace->getNameInNewNamespace(); - - $values = array_values($this->oldToNewNamespaces); - if (! isset($this->isChangedInNamespaces[$nameInNewNamespace])) { - return new FullyQualified($nameInNewNamespace); - } - - if (! in_array($nameInNewNamespace, $values, true)) { - return new FullyQualified($nameInNewNamespace); - } - - return null; - } - - /** - * Checks for "new \ClassNoNamespace;" - * This should be skipped, not a namespace. - */ - private function isClassFullyQualifiedName(Node $node): bool - { - $parentNode = $node->getAttribute(AttributeKey::PARENT_NODE); - if (! $parentNode instanceof Node) { - return false; - } - - if (! $parentNode instanceof New_) { - return false; - } - - /** @var FullyQualified $fullyQualifiedNode */ - $fullyQualifiedNode = $parentNode->class; - - $newClassName = $fullyQualifiedNode->toString(); - - return array_key_exists($newClassName, $this->oldToNewNamespaces); - } -} diff --git a/rules/Renaming/ValueObject/RenamedNamespace.php b/rules/Renaming/ValueObject/RenamedNamespace.php deleted file mode 100644 index 01f59fa4bde..00000000000 --- a/rules/Renaming/ValueObject/RenamedNamespace.php +++ /dev/null @@ -1,34 +0,0 @@ -newNamespace === $this->currentName) { - return $this->currentName; - } - - return str_replace($this->oldNamespace, $this->newNamespace, $this->currentName); - } - - public function getNewNamespace(): string - { - return $this->newNamespace; - } -}