} if (null
!== ($returnType = self::
$returnTypes[$class][$method->name
] ?? null
) && 'docblock' ===
$this->patchTypes
['force'
] && !
$method->
hasReturnType() &&
isset(TentativeTypes::RETURN_TYPES
[$returnType[2
]][$method->name
])) { $this->
patchReturnTypeWillChange($method);
} if (null
!== ($returnType ??= self::MAGIC_METHODS
[$method->name
] ?? null
) && !
$method->
hasReturnType() && !
isset($doc['return'
])) { [$normalizedType,
$returnType,
$declaringClass,
$declaringFile] = \
is_string($returnType) ?
[$returnType,
$returnType, '', ''
] :
$returnType;
if ($canAddReturnType && 'docblock' !==
$this->patchTypes
['force'
]) { $this->
patchMethod($method,
$returnType,
$declaringFile,
$normalizedType);
} if (!
isset($doc['deprecated'
]) &&
strncmp($ns,
$declaringClass,
$len)) { if ('docblock' ===
$this->patchTypes
['force'
]) { $this->
patchMethod($method,
$returnType,
$declaringFile,
$normalizedType);
} elseif ('' !==
$declaringClass &&
$this->patchTypes
['deprecations'
]) { $deprecations[] =
sprintf('Method "%s::%s()" might add "%s" as a native return type declaration in the future. Do the same in %s "%s" now to avoid errors or add an explicit @return annotation to suppress this message.',
$declaringClass,
$method->name,
$normalizedType,
interface_exists($declaringClass) ? 'implementation' : 'child class',
$className);
} } } if (!
$doc) {