1414use Rector \Exception \ShouldNotHappenException ;
1515use Rector \PhpParser \Node \CustomNode \FileWithoutNamespace ;
1616use Rector \PhpParser \Node \FileNode ;
17+ use Rector \VersionBonding \ComposerPackageConstraintFilter ;
1718use Rector \VersionBonding \PhpVersionedFilter ;
1819use RectorPrefix202602 \Webmozart \Assert \Assert ;
1920/**
@@ -37,6 +38,10 @@ final class RectorNodeTraverser implements NodeTraverserInterface
3738 * @readonly
3839 */
3940 private PhpVersionedFilter $ phpVersionedFilter ;
41+ /**
42+ * @readonly
43+ */
44+ private ComposerPackageConstraintFilter $ composerPackageConstraintFilter ;
4045 /**
4146 * @readonly
4247 */
@@ -54,10 +59,11 @@ final class RectorNodeTraverser implements NodeTraverserInterface
5459 /**
5560 * @param RectorInterface[] $rectors
5661 */
57- public function __construct (array $ rectors , PhpVersionedFilter $ phpVersionedFilter , ConfigurationRuleFilter $ configurationRuleFilter )
62+ public function __construct (array $ rectors , PhpVersionedFilter $ phpVersionedFilter , ComposerPackageConstraintFilter $ composerPackageConstraintFilter , ConfigurationRuleFilter $ configurationRuleFilter )
5863 {
5964 $ this ->rectors = $ rectors ;
6065 $ this ->phpVersionedFilter = $ phpVersionedFilter ;
66+ $ this ->composerPackageConstraintFilter = $ composerPackageConstraintFilter ;
6167 $ this ->configurationRuleFilter = $ configurationRuleFilter ;
6268 }
6369 public function addVisitor (NodeVisitor $ visitor ): void
@@ -268,8 +274,10 @@ private function prepareNodeVisitors(): void
268274 if ($ this ->areNodeVisitorsPrepared ) {
269275 return ;
270276 }
271- // filer out by version
277+ // filter out by PHP version
272278 $ this ->visitors = $ this ->phpVersionedFilter ->filter ($ this ->rectors );
279+ // filter out by composer package constraint
280+ $ this ->visitors = $ this ->composerPackageConstraintFilter ->filter ($ this ->visitors );
273281 // filter by configuration
274282 $ this ->visitors = $ this ->configurationRuleFilter ->filter ($ this ->visitors );
275283 $ this ->areNodeVisitorsPrepared = \true;
0 commit comments