function RequireExplicitAssertionSniff::createAssert
*
Parameters
IdentifierTypeNode|ThisTypeNode|UnionTypeNode|IntersectionTypeNode|GenericTypeNode $typeNode:
1 call to RequireExplicitAssertionSniff::createAssert()
- RequireExplicitAssertionSniff::process in vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Sniffs/ PHP/ RequireExplicitAssertionSniff.php - * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint *
File
-
vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Sniffs/ PHP/ RequireExplicitAssertionSniff.php, line 332
Class
Namespace
SlevomatCodingStandard\Sniffs\PHPCode
private function createAssert(string $variableName, TypeNode $typeNode) : ?string {
$conditions = [];
if ($typeNode instanceof IdentifierTypeNode || $typeNode instanceof ThisTypeNode || $typeNode instanceof GenericTypeNode) {
$conditions = $this->createConditions($variableName, $typeNode);
return $conditions !== [] ? sprintf('\\assert(%s);', implode(' || ', $conditions)) : null;
}
/** @var IdentifierTypeNode|ThisTypeNode|GenericTypeNode $innerTypeNode */
foreach ($typeNode->types as $innerTypeNode) {
$innerTypeConditions = $this->createConditions($variableName, $innerTypeNode);
if ($innerTypeConditions === []) {
return null;
}
$conditions = array_merge($conditions, $innerTypeConditions);
}
$operator = $typeNode instanceof IntersectionTypeNode ? '&&' : '||';
$formattedConditions = [];
foreach (array_unique($conditions) as $condition) {
$formattedConditions[] = $operator === '||' && strpos($condition, '&&') !== false ? sprintf('(%s)', $condition) : $condition;
}
return sprintf('\\assert(%s);', implode(sprintf(' %s ', $operator), $formattedConditions));
}