Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace Rector\Tests\DeadCode\Rector\ClassMethod\RemoveUselessUnionReturnDocblockRector\Fixture;

final class SkipNullableArrayNative
{
/**
* @return mixed[]|null
*/
public function run(): ?array
{
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace Rector\Tests\DeadCode\Rector\ClassMethod\RemoveUselessUnionReturnDocblockRector\Fixture;

final class SkipUnionWithArrayNative
{
/**
* @return string|mixed[]|int
*/
public function run(): string|array|int
{
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector\Fixture;

class NarrowBoolToFalse
{
/**
* @return bool|string[]
*/
public function run(): false|array
{
return false;
}
}

?>
-----
<?php

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector\Fixture;

class NarrowBoolToFalse
{
/**
* @return false|string[]
*/
public function run(): false|array
{
return false;
}
}

?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector\Fixture;

class NarrowBoolToTrue
{
/**
* @return bool|int[]
*/
public function run(): true|array
{
return true;
}
}

?>
-----
<?php

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector\Fixture;

class NarrowBoolToTrue
{
/**
* @return true|int[]
*/
public function run(): true|array
{
return true;
}
}

?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector\Fixture;

/**
* @return bool|string[]
*/
function narrowFunctionReturn(): false|array
{
return false;
}

?>
-----
<?php

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector\Fixture;

/**
* @return false|string[]
*/
function narrowFunctionReturn(): false|array
{
return false;
}

?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector\Fixture;

class SkipAlreadyHasConstant
{
/**
* @return false|bool|string[]
*/
public function run(): false|array
{
return false;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector\Fixture;

class SkipNativeBool
{
/**
* @return bool|string[]
*/
public function run(): bool|array
{
return false;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector\Fixture;

class SkipNativeFalseAndTrue
{
/**
* @return bool|string[]
*/
public function run(): false|true|array
{
return false;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector\Fixture;

class SkipNoBoolInDocblock
{
/**
* @return false|string[]
*/
public function run(): false|array
{
return false;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector\Fixture;

class SkipNoDocblock
{
public function run(): false|array
{
return false;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector\Fixture;

class SkipNullableArrayNoBool
{
/**
* @return mixed[]|null
*/
private function extractConstantArrayTypeValue(array $values): ?array
{
return $values;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector\Fixture;

class SkipUnionWithoutBool
{
/**
* @return string|array<mixed>|int
*/
private function parseValue(string $value): string|array|int
{
return $value;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

declare(strict_types=1);

namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector;

use Iterator;
use PHPUnit\Framework\Attributes\DataProvider;
use Rector\Testing\PHPUnit\AbstractRectorTestCase;

final class NarrowBoolDocblockReturnTypeRectorTest extends AbstractRectorTestCase
{
#[DataProvider('provideData')]
public function test(string $filePath): void
{
$this->doTestFile($filePath);
}

public static function provideData(): Iterator
{
return self::yieldFilesFromDirectory(__DIR__ . '/Fixture');
}

public function provideConfigFilePath(): string
{
return __DIR__ . '/config/configured_rule.php';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;
use Rector\TypeDeclaration\Rector\ClassMethod\NarrowBoolDocblockReturnTypeRector;

return static function (RectorConfig $rectorConfig): void {
$rectorConfig->rule(NarrowBoolDocblockReturnTypeRector::class);
};
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ public function refactor(Node $node): ?Node

$nativeReturnType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($node->returnType);

// keep array native type, the docblock may carry element types
if ($nativeReturnType->isArray()->yes()) {
// keep array-involving native type (array, ?array, union with array), the docblock may carry element types
if (! $nativeReturnType->isArray()->no()) {
return null;
}

Expand Down
Loading
Loading