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
4 changes: 4 additions & 0 deletions UPGRADING.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Upgrading to the next Rector release

* `TypeMapperInterface::mapToPhpParserNode()` is removed; custom type mappers only map to PHPDoc nodes now. A custom `Type` controls its native declaration by overriding `toNativePhpTypeNode()`.

# Upgrading from Rector 2.2.14 to 2.3

* `FileWithoutNamespace` is deprecated, and replaced by `FileNode` that represents both namespaced and non-namespaced files and allow changes inside
Expand Down
5 changes: 0 additions & 5 deletions phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -284,11 +284,6 @@ parameters:
paths:
- src/NodeTypeResolver/PHPStan/Type/TypeFactory.php

# from mapper interface
-
identifier: return.unusedType
message: '#mapToPhpParserNode\(\) never returns PhpParser\\.* so it can be removed from the return#'

# false positive
-
identifier: return.unusedType
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?php

declare(strict_types=1);

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

final class HasPropertyType
{
/**
* @param mixed $data
*/
public function run($data)
{
if (! isset($data->type)) {
return;
}

if ($data->type === 'value') {
$this->runData($data);
}
}

private function runData($data)
{
}
}
-----
<?php

declare(strict_types=1);

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

final class HasPropertyType
{
/**
* @param mixed $data
*/
public function run($data)
{
if (! isset($data->type)) {
return;
}

if ($data->type === 'value') {
$this->runData($data);
}
}

private function runData(object $data)
{
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ use stdClass;

final class DifferentUsage {
/**
* @param \stdClass[]|\DateTime[] $items
* @param \DateTime[]|\stdClass[] $items
*/
public function process(array $items): void
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ use stdClass;
final class WithArrayFilterAndArrayWalk
{
/**
* @param string[]|\stdClass[] $items
* @param \stdClass[]|string[] $items
*/
public function process(array $items): void
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

declare(strict_types=1);

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

final class ReturnAnonymousClassAndOther
{
public function action()
{
if (rand(0, 1)) {
return new class {};
}

return new static();
}
}
-----
<?php

declare(strict_types=1);

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

final class ReturnAnonymousClassAndOther
{
public function action(): object
{
if (rand(0, 1)) {
return new class {};
}

return new static();
}
}

This file was deleted.

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

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

final class AnonymousClassAndOtherObject
{
public function run()
{
if (rand(0,1)) {
return new SkipAnonymousClassAndOtherObject();
}

return new class {};
}
}
-----
<?php

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

final class AnonymousClassAndOtherObject
{
public function run(): object
{
if (rand(0,1)) {
return new SkipAnonymousClassAndOtherObject();
}

return new class {};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

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

final class AnonymousClassAndOtherObject2
{
public function run()
{
if (rand(0,1)) {
return new SkipAnonymousClassAndOtherObject();
}

$obj = new class {};
return $obj;
}
}
-----
<?php

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

final class AnonymousClassAndOtherObject2
{
public function run(): object
{
if (rand(0,1)) {
return new SkipAnonymousClassAndOtherObject();
}

$obj = new class {};
return $obj;
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ use stdClass;

final class UnionArray
{
public function run($a, $b): null|\DateTime|array
public function run($a, $b): \DateTime|array|null
{
if ($a) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ use stdClass;

final class UnionMulti
{
public function run(): null|\DateTime|\stdClass
public function run(): \DateTime|\stdClass|null
{
if (rand(0, 1)) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\DocblockRetur
class ComplexArray
{
/**
* @return array<string, array<string, int|array<string, string>>|array<string, string|int>|bool>
* @return array<string, array<string, array<string, string>|int|string>|bool>
*/
public function run(): array
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\DocblockRetur
final class AvoidExtremeNesting
{
/**
* @return array<string, int|string|float>
* @return array<string, float|int|string>
*/
public function run(): array
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\DocblockRetur
final class CoverImplicitKey
{
/**
* @return array<int, array<string, string|int>>
* @return array<int, array<string, int|string>>
*/
private static function getExpectedAllOwners(): array
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ final class CoverObjectReturn
private ?\Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\DocblockReturnArrayFromDirectArrayInstanceRector\Source\SomeObjectInDirectArray $item = null;

/**
* @return array<string, \Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\DocblockReturnArrayFromDirectArrayInstanceRector\Source\SomeObjectInDirectArray|int|null>
* @return array<string, int|\Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\DocblockReturnArrayFromDirectArrayInstanceRector\Source\SomeObjectInDirectArray|null>
*/
public function toArray(): array
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ final class RepeatedItemType
) {}

/**
* @return array<string, string|array<string, string|int>>
* @return array<string, array<string, int|string>|string>
*/
public function toRequestPayload(): array
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\DocblockRetur
final class WithDuplicatedNestedArray
{
/**
* @return array<string, bool[]|int[]|string[][]>
* @return array<string, string[][]|bool[]|int[]>
*/
public static function run(): iterable
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ final class CoverMixedAndKnown
}

/**
* @param string[]|mixed[] $items
* @param mixed[] $items
*/
private function run(array $items)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ final class MultipleCallsWithVariousTypes
}

/**
* @param string[]|int[] $items
* @param int[]|string[] $items
*/
private function run(array $items)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ final class UnionObjects
}

/**
* @param \Rector\Tests\TypeDeclarationDocblocks\Rector\Class_\ClassMethodArrayDocblockParamFromLocalCallsRector\Source\SomeReturnedObject[]|\Rector\Tests\TypeDeclarationDocblocks\Rector\Class_\ClassMethodArrayDocblockParamFromLocalCallsRector\Source\AnotherReturnedObject[] $items
* @param \Rector\Tests\TypeDeclarationDocblocks\Rector\Class_\ClassMethodArrayDocblockParamFromLocalCallsRector\Source\AnotherReturnedObject[]|\Rector\Tests\TypeDeclarationDocblocks\Rector\Class_\ClassMethodArrayDocblockParamFromLocalCallsRector\Source\SomeReturnedObject[] $items
*/
private function run(array $items)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class UniqueTypes
}

/**
* @param string[]|int[] $items
* @param int[]|string[] $items
*/
private function run(array $items)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ use stdClass;
class ArrayUnionGenericSameType
{
/**
* @var array<int, class-string<\stdClass>|class-string<\DateTime>>
* @var array<class-string<\DateTime>|class-string<\stdClass>>
*/
private array $dependencies = [
stdClass::class,
Expand Down
Loading
Loading