Skip to content

Commit 928f117

Browse files
authored
[CodeQuality] Add AddTraitGetterReturnTypeBasedOnSetterRequiredRector (#671)
* [CodeQuality] Add AddTraitGetterReturnTypeBasedOnSetterRequiredRector * [CodeQuality] Add AddTraitGetterReturnTypeBasedOnSetterRequiredRector * Fix phpstan * Add Required attribute support * cs fix
1 parent 14fcc87 commit 928f117

File tree

7 files changed

+400
-0
lines changed

7 files changed

+400
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Rector\Symfony\Tests\CodeQuality\Rector\Trait_\AddTraitGetterReturnTypeBasedOnSetterRequiredRector;
6+
7+
use Iterator;
8+
use PHPUnit\Framework\Attributes\DataProvider;
9+
use Rector\Testing\PHPUnit\AbstractRectorTestCase;
10+
11+
final class AddTraitGetterReturnTypeBasedOnSetterRequiredRectorTest extends AbstractRectorTestCase
12+
{
13+
#[DataProvider('provideData')]
14+
public function test(string $filePath): void
15+
{
16+
$this->doTestFile($filePath);
17+
}
18+
19+
public static function provideData(): Iterator
20+
{
21+
return self::yieldFilesFromDirectory(__DIR__ . '/Fixture');
22+
}
23+
24+
public function provideConfigFilePath(): string
25+
{
26+
return __DIR__ . '/config/configured_rule.php';
27+
}
28+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
namespace Rector\Symfony\Tests\CodeQuality\Rector\Trait_\AddTraitGetterReturnTypeBasedOnSetterRequiredRector\Fixture;
4+
5+
use stdClass;
6+
7+
trait FlipSetFirst
8+
{
9+
private $service;
10+
11+
/**
12+
* @required
13+
*/
14+
public function setService(stdClass $stdClass)
15+
{
16+
$this->stdClass = $stdClass;
17+
}
18+
19+
public function getService()
20+
{
21+
return $this->service;
22+
}
23+
}
24+
25+
?>
26+
-----
27+
<?php
28+
29+
namespace Rector\Symfony\Tests\CodeQuality\Rector\Trait_\AddTraitGetterReturnTypeBasedOnSetterRequiredRector\Fixture;
30+
31+
use stdClass;
32+
33+
trait FlipSetFirst
34+
{
35+
private $service;
36+
37+
/**
38+
* @required
39+
*/
40+
public function setService(stdClass $stdClass)
41+
{
42+
$this->stdClass = $stdClass;
43+
}
44+
45+
public function getService(): stdClass
46+
{
47+
return $this->service;
48+
}
49+
}
50+
51+
?>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace Rector\Symfony\Tests\CodeQuality\Rector\Trait_\AddTraitGetterReturnTypeBasedOnSetterRequiredRector\Fixture;
4+
5+
use stdClass;
6+
7+
trait SkipAlreadyHasReturnType
8+
{
9+
private $service;
10+
11+
public function getService(): stdClass
12+
{
13+
return $this->service;
14+
}
15+
16+
/**
17+
* @required
18+
*/
19+
public function setService(stdClass $stdClass)
20+
{
21+
$this->stdClass = $stdClass;
22+
}
23+
}
24+
25+
?>
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
namespace Rector\Symfony\Tests\CodeQuality\Rector\Trait_\AddTraitGetterReturnTypeBasedOnSetterRequiredRector\Fixture;
4+
5+
use stdClass;
6+
7+
trait SomeTrait
8+
{
9+
private $service;
10+
11+
public function getService()
12+
{
13+
return $this->service;
14+
}
15+
16+
/**
17+
* @required
18+
*/
19+
public function setService(stdClass $stdClass)
20+
{
21+
$this->stdClass = $stdClass;
22+
}
23+
}
24+
25+
?>
26+
-----
27+
<?php
28+
29+
namespace Rector\Symfony\Tests\CodeQuality\Rector\Trait_\AddTraitGetterReturnTypeBasedOnSetterRequiredRector\Fixture;
30+
31+
use stdClass;
32+
33+
trait SomeTrait
34+
{
35+
private $service;
36+
37+
public function getService(): stdClass
38+
{
39+
return $this->service;
40+
}
41+
42+
/**
43+
* @required
44+
*/
45+
public function setService(stdClass $stdClass)
46+
{
47+
$this->stdClass = $stdClass;
48+
}
49+
}
50+
51+
?>
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
3+
namespace Rector\Symfony\Tests\CodeQuality\Rector\Trait_\AddTraitGetterReturnTypeBasedOnSetterRequiredRector\Fixture;
4+
5+
use stdClass;
6+
use Symfony\Contracts\Service\Attribute\Required;
7+
8+
trait WithRequiredAttribute
9+
{
10+
private $service;
11+
12+
public function getService()
13+
{
14+
return $this->service;
15+
}
16+
17+
#[Required]
18+
public function setService(stdClass $stdClass)
19+
{
20+
$this->stdClass = $stdClass;
21+
}
22+
}
23+
24+
?>
25+
-----
26+
<?php
27+
28+
namespace Rector\Symfony\Tests\CodeQuality\Rector\Trait_\AddTraitGetterReturnTypeBasedOnSetterRequiredRector\Fixture;
29+
30+
use stdClass;
31+
use Symfony\Contracts\Service\Attribute\Required;
32+
33+
trait WithRequiredAttribute
34+
{
35+
private $service;
36+
37+
public function getService(): stdClass
38+
{
39+
return $this->service;
40+
}
41+
42+
#[Required]
43+
public function setService(stdClass $stdClass)
44+
{
45+
$this->stdClass = $stdClass;
46+
}
47+
}
48+
49+
?>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Rector\Config\RectorConfig;
6+
use Rector\Symfony\CodeQuality\Rector\Trait_\AddTraitGetterReturnTypeBasedOnSetterRequiredRector;
7+
8+
return static function (RectorConfig $rectorConfig): void {
9+
$rectorConfig->rule(AddTraitGetterReturnTypeBasedOnSetterRequiredRector::class);
10+
};

0 commit comments

Comments
 (0)