Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. RequireExplicitAssertionSniff.php

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

RequireExplicitAssertionSniff

Namespace

SlevomatCodingStandard\Sniffs\PHP

Code

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));
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal