From 97932a59bd79188042a0c4d2c308976e46760fff Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 31 May 2018 17:49:19 +0200 Subject: [PATCH] [MagicMethodRector] decouple dependency on specific class --- src/Rector/Contrib/Nette/Utils/MagicMethodRector.php | 11 +++++++++-- .../Utils/MagicMethodRector/Correct/correct.php.inc | 4 ++-- .../Utils/MagicMethodRector/Correct/correct2.php.inc | 4 ++-- .../Utils/MagicMethodRector/MagicMethodRectorTest.php | 4 ---- .../Utils/MagicMethodRector/Source/SomeObject.php | 8 ++++++++ .../Nette/Utils/MagicMethodRector/Wrong/wrong.php.inc | 4 ++-- .../Utils/MagicMethodRector/Wrong/wrong2.php.inc | 4 ++-- .../Contrib/Nette/Utils/MagicMethodRector/config.yml | 4 +++- 8 files changed, 28 insertions(+), 15 deletions(-) create mode 100644 tests/Rector/Contrib/Nette/Utils/MagicMethodRector/Source/SomeObject.php diff --git a/src/Rector/Contrib/Nette/Utils/MagicMethodRector.php b/src/Rector/Contrib/Nette/Utils/MagicMethodRector.php index bf5d539e911..6ef32dd9cb8 100644 --- a/src/Rector/Contrib/Nette/Utils/MagicMethodRector.php +++ b/src/Rector/Contrib/Nette/Utils/MagicMethodRector.php @@ -47,18 +47,25 @@ final class MagicMethodRector extends AbstractRector */ private $nodeTypeResolver; + /** + * @var string + */ + private $parentClass; + public function __construct( MethodBuilder $methodBuilder, DocBlockAnalyzer $docBlockAnalyzer, SmartClassReflector $smartClassReflector, MagicMethodMatcher $magicMethodMatcher, - NodeTypeResolver $nodeTypeResolver + NodeTypeResolver $nodeTypeResolver, + string $parentClass = 'Nette\Object' ) { $this->methodBuilder = $methodBuilder; $this->docBlockAnalyzer = $docBlockAnalyzer; $this->smartClassReflector = $smartClassReflector; $this->magicMethodMatcher = $magicMethodMatcher; $this->nodeTypeResolver = $nodeTypeResolver; + $this->parentClass = $parentClass; } public function getDefinition(): RectorDefinition @@ -151,6 +158,6 @@ CODE_SAMPLE { $classNodeTypes = $this->nodeTypeResolver->resolve($classNode); - return in_array('Nette\Object', $classNodeTypes, true); + return in_array($this->parentClass, $classNodeTypes, true); } } diff --git a/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/Correct/correct.php.inc b/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/Correct/correct.php.inc index 399283ee20b..a3c25e065bb 100644 --- a/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/Correct/correct.php.inc +++ b/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/Correct/correct.php.inc @@ -2,9 +2,9 @@ namespace SomeNamespace; -use Nette\Object; +use Rector\Tests\Rector\Contrib\Nette\Utils\MagicMethodRector\Source\SomeObject; -class SomeClassExtendingNetteObject extends Object +class SomeClassExtendingNetteObject extends SomeObject { private $value; private $anotherValue; diff --git a/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/Correct/correct2.php.inc b/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/Correct/correct2.php.inc index 7283756645e..c0cd1f251e2 100644 --- a/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/Correct/correct2.php.inc +++ b/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/Correct/correct2.php.inc @@ -2,9 +2,9 @@ namespace SomeNamespace; -use Nette\Object; +use Rector\Tests\Rector\Contrib\Nette\Utils\MagicMethodRector\Source\SomeObject; -class SomeClassExtendingNetteObject2 extends Object +class SomeClassExtendingNetteObject2 extends SomeObject { public $name; public $enabled; diff --git a/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/MagicMethodRectorTest.php b/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/MagicMethodRectorTest.php index 0fd8ca0d046..151e814a3b9 100644 --- a/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/MagicMethodRectorTest.php +++ b/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/MagicMethodRectorTest.php @@ -15,10 +15,6 @@ final class MagicMethodRectorTest extends AbstractRectorTestCase */ public function test(string $wrong, string $fixed): void { - if (PHP_VERSION >= '7.2.0') { - $this->markTestSkipped('This test needs PHP 7.1 or lower.'); - } - $this->doTestFileMatchesExpectedContent($wrong, $fixed); } diff --git a/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/Source/SomeObject.php b/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/Source/SomeObject.php new file mode 100644 index 00000000000..d34bb73b44f --- /dev/null +++ b/tests/Rector/Contrib/Nette/Utils/MagicMethodRector/Source/SomeObject.php @@ -0,0 +1,8 @@ +