2020use Rector \Core \Configuration \Option ;
2121use Rector \Core \Contract \Rector \PhpRectorInterface ;
2222use Rector \Core \Exclusion \ExclusionManager ;
23+ use Rector \Core \Logging \CurrentRectorProvider ;
2324use Rector \NodeTypeResolver \FileSystem \CurrentFileInfoProvider ;
2425use Rector \NodeTypeResolver \Node \AttributeKey ;
2526use Rector \NodeTypeResolver \PhpDoc \NodeAnalyzer \DocBlockManipulator ;
@@ -85,6 +86,11 @@ abstract class AbstractRector extends NodeVisitorAbstract implements PhpRectorIn
8586 */
8687 protected $ staticTypeMapper ;
8788
89+ /**
90+ * @var CurrentRectorProvider
91+ */
92+ private $ currentRectorProvider ;
93+
8894 /**
8995 * @var string[]
9096 */
@@ -122,7 +128,8 @@ public function autowireAbstractRectorDependencies(
122128 PhpDocInfoPrinter $ phpDocInfoPrinter ,
123129 DocBlockManipulator $ docBlockManipulator ,
124130 StaticTypeMapper $ staticTypeMapper ,
125- ParameterProvider $ parameterProvider
131+ ParameterProvider $ parameterProvider ,
132+ CurrentRectorProvider $ currentRectorProvider
126133 ): void {
127134 $ this ->symfonyStyle = $ symfonyStyle ;
128135 $ this ->phpVersionProvider = $ phpVersionProvider ;
@@ -134,6 +141,7 @@ public function autowireAbstractRectorDependencies(
134141 $ this ->docBlockManipulator = $ docBlockManipulator ;
135142 $ this ->staticTypeMapper = $ staticTypeMapper ;
136143 $ this ->parameterProvider = $ parameterProvider ;
144+ $ this ->currentRectorProvider = $ currentRectorProvider ;
137145 }
138146
139147 /**
@@ -145,6 +153,8 @@ final public function enterNode(Node $node)
145153 return null ;
146154 }
147155
156+ $ this ->currentRectorProvider ->changeCurrentRector ($ this );
157+
148158 // show current Rector class on --debug
149159 if ($ this ->symfonyStyle ->isDebug ()) {
150160 // indented on purpose to improve log nesting under [refactoring]
0 commit comments