doTypesOverlap() static public method

This is often used to determine if a fragment of a given type could possibly be visited in a context of another type. This function is commutative.
static public doTypesOverlap ( Schema $schema, GraphQL\Type\Definition\CompositeType $typeA, GraphQL\Type\Definition\CompositeType $typeB )
$schema GraphQL\Schema
$typeA GraphQL\Type\Definition\CompositeType
$typeB GraphQL\Type\Definition\CompositeType
 public function __invoke(ValidationContext $context)
 {
     return [NodeKind::INLINE_FRAGMENT => function (InlineFragmentNode $node) use($context) {
         $fragType = $context->getType();
         $parentType = $context->getParentType();
         if ($fragType && $parentType && !TypeInfo::doTypesOverlap($context->getSchema(), $fragType, $parentType)) {
             $context->reportError(new Error(self::typeIncompatibleAnonSpreadMessage($parentType, $fragType), [$node]));
         }
     }, NodeKind::FRAGMENT_SPREAD => function (FragmentSpreadNode $node) use($context) {
         $fragName = $node->name->value;
         $fragType = $this->getFragmentType($context, $fragName);
         $parentType = $context->getParentType();
         if ($fragType && $parentType && !TypeInfo::doTypesOverlap($context->getSchema(), $fragType, $parentType)) {
             $context->reportError(new Error(self::typeIncompatibleSpreadMessage($fragName, $parentType, $fragType), [$node]));
         }
     }];
 }