Skip to content

Commit 625f44e

Browse files
authored
[type-declaration-docblocks] Add AddReturnDocblockForArrayDimAssignedObjectRector (#7302)
* [type-declaration-docblocks] Add AddReturnDocblockForArrayDimAssignedObjectRector * fixup! [type-declaration-docblocks] Add AddReturnDocblockForArrayDimAssignedObjectRector * cs
1 parent 5abdf75 commit 625f44e

15 files changed

Lines changed: 467 additions & 7 deletions

File tree

config/set/type-declaration-docblocks.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Rector\TypeDeclarationDocblocks\Rector\Class_\DocblockVarFromParamDocblockInConstructorRector;
1111
use Rector\TypeDeclarationDocblocks\Rector\ClassMethod\AddParamArrayDocblockFromDataProviderRector;
1212
use Rector\TypeDeclarationDocblocks\Rector\ClassMethod\AddParamArrayDocblockFromDimFetchAccessRector;
13+
use Rector\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector;
1314
use Rector\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForCommonObjectDenominatorRector;
1415
use Rector\TypeDeclarationDocblocks\Rector\ClassMethod\DocblockGetterReturnArrayFromPropertyDocblockVarRector;
1516
use Rector\TypeDeclarationDocblocks\Rector\ClassMethod\DocblockReturnArrayFromDirectArrayInstanceRector;
@@ -32,6 +33,7 @@
3233
AddReturnArrayDocblockBasedOnArrayMapRector::class,
3334
AddReturnDocblockForScalarArrayFromAssignsRector::class,
3435
DocblockReturnArrayFromDirectArrayInstanceRector::class,
36+
AddReturnDocblockForArrayDimAssignedObjectRector::class,
3537

3638
// tests
3739
AddParamArrayDocblockFromDataProviderRector::class,
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\AddReturnDocblockForArrayDimAssignedObjectRector;
6+
7+
use Iterator;
8+
use PHPUnit\Framework\Attributes\DataProvider;
9+
use Rector\Testing\PHPUnit\AbstractRectorTestCase;
10+
11+
final class AddReturnDocblockForArrayDimAssignedObjectRectorTest 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,44 @@
1+
<?php
2+
3+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Fixture;
4+
5+
use Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Source\SomeItem;
6+
7+
final class AssignDimFetch
8+
{
9+
public function provide(array $keys): array
10+
{
11+
$items = [];
12+
foreach ($keys as $key) {
13+
$items[] = new SomeItem($key);
14+
}
15+
16+
return $items;
17+
}
18+
}
19+
20+
?>
21+
-----
22+
<?php
23+
24+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Fixture;
25+
26+
use Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Source\SomeItem;
27+
28+
final class AssignDimFetch
29+
{
30+
/**
31+
* @return \Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Source\SomeItem[]
32+
*/
33+
public function provide(array $keys): array
34+
{
35+
$items = [];
36+
foreach ($keys as $key) {
37+
$items[] = new SomeItem($key);
38+
}
39+
40+
return $items;
41+
}
42+
}
43+
44+
?>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
3+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Fixture;
4+
5+
use Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Source\SomeItem;
6+
7+
final class IncludeMethodDimFetch
8+
{
9+
public function provide(array $keys): array
10+
{
11+
$items = [];
12+
foreach ($keys as $key) {
13+
$items[] = $this->createSomeItem();
14+
}
15+
16+
return $items;
17+
}
18+
19+
private function createSomeItem(): SomeItem
20+
{
21+
return new SomeItem();
22+
}
23+
}
24+
25+
?>
26+
-----
27+
<?php
28+
29+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Fixture;
30+
31+
use Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Source\SomeItem;
32+
33+
final class IncludeMethodDimFetch
34+
{
35+
/**
36+
* @return \Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Source\SomeItem[]
37+
*/
38+
public function provide(array $keys): array
39+
{
40+
$items = [];
41+
foreach ($keys as $key) {
42+
$items[] = $this->createSomeItem();
43+
}
44+
45+
return $items;
46+
}
47+
48+
private function createSomeItem(): SomeItem
49+
{
50+
return new SomeItem();
51+
}
52+
}
53+
54+
?>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Fixture;
4+
5+
use Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Source\SomeItem;
6+
7+
final class SkipDefaultAssign
8+
{
9+
public function provide(array $keys): array
10+
{
11+
$items = [1000];
12+
foreach ($keys as $key) {
13+
$items[] = new SomeItem($key);
14+
}
15+
16+
return $items;
17+
}
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Fixture;
4+
5+
use Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Source\SomeItem;
6+
7+
final class SkipDimValue
8+
{
9+
public function provide(array $keys): array
10+
{
11+
$items = [];
12+
foreach ($keys as $key) {
13+
$items[1000] = new SomeItem($key);
14+
}
15+
16+
return $items;
17+
}
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Fixture;
4+
5+
use Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Source\SomeItem;
6+
7+
final class SkipDocblockReturn
8+
{
9+
public function provide(array $keys): array
10+
{
11+
$items = [];
12+
foreach ($keys as $key) {
13+
$items[] = $this->createSomeItem();
14+
}
15+
16+
return $items;
17+
}
18+
19+
/**
20+
* @return FakeItem
21+
*/
22+
private function createSomeItem()
23+
{
24+
return new SomeItem();
25+
}
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Fixture;
4+
5+
use Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Source\SomeItem;
6+
7+
final class SkipPropertyFetchInCaseOfAnotherAssign
8+
{
9+
public function provide(array $keys): array
10+
{
11+
$this->items = [];
12+
foreach ($keys as $key) {
13+
$this->items[] = new SomeItem($key);
14+
}
15+
16+
return $this->items;
17+
}
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\AddReturnDocblockForArrayDimAssignedObjectRector\Source;
4+
5+
final class SomeItem
6+
{
7+
}
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\AddReturnDocblockForArrayDimAssignedObjectRector;
7+
8+
return RectorConfig::configure()
9+
->withRules([AddReturnDocblockForArrayDimAssignedObjectRector::class]);

0 commit comments

Comments
 (0)