chore: check enums for since and experimental comments

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
This commit is contained in:
Daniel Kesselberg 2024-11-29 23:45:56 +01:00
parent 9fcf5a5600
commit dd3fa88b36
No known key found for this signature in database
GPG key ID: 4A81C29F63464E8F
2 changed files with 31 additions and 16 deletions

View file

@ -7,7 +7,10 @@ declare(strict_types=1);
*/
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\ClassConst;
use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\EnumCase;
use Psalm\CodeLocation;
use Psalm\DocComment;
use Psalm\Exception\DocblockParseException;
@ -18,17 +21,23 @@ use Psalm\Plugin\EventHandler\Event\AfterClassLikeVisitEvent;
class NcuExperimentalChecker implements Psalm\Plugin\EventHandler\AfterClassLikeVisitInterface {
public static function afterClassLikeVisit(AfterClassLikeVisitEvent $event): void {
$stmt = $event->getStmt();
$classLike = $event->getStmt();
$statementsSource = $event->getStatementsSource();
self::checkClassComment($stmt, $statementsSource);
self::checkClassComment($classLike, $statementsSource);
foreach ($stmt->getMethods() as $method) {
self::checkMethodOrConstantComment($method, $statementsSource, 'method');
}
foreach ($classLike->stmts as $stmt) {
if ($stmt instanceof ClassConst) {
self::checkStatementComment($stmt, $statementsSource, 'constant');
}
foreach ($stmt->getConstants() as $constant) {
self::checkMethodOrConstantComment($constant, $statementsSource, 'constant');
if ($stmt instanceof ClassMethod) {
self::checkStatementComment($stmt, $statementsSource, 'method');
}
if ($stmt instanceof EnumCase) {
self::checkStatementComment($stmt, $statementsSource, 'enum');
}
}
}
@ -76,7 +85,7 @@ class NcuExperimentalChecker implements Psalm\Plugin\EventHandler\AfterClassLike
}
}
private static function checkMethodOrConstantComment(Stmt $stmt, FileSource $statementsSource, string $type): void {
private static function checkStatementComment(Stmt $stmt, FileSource $statementsSource, string $type): void {
$docblock = $stmt->getDocComment();
if ($docblock === null) {

View file

@ -17,17 +17,23 @@ use Psalm\Plugin\EventHandler\Event\AfterClassLikeVisitEvent;
class OcpSinceChecker implements Psalm\Plugin\EventHandler\AfterClassLikeVisitInterface {
public static function afterClassLikeVisit(AfterClassLikeVisitEvent $event): void {
$stmt = $event->getStmt();
$classLike = $event->getStmt();
$statementsSource = $event->getStatementsSource();
self::checkClassComment($stmt, $statementsSource);
self::checkClassComment($classLike, $statementsSource);
foreach ($stmt->getMethods() as $method) {
self::checkMethodOrConstantComment($method, $statementsSource, 'method');
}
foreach ($classLike->stmts as $stmt) {
if ($stmt instanceof ClassConst) {
self::checkStatementComment($stmt, $statementsSource, 'constant');
}
foreach ($stmt->getConstants() as $constant) {
self::checkMethodOrConstantComment($constant, $statementsSource, 'constant');
if ($stmt instanceof ClassMethod) {
self::checkStatementComment($stmt, $statementsSource, 'method');
}
if ($stmt instanceof EnumCase) {
self::checkStatementComment($stmt, $statementsSource, 'enum');
}
}
}
@ -75,7 +81,7 @@ class OcpSinceChecker implements Psalm\Plugin\EventHandler\AfterClassLikeVisitIn
}
}
private static function checkMethodOrConstantComment(Stmt $stmt, FileSource $statementsSource, string $type): void {
private static function checkStatementComment(Stmt $stmt, FileSource $statementsSource, string $type): void {
$docblock = $stmt->getDocComment();
if ($docblock === null) {