From 0ddc5a59510aa19afb53576a441e3bde501a5918 Mon Sep 17 00:00:00 2001 From: kakiuchi-shigenao Date: Fri, 11 Jul 2025 00:25:21 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=BC=95=E6=95=B0=E3=81=AE=E5=9E=8B?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3=E3=81=97=E3=80=81=E3=82=A8=E3=83=A9?= =?UTF-8?q?=E3=83=BC=E3=83=8F=E3=83=B3=E3=83=89=E3=83=AA=E3=83=B3=E3=82=B0?= =?UTF-8?q?=E3=82=92=E5=BC=B7=E5=8C=96=20Fixes=20#38?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Collection/ArrayList.php | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/Collection/ArrayList.php b/src/Collection/ArrayList.php index add476e..499b163 100644 --- a/src/Collection/ArrayList.php +++ b/src/Collection/ArrayList.php @@ -7,6 +7,7 @@ use ArrayAccess; use Closure; use Generator; +use LogicException; use Override; use WizDevelop\PhpMonad\Option; use WizDevelop\PhpMonad\Result; @@ -109,7 +110,7 @@ final public static function tryFrom(iterable $elements): Result * * @template TTryFromValue of TValue * - * @param iterable|Result)> $results + * @param iterable|Result|Result)> $results * @return Result,ValueObjectError> */ /** @@ -122,9 +123,30 @@ final public static function tryFromResults(iterable $results): Result $elementsResult = Result\combineWithErrorValue(...$elements); if ($elementsResult->isErr()) { + $flattenErrs = []; + foreach ($elementsResult->unwrapErr() as $err) { + if ($err instanceof IErrorValue) { // @phpstan-ignore-line + $flattenErrs[] = $err; + } elseif (is_array($err)) { + foreach ($err as $e) { + if ($e instanceof IErrorValue) { // @phpstan-ignore-line + $flattenErrs[] = $e; + } else { + throw new LogicException( + 'Invalid error value type in array. Expected IErrorValue.', + ); + } + } + } else { + throw new LogicException( + 'Invalid error value type. Expected IErrorValue or array of IErrorValue.', + ); + } + } + return Result\err(ValueObjectError::collection()->invalidElementValues( static::class, - ...$elementsResult->unwrapErr() + ...$flattenErrs, )); }