Skip to content

Commit f7df380

Browse files
committed
[config] add registerDecoratingNodeVisitor()
1 parent 777a06f commit f7df380

2 files changed

Lines changed: 24 additions & 3 deletions

File tree

src/Configuration/RectorConfigBuilder.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@
1818
use Rector\Configuration\Levels\LevelRulesResolver;
1919
use Rector\Configuration\Parameter\SimpleParameterProvider;
2020
use Rector\Console\Notifier;
21+
use Rector\Contract\PhpParser\DecoratingNodeVisitorInterface;
2122
use Rector\Contract\Rector\ConfigurableRectorInterface;
2223
use Rector\Contract\Rector\RectorInterface;
2324
use Rector\Doctrine\Set\DoctrineSetList;
2425
use Rector\Enum\Config\Defaults;
2526
use Rector\Exception\Configuration\InvalidConfigurationException;
27+
use Rector\NodeTypeResolver\PHPStan\Scope\Contract\NodeVisitor\ScopeResolverNodeVisitorInterface;
2628
use Rector\Php\PhpVersionResolver\ComposerJsonPhpVersionResolver;
2729
use Rector\Php80\Rector\Class_\AnnotationToAttributeRector;
2830
use Rector\Php80\ValueObject\AnnotationToAttribute;
@@ -1217,11 +1219,31 @@ public function withTreatClassesAsFinal(bool $isTreatClassesAsFinal = true): sel
12171219

12181220
public function registerService(string $className, ?string $alias = null, ?string $tag = null): self
12191221
{
1222+
// BC layer since 2.2.9
1223+
if ($tag === ScopeResolverNodeVisitorInterface::class) {
1224+
$tag = DecoratingNodeVisitorInterface::class;
1225+
}
1226+
12201227
$this->registerServices[] = new RegisteredService($className, $alias, $tag);
12211228

12221229
return $this;
12231230
}
12241231

1232+
/**
1233+
* DX helper
1234+
* @see https://getrector.com/documentation/creating-a-node-visitor
1235+
*/
1236+
public function registerDecoratingNodeVisitor(string $decoratingNodeVisitorClass): self
1237+
{
1238+
Assert::isAOf($decoratingNodeVisitorClass, DecoratingNodeVisitorInterface::class);
1239+
$this->registerServices[] = new RegisteredService(
1240+
$decoratingNodeVisitorClass,
1241+
null,
1242+
DecoratingNodeVisitorInterface::class
1243+
);
1244+
return $this;
1245+
}
1246+
12251247
public function withDowngradeSets(
12261248
bool $php84 = false,
12271249
bool $php83 = false,

src/NodeTypeResolver/PHPStan/Scope/Contract/NodeVisitor/ScopeResolverNodeVisitorInterface.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@
44

55
namespace Rector\NodeTypeResolver\PHPStan\Scope\Contract\NodeVisitor;
66

7+
use JetBrains\PhpStorm\Deprecated;
78
use PhpParser\NodeVisitor;
8-
use Rector\Contract\PhpParser\DecoratingNodeVisitorInterface;
99

1010
/**
11-
* @deprecated Use
12-
* @see DecoratingNodeVisitorInterface instead
11+
* @deprecated Since 2.2.9. Use \Rector\Contract\PhpParser\DecoratingNodeVisitorInterface instead
1312
*/
1413
interface ScopeResolverNodeVisitorInterface extends NodeVisitor
1514
{

0 commit comments

Comments
 (0)