Skip to content

Commit 635a328

Browse files
committed
[tdd] Add AddReturnDocblockForDimFetchArrayFromAssignsRector
1 parent 9116b3e commit 635a328

File tree

8 files changed

+397
-0
lines changed

8 files changed

+397
-0
lines changed

phpstan.neon

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,3 +464,8 @@ parameters:
464464
-
465465
path: src/PhpParser/Node/CustomNode/FileWithoutNamespace.php
466466
identifier: symplify.forbiddenExtendOfNonAbstractClass
467+
468+
# false positive
469+
-
470+
identifier: phpstanApi.varTagAssumption
471+
path: rules/TypeDeclarationDocblocks/Rector/ClassMethod/AddReturnDocblockForDimFetchArrayFromAssignsRector.php
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForDimFetchArrayFromAssignsRector;
6+
7+
use Iterator;
8+
use PHPUnit\Framework\Attributes\DataProvider;
9+
use Rector\Testing\PHPUnit\AbstractRectorTestCase;
10+
11+
final class AddReturnDocblockForDimFetchArrayFromAssignsRectorTest 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+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForDimFetchArrayFromAssignsRector\Fixture;
4+
5+
final class ConditionalAssign
6+
{
7+
public function toArray(): array
8+
{
9+
$items = [];
10+
11+
if (mt_rand(0, 1)) {
12+
$items['key'] = 100;
13+
}
14+
15+
return $items;
16+
}
17+
}
18+
19+
?>
20+
-----
21+
<?php
22+
23+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForDimFetchArrayFromAssignsRector\Fixture;
24+
25+
final class ConditionalAssign
26+
{
27+
/**
28+
* @return array<string, int>
29+
*/
30+
public function toArray(): array
31+
{
32+
$items = [];
33+
34+
if (mt_rand(0, 1)) {
35+
$items['key'] = 100;
36+
}
37+
38+
return $items;
39+
}
40+
}
41+
42+
?>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForDimFetchArrayFromAssignsRector\Fixture;
4+
5+
final class MultipleConditionalAssign
6+
{
7+
public function toArray(): array
8+
{
9+
$items = [];
10+
11+
if (mt_rand(0, 1)) {
12+
$items['key'] = 'some_string';
13+
}
14+
15+
if (mt_rand(0, 1)) {
16+
$items['another_key'] = 500;
17+
}
18+
19+
return $items;
20+
}
21+
}
22+
23+
?>
24+
-----
25+
<?php
26+
27+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForDimFetchArrayFromAssignsRector\Fixture;
28+
29+
final class MultipleConditionalAssign
30+
{
31+
/**
32+
* @return array<string, string|int>
33+
*/
34+
public function toArray(): array
35+
{
36+
$items = [];
37+
38+
if (mt_rand(0, 1)) {
39+
$items['key'] = 'some_string';
40+
}
41+
42+
if (mt_rand(0, 1)) {
43+
$items['another_key'] = 500;
44+
}
45+
46+
return $items;
47+
}
48+
}
49+
50+
?>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForDimFetchArrayFromAssignsRector\Fixture;
4+
5+
final class SomeItem
6+
{
7+
public function toArray(): array
8+
{
9+
$items = [];
10+
$items['key'] = 100;
11+
12+
return $items;
13+
}
14+
}
15+
16+
?>
17+
-----
18+
<?php
19+
20+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForDimFetchArrayFromAssignsRector\Fixture;
21+
22+
final class SomeItem
23+
{
24+
/**
25+
* @return array<string, int>
26+
*/
27+
public function toArray(): array
28+
{
29+
$items = [];
30+
$items['key'] = 100;
31+
32+
return $items;
33+
}
34+
}
35+
36+
?>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Rector\Config\RectorConfig;
6+
use Rector\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForDimFetchArrayFromAssignsRector;
7+
8+
return RectorConfig::configure()
9+
->withRules([AddReturnDocblockForDimFetchArrayFromAssignsRector::class]);

0 commit comments

Comments
 (0)