diff --git a/packages/Restoration/src/Rector/ClassConstFetch/MissingClassConstantReferenceToStringRector.php b/packages/Restoration/src/Rector/ClassConstFetch/MissingClassConstantReferenceToStringRector.php new file mode 100644 index 000000000000..0e26ea910e0f --- /dev/null +++ b/packages/Restoration/src/Rector/ClassConstFetch/MissingClassConstantReferenceToStringRector.php @@ -0,0 +1,73 @@ +isName($node->name, 'class')) { + return null; + } + + $referencedClass = $this->getName($node->class); + if ($referencedClass === null) { + return null; + } + + if (ClassExistenceStaticHelper::doesClassLikeExist($referencedClass)) { + return null; + } + + return new String_($referencedClass); + } +} diff --git a/packages/Restoration/tests/Rector/ClassConstFetch/MissingClassConstantReferenceToStringRector/Fixture/fixture.php.inc b/packages/Restoration/tests/Rector/ClassConstFetch/MissingClassConstantReferenceToStringRector/Fixture/fixture.php.inc new file mode 100644 index 000000000000..1bc97fe39cf3 --- /dev/null +++ b/packages/Restoration/tests/Rector/ClassConstFetch/MissingClassConstantReferenceToStringRector/Fixture/fixture.php.inc @@ -0,0 +1,31 @@ + +----- + diff --git a/packages/Restoration/tests/Rector/ClassConstFetch/MissingClassConstantReferenceToStringRector/MissingClassConstantReferenceToStringRectorTest.php b/packages/Restoration/tests/Rector/ClassConstFetch/MissingClassConstantReferenceToStringRector/MissingClassConstantReferenceToStringRectorTest.php new file mode 100644 index 000000000000..67a6e6f7e0c9 --- /dev/null +++ b/packages/Restoration/tests/Rector/ClassConstFetch/MissingClassConstantReferenceToStringRector/MissingClassConstantReferenceToStringRectorTest.php @@ -0,0 +1,30 @@ +doTestFile($file); + } + + /** + * @return string[] + */ + public function provideDataForTest(): iterable + { + yield [__DIR__ . '/Fixture/fixture.php.inc']; + } + + protected function getRectorClass(): string + { + return MissingClassConstantReferenceToStringRector::class; + } +}