Skip to content

Commit

Permalink
Fix CS
Browse files Browse the repository at this point in the history
  • Loading branch information
ondrejmirtes committed Aug 24, 2024
1 parent 2485b2e commit 82f7e14
Showing 1 changed file with 64 additions and 56 deletions.
120 changes: 64 additions & 56 deletions src/Rules/Classes/LocalTypeAliasesCheck.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
use PHPStan\Type\TypeTraverser;
use PHPStan\Type\VerbosityLevel;
use function array_key_exists;
use function array_merge;
use function implode;
use function in_array;
use function sprintf;

Expand Down Expand Up @@ -180,64 +182,70 @@ public function check(ClassReflection $reflection, ClassLike $node): array
return $traverse($type);
});

if ($this->absentTypeChecks && !$foundError) {
if ($this->checkMissingTypehints) {
foreach ($this->missingTypehintCheck->getIterableTypesWithMissingValueTypehint($resolvedType) as $iterableType) {
$iterableTypeDescription = $iterableType->describe(VerbosityLevel::typeOnly());
$errors[] = RuleErrorBuilder::message(sprintf(
'%s %s has type alias %s with no value type specified in iterable type %s.',
$reflection->getClassTypeDescription(),
$reflection->getDisplayName(),
$aliasName,
$iterableTypeDescription,
))
->tip(MissingTypehintCheck::MISSING_ITERABLE_VALUE_TYPE_TIP)
->identifier('missingType.iterableValue')
->build();
}

foreach ($this->missingTypehintCheck->getNonGenericObjectTypesWithGenericClass($resolvedType) as [$name, $genericTypeNames]) {
$errors[] = RuleErrorBuilder::message(sprintf(
'%s %s has type alias %s with generic %s but does not specify its types: %s',
$reflection->getClassTypeDescription(),
$reflection->getDisplayName(),
$aliasName,
$name,
implode(', ', $genericTypeNames),
))
->identifier('missingType.generics')
->build();
}

foreach ($this->missingTypehintCheck->getCallablesWithMissingSignature($resolvedType) as $callableType) {
$errors[] = RuleErrorBuilder::message(sprintf(
'%s %s has type alias %s with no signature specified for %s.',
$reflection->getClassTypeDescription(),
$reflection->getDisplayName(),
$aliasName,
$callableType->describe(VerbosityLevel::typeOnly()),
))->identifier('missingType.callable')->build();
}
if ($foundError) {
continue;
}

if (!$this->absentTypeChecks) {
continue;
}

if ($this->checkMissingTypehints) {
foreach ($this->missingTypehintCheck->getIterableTypesWithMissingValueTypehint($resolvedType) as $iterableType) {
$iterableTypeDescription = $iterableType->describe(VerbosityLevel::typeOnly());
$errors[] = RuleErrorBuilder::message(sprintf(
'%s %s has type alias %s with no value type specified in iterable type %s.',
$reflection->getClassTypeDescription(),
$reflection->getDisplayName(),
$aliasName,
$iterableTypeDescription,
))
->tip(MissingTypehintCheck::MISSING_ITERABLE_VALUE_TYPE_TIP)
->identifier('missingType.iterableValue')
->build();
}

foreach ($resolvedType->getReferencedClasses() as $class) {
if (!$this->reflectionProvider->hasClass($class)) {
$errors[] = RuleErrorBuilder::message(sprintf('Type alias %s contains unknown class %s.', $aliasName, $class))
->identifier('class.notFound')
->discoveringSymbolsTip()
->build();
} elseif ($this->reflectionProvider->getClass($class)->isTrait()) {
$errors[] = RuleErrorBuilder::message(sprintf('Type alias %s contains invalid type %s.', $aliasName, $class))
->identifier('typeAlias.trait')
->build();
} else {
$errors = array_merge(
$errors,
$this->classCheck->checkClassNames([
new ClassNameNodePair($class, $node),
], $this->checkClassCaseSensitivity),
);
}
foreach ($this->missingTypehintCheck->getNonGenericObjectTypesWithGenericClass($resolvedType) as [$name, $genericTypeNames]) {
$errors[] = RuleErrorBuilder::message(sprintf(
'%s %s has type alias %s with generic %s but does not specify its types: %s',
$reflection->getClassTypeDescription(),
$reflection->getDisplayName(),
$aliasName,
$name,
implode(', ', $genericTypeNames),
))
->identifier('missingType.generics')
->build();
}

foreach ($this->missingTypehintCheck->getCallablesWithMissingSignature($resolvedType) as $callableType) {
$errors[] = RuleErrorBuilder::message(sprintf(
'%s %s has type alias %s with no signature specified for %s.',
$reflection->getClassTypeDescription(),
$reflection->getDisplayName(),
$aliasName,
$callableType->describe(VerbosityLevel::typeOnly()),
))->identifier('missingType.callable')->build();
}
}

foreach ($resolvedType->getReferencedClasses() as $class) {
if (!$this->reflectionProvider->hasClass($class)) {
$errors[] = RuleErrorBuilder::message(sprintf('Type alias %s contains unknown class %s.', $aliasName, $class))
->identifier('class.notFound')
->discoveringSymbolsTip()
->build();
} elseif ($this->reflectionProvider->getClass($class)->isTrait()) {
$errors[] = RuleErrorBuilder::message(sprintf('Type alias %s contains invalid type %s.', $aliasName, $class))
->identifier('typeAlias.trait')
->build();
} else {
$errors = array_merge(
$errors,
$this->classCheck->checkClassNames([
new ClassNameNodePair($class, $node),
], $this->checkClassCaseSensitivity),
);
}
}
}
Expand Down

0 comments on commit 82f7e14

Please sign in to comment.