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,55 @@
<?php

namespace Rector\Tests\TypeDeclarationDocblocks\Rector\Class_\AddReturnDocblockDataProviderRector\Fixture;

use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;

final class OverrideDummyMixedArray extends TestCase
{
#[DataProvider('provideData')]
public function testSomething()
{
}

/**
* @return mixed[]
*/
public static function provideData()
{
return [
[125, 35],
[1252]
];
}
}

?>
-----
<?php

namespace Rector\Tests\TypeDeclarationDocblocks\Rector\Class_\AddReturnDocblockDataProviderRector\Fixture;

use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;

final class OverrideDummyMixedArray extends TestCase
{
#[DataProvider('provideData')]
public function testSomething()
{
}

/**
* @return int[][]
*/
public static function provideData()
{
return [
[125, 35],
[1252]
];
}
}

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

namespace Rector\Tests\TypeDeclarationDocblocks\Rector\Class_\ClassMethodArrayDocblockParamFromLocalCallsRector\Fixture;

final class SkipOverrideDummyArrayMixedOnPublic
{
public function go()
{
$this->run([2512, 3423]);

$this->run([324, 534]);
}

/**
* @param mixed[] $items
*/
public function run(array $items)
{
}
}

?>
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Rector\CodeQuality\Rector\If_;

use PhpParser\Token;
use PhpParser\Node;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Else_;
Expand Down Expand Up @@ -79,7 +80,7 @@ public function refactor(Node $node): ?Node
}

/**
* @param mixed[] $oldTokens
* @param Token[] $oldTokens
*/
private function isIfConditionFollowedByOpeningCurlyBracket(If_|ElseIf_|Else_ $if, array $oldTokens): bool
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ public function refactor(Node $node): Concat|ClassConstFetch|null|int
}

/**
* @param mixed[] $configuration
* @param array<string, mixed> $configuration
*/
public function configure(array $configuration): void
{
Expand Down
4 changes: 2 additions & 2 deletions rules/Php70/EregToPcreTransformer.php
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ private function normalize(string $content, bool $normalizeUnprintableChar): str
}

/**
* @param mixed[] $r
* @param array<int, mixed> $r
*/
private function processBracket(string $content, int $i, int $l, array &$r, int $rr): int
{
Expand Down Expand Up @@ -284,7 +284,7 @@ private function _ere2pcre_escape(string $content): string
}

/**
* @param mixed[] $r
* @param array<int, mixed> $r
*/
private function processCurlyBracket(string $s, int $i, array &$r, int $rr): int
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ final class AddLiteralSeparatorToNumberRector extends AbstractRector implements
private int $limitValue = self::DEFAULT_LIMIT_VALUE;

/**
* @param mixed[] $configuration
* @param array<string, mixed> $configuration
*/
public function configure(array $configuration): void
{
Expand Down
2 changes: 1 addition & 1 deletion rules/Php81/Rector/Class_/SpatieEnumClassToEnumRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public function refactor(Node $node): ?Enum_
}

/**
* @param mixed[] $configuration
* @param array<string, mixed> $configuration
*/
public function configure(array $configuration): void
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public function __construct(
}

/**
* @param mixed[] $configuration
* @param array<string, mixed> $configuration
*/
public function configure(array $configuration): void
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public function getNodeTypes(): array
}

/**
* @param mixed[] $configuration
* @param array<string, mixed> $configuration
*/
public function configure(array $configuration): void
{
Expand Down
2 changes: 1 addition & 1 deletion rules/Strict/Rector/AbstractFalsyScalarRuleFixerRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ abstract class AbstractFalsyScalarRuleFixerRector extends AbstractRector impleme
protected bool $treatAsNonEmpty = false;

/**
* @param mixed[] $configuration
* @param array<string, mixed> $configuration
*/
public function configure(array $configuration): void
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use PhpParser\Node;
use PhpParser\Node\Param;
use PhpParser\Node\Stmt\Class_;
use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode;
use PHPStan\Type\Type;
use PHPStan\Type\TypeCombinator;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
Expand Down Expand Up @@ -106,6 +107,13 @@ public function refactor(Node $node): ?Node
continue;
}

if ($parameterTagValueNode instanceof ParamTagValueNode
&& $classMethod->isPublic() &&
$this->usefulArrayTagNodeAnalyzer->isMixedArray($parameterTagValueNode->type)) {
// on public method, skip if there is mixed[], as caller can be anything
continue;
}

$resolvedParameterType = $classMethodParameterTypes[$parameterPosition] ?? $classMethodParameterTypes[$parameterName] ?? null;
if (! $resolvedParameterType instanceof Type) {
continue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
use PHPStan\PhpDocParser\Ast\PhpDoc\ReturnTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
use PHPStan\PhpDocParser\Ast\Type\TypeNode;
use Rector\BetterPhpDocParser\ValueObject\Type\SpacingAwareArrayTypeNode;

final class UsefulArrayTagNodeAnalyzer
{
Expand All @@ -19,9 +21,14 @@ public function isUsefulArrayTag(null|ReturnTagValueNode|ParamTagValueNode|VarTa

$type = $tagValueNode->type;
if (! $type instanceof IdentifierTypeNode) {
return true;
return ! $this->isMixedArray($type);
}

return $type->name !== 'array';
}

public function isMixedArray(TypeNode $typeNode): bool
{
return $typeNode instanceof SpacingAwareArrayTypeNode && $typeNode->type instanceof IdentifierTypeNode && $typeNode->type->name === 'mixed';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
final class RemoveNodesStartAndEndResolver
{
/**
* @param mixed[] $tokens
* @param array<int, mixed> $tokens
* @return StartAndEnd[]
*/
public function resolve(PhpDocNode $originalPhpDocNode, PhpDocNode $currentPhpDocNode, array $tokens): array
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public function __toString(): string
}

/**
* @param mixed[] $array
* @param ArrayItemNode[] $array
*/
private function implode(array $array): string
{
Expand Down
2 changes: 1 addition & 1 deletion src/Caching/ValueObject/CacheItem.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public function __construct(
}

/**
* @param mixed[] $properties
* @param array<string, mixed> $properties
*/
public static function __set_state(array $properties): self
{
Expand Down
2 changes: 1 addition & 1 deletion src/ValueObject/Error/SystemError.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public function jsonSerialize(): array
}

/**
* @param mixed[] $json
* @param array<string, mixed> $json
*/
public static function decode(array $json): self
{
Expand Down