1717 *
1818 * If `$promiseOrValue` is a promise, it will be returned as is.
1919 *
20- * @param mixed $promiseOrValue
21- * @return PromiseInterface
20+ * @template T
21+ * @param PromiseInterface<T>|T $promiseOrValue
22+ * @return PromiseInterface<T>
2223 */
2324function resolve ($ promiseOrValue ): PromiseInterface
2425{
@@ -30,6 +31,7 @@ function resolve($promiseOrValue): PromiseInterface
3031 $ canceller = null ;
3132
3233 if (\method_exists ($ promiseOrValue , 'cancel ' )) {
34+ /** @var callable $canceller */
3335 $ canceller = [$ promiseOrValue , 'cancel ' ];
3436 }
3537
@@ -54,8 +56,7 @@ function resolve($promiseOrValue): PromiseInterface
5456 * throwing an exception. For example, it allows you to propagate a rejection with
5557 * the value of another promise.
5658 *
57- * @param \Throwable $reason
58- * @return PromiseInterface
59+ * @return PromiseInterface<null>
5960 */
6061function reject (\Throwable $ reason ): PromiseInterface
6162{
@@ -68,8 +69,9 @@ function reject(\Throwable $reason): PromiseInterface
6869 * will be an array containing the resolution values of each of the items in
6970 * `$promisesOrValues`.
7071 *
71- * @param iterable<mixed> $promisesOrValues
72- * @return PromiseInterface
72+ * @template T
73+ * @param iterable<PromiseInterface<T>|T> $promisesOrValues
74+ * @return PromiseInterface<array<T>>
7375 */
7476function all (iterable $ promisesOrValues ): PromiseInterface
7577{
@@ -87,7 +89,7 @@ function all(iterable $promisesOrValues): PromiseInterface
8789 ++$ toResolve ;
8890
8991 resolve ($ promiseOrValue )->then (
90- function ($ value ) use ($ i , &$ values , &$ toResolve , &$ continue , $ resolve ): void {
92+ function ($ value ) use ($ i , &$ values , &$ toResolve , &$ continue , $ resolve ): void { /** @phpstan-ignore-line */
9193 $ values [$ i ] = $ value ;
9294
9395 if (0 === --$ toResolve && !$ continue ) {
@@ -119,8 +121,9 @@ function (\Throwable $reason) use (&$continue, $reject): void {
119121 * The returned promise will become **infinitely pending** if `$promisesOrValues`
120122 * contains 0 items.
121123 *
122- * @param iterable<mixed> $promisesOrValues
123- * @return PromiseInterface
124+ * @template T
125+ * @param iterable<PromiseInterface<T>|T> $promisesOrValues
126+ * @return PromiseInterface<T>
124127 */
125128function race (iterable $ promisesOrValues ): PromiseInterface
126129{
@@ -132,7 +135,7 @@ function race(iterable $promisesOrValues): PromiseInterface
132135 foreach ($ promisesOrValues as $ promiseOrValue ) {
133136 $ cancellationQueue ->enqueue ($ promiseOrValue );
134137
135- resolve ($ promiseOrValue )->then ($ resolve , $ reject )->finally (function () use (&$ continue ): void {
138+ resolve ($ promiseOrValue )->then ($ resolve , $ reject )->finally (function () use (&$ continue ): void { /** @phpstan-ignore-line */
136139 $ continue = false ;
137140 });
138141
@@ -154,8 +157,9 @@ function race(iterable $promisesOrValues): PromiseInterface
154157 * The returned promise will also reject with a `React\Promise\Exception\LengthException`
155158 * if `$promisesOrValues` contains 0 items.
156159 *
157- * @param iterable<mixed> $promisesOrValues
158- * @return PromiseInterface
160+ * @template T
161+ * @param iterable<PromiseInterface<T>|T> $promisesOrValues
162+ * @return PromiseInterface<T>
159163 */
160164function any (iterable $ promisesOrValues ): PromiseInterface
161165{
@@ -171,7 +175,7 @@ function any(iterable $promisesOrValues): PromiseInterface
171175 ++$ toReject ;
172176
173177 resolve ($ promiseOrValue )->then (
174- function ($ value ) use ($ resolve , &$ continue ): void {
178+ function ($ value ) use ($ resolve , &$ continue ): void { /** @phpstan-ignore-line */
175179 $ continue = false ;
176180 $ resolve ($ value );
177181 },
0 commit comments