-
-
Notifications
You must be signed in to change notification settings - Fork 86
Closed
Description
The documentation for Differ::diff states that it accepts both arrays and strings as parameters:
/**
* Returns the diff between two arrays or strings as string.
*
* @param array|string $from
* @param array|string $to
* @param LongestCommonSubsequenceCalculator|null $lcs
*
* @return string
*/
public function diff($from, $to, LongestCommonSubsequenceCalculator $lcs = null): stringThis is clearly not the case since Differ::validateDiffInput explicitly tries to cast everything to a string except arrays:
/**
* Casts variable to string if it is not a string or array.
*
* @param mixed $input
*
* @return string
*/
private function validateDiffInput($input): string
{
if (!\is_array($input) && !\is_string($input)) {
return (string) $input;
}
return $input;
}The first fix is obvious, the documentation for Differ::diff needs to be updated. The second issue, is maybe we want to throw an InvalidArgumentException on an array instead of the much more opaque:
TypeError: Return value of SebastianBergmann\Diff\Differ::validateDiffInput() must be of the type string, array returned
Throwing InvalidArgumentException with an appropriate description would represent a better user experience.
If we agree, let me know, and I'll submit a PR with both fixes referencing this issue.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels