|
15 | 15 | use Psalm\Issue\InvalidDocblock; |
16 | 16 | use Psalm\IssueBuffer; |
17 | 17 |
|
| 18 | +use function array_keys; |
18 | 19 | use function array_shift; |
19 | 20 | use function array_unique; |
20 | 21 | use function count; |
@@ -704,17 +705,44 @@ private static function checkUnexpectedTags( |
704 | 705 | PhpParser\Comment\Doc $comment |
705 | 706 | ): void { |
706 | 707 | if (isset($parsed_docblock->tags['psalm-import-type'])) { |
707 | | - foreach ($parsed_docblock->tags['psalm-import-type'] as $offset => $_) { |
708 | | - $info->unexpected_tags['psalm-import-type']['lines'][] = self::docblockLineNumber($comment, $offset); |
709 | | - } |
| 708 | + $info->unexpected_tags['psalm-import-type']['lines'] = self::tagOffsetsToLines( |
| 709 | + array_keys($parsed_docblock->tags['psalm-import-type']), |
| 710 | + $comment |
| 711 | + ); |
710 | 712 | } |
711 | 713 |
|
712 | 714 | if (isset($parsed_docblock->combined_tags['var'])) { |
713 | | - $info->unexpected_tags['var'] = ['lines' => [], 'suggested_replacement' => 'param']; |
714 | | - foreach ($parsed_docblock->combined_tags['var'] as $offset => $_) { |
715 | | - $info->unexpected_tags['var']['lines'][] = self::docblockLineNumber($comment, $offset); |
716 | | - } |
| 715 | + $info->unexpected_tags['var'] = [ |
| 716 | + 'lines' => self::tagOffsetsToLines( |
| 717 | + array_keys($parsed_docblock->combined_tags['var']), |
| 718 | + $comment |
| 719 | + ), |
| 720 | + 'suggested_replacement' => 'param' |
| 721 | + ]; |
| 722 | + } |
| 723 | + |
| 724 | + if (isset($parsed_docblock->tags['psalm-consistent-constructor'])) { |
| 725 | + $info->unexpected_tags['psalm-consistent-constructor'] = [ |
| 726 | + 'lines' => self::tagOffsetsToLines( |
| 727 | + array_keys($parsed_docblock->tags['psalm-consistent-constructor']), |
| 728 | + $comment |
| 729 | + ), |
| 730 | + 'suggested_replacement' => 'psalm-consistent-constructor on a class level', |
| 731 | + ]; |
| 732 | + } |
| 733 | + } |
| 734 | + |
| 735 | + /** |
| 736 | + * @param list<int> $offsets |
| 737 | + * @return list<int> |
| 738 | + */ |
| 739 | + private static function tagOffsetsToLines(array $offsets, PhpParser\Comment\Doc $comment): array |
| 740 | + { |
| 741 | + $ret = []; |
| 742 | + foreach ($offsets as $offset) { |
| 743 | + $ret[] = self::docblockLineNumber($comment, $offset); |
717 | 744 | } |
| 745 | + return $ret; |
718 | 746 | } |
719 | 747 |
|
720 | 748 | private static function docblockLineNumber(PhpParser\Comment\Doc $comment, int $offset): int |
|
0 commit comments