From 1a44e5c084f85cb6b3057062ac7322eceeae8d62 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 26 Sep 2019 00:52:31 +0200 Subject: [PATCH] [Restoration] Add MissingClassConstantReferenceToStringRector --- ...ngClassConstantReferenceToStringRector.php | 73 +++++++++++++++++++ .../Fixture/fixture.php.inc | 31 ++++++++ ...assConstantReferenceToStringRectorTest.php | 30 ++++++++ 3 files changed, 134 insertions(+) create mode 100644 packages/Restoration/src/Rector/ClassConstFetch/MissingClassConstantReferenceToStringRector.php create mode 100644 packages/Restoration/tests/Rector/ClassConstFetch/MissingClassConstantReferenceToStringRector/Fixture/fixture.php.inc create mode 100644 packages/Restoration/tests/Rector/ClassConstFetch/MissingClassConstantReferenceToStringRector/MissingClassConstantReferenceToStringRectorTest.php 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; + } +}