From 912e0af8b4f1223d3146c60be8aafea18ccd55e9 Mon Sep 17 00:00:00 2001 From: Corey Taylor Date: Wed, 14 Jul 2021 02:12:19 -0500 Subject: [PATCH] Convert array type to generic in non-unions --- CakePHP/Sniffs/Commenting/TypeHintSniff.php | 16 ++++++++++++---- CakePHP/Tests/Commenting/TypeHintUnitTest.1.inc | 4 ++-- .../Commenting/TypeHintUnitTest.1.inc.fixed | 4 ++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/CakePHP/Sniffs/Commenting/TypeHintSniff.php b/CakePHP/Sniffs/Commenting/TypeHintSniff.php index 4bad3ab..338d559 100644 --- a/CakePHP/Sniffs/Commenting/TypeHintSniff.php +++ b/CakePHP/Sniffs/Commenting/TypeHintSniff.php @@ -90,12 +90,20 @@ public function process(File $phpcsFile, $stackPtr) $tagComment = $phpcsFile->fixer->getTokenContent($tag + 2); $valueNode = self::getValueNode($tokens[$tag]['content'], $tagComment); - if ($valueNode instanceof InvalidTagValueNode || !$valueNode->type instanceof UnionTypeNode) { + if ($valueNode instanceof InvalidTagValueNode) { continue; } - $originalTypeHint = $this->renderUnionTypes($valueNode->type->types); - $sortedTypeHint = $this->getSortedTypeHint($valueNode->type->types); + if ($valueNode->type instanceof UnionTypeNode) { + $types = $valueNode->type->types; + } elseif ($valueNode->type instanceof ArrayTypeNode) { + $types = [$valueNode->type]; + } else { + continue; + } + + $originalTypeHint = $this->renderUnionTypes($types); + $sortedTypeHint = $this->getSortedTypeHint($types); if ($sortedTypeHint === $originalTypeHint) { continue; } @@ -103,7 +111,7 @@ public function process(File $phpcsFile, $stackPtr) $fix = $phpcsFile->addFixableWarning( '%s type hint is not formatted properly, expected "%s"', $tag, - 'Format', + 'IncorrectFormat', [$tokens[$tag]['content'], $sortedTypeHint] ); if (!$fix) { diff --git a/CakePHP/Tests/Commenting/TypeHintUnitTest.1.inc b/CakePHP/Tests/Commenting/TypeHintUnitTest.1.inc index 0457f68..c8a92b3 100644 --- a/CakePHP/Tests/Commenting/TypeHintUnitTest.1.inc +++ b/CakePHP/Tests/Commenting/TypeHintUnitTest.1.inc @@ -3,10 +3,10 @@ namespace Beakman; class Foo { - /** @var int|string[]|int[] */ + /** @var string[] */ protected $testVar; - /** @var null|string|class-string<\Cake\I18n\Number>|array $testVar2 */ + /** @var null|string[]|class-string<\Cake\I18n\Number> $testVar2 */ protected $testVar2; /** diff --git a/CakePHP/Tests/Commenting/TypeHintUnitTest.1.inc.fixed b/CakePHP/Tests/Commenting/TypeHintUnitTest.1.inc.fixed index 329a60c..bceab0a 100644 --- a/CakePHP/Tests/Commenting/TypeHintUnitTest.1.inc.fixed +++ b/CakePHP/Tests/Commenting/TypeHintUnitTest.1.inc.fixed @@ -3,10 +3,10 @@ namespace Beakman; class Foo { - /** @var array|array|int */ + /** @var array */ protected $testVar; - /** @var array|class-string<\Cake\I18n\Number>|string|null $testVar2 */ + /** @var array|class-string<\Cake\I18n\Number>|null $testVar2 */ protected $testVar2; /**