17
17
*
18
18
* If `$promiseOrValue` is a promise, it will be returned as is.
19
19
*
20
- * @param mixed $promiseOrValue
21
- * @return PromiseInterface
20
+ * @template T
21
+ * @param PromiseInterface<T>|T $promiseOrValue
22
+ * @return PromiseInterface<T>
22
23
*/
23
24
function resolve ($ promiseOrValue ): PromiseInterface
24
25
{
@@ -30,6 +31,7 @@ function resolve($promiseOrValue): PromiseInterface
30
31
$ canceller = null ;
31
32
32
33
if (\method_exists ($ promiseOrValue , 'cancel ' )) {
34
+ /** @var callable $canceller */
33
35
$ canceller = [$ promiseOrValue , 'cancel ' ];
34
36
}
35
37
@@ -54,8 +56,7 @@ function resolve($promiseOrValue): PromiseInterface
54
56
* throwing an exception. For example, it allows you to propagate a rejection with
55
57
* the value of another promise.
56
58
*
57
- * @param \Throwable $reason
58
- * @return PromiseInterface
59
+ * @return PromiseInterface<null>
59
60
*/
60
61
function reject (\Throwable $ reason ): PromiseInterface
61
62
{
@@ -68,8 +69,9 @@ function reject(\Throwable $reason): PromiseInterface
68
69
* will be an array containing the resolution values of each of the items in
69
70
* `$promisesOrValues`.
70
71
*
71
- * @param iterable<mixed> $promisesOrValues
72
- * @return PromiseInterface
72
+ * @template T
73
+ * @param iterable<PromiseInterface<T>|T> $promisesOrValues
74
+ * @return PromiseInterface<array<T>>
73
75
*/
74
76
function all (iterable $ promisesOrValues ): PromiseInterface
75
77
{
@@ -87,7 +89,7 @@ function all(iterable $promisesOrValues): PromiseInterface
87
89
++$ toResolve ;
88
90
89
91
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 */
91
93
$ values [$ i ] = $ value ;
92
94
93
95
if (0 === --$ toResolve && !$ continue ) {
@@ -119,8 +121,9 @@ function (\Throwable $reason) use (&$continue, $reject): void {
119
121
* The returned promise will become **infinitely pending** if `$promisesOrValues`
120
122
* contains 0 items.
121
123
*
122
- * @param iterable<mixed> $promisesOrValues
123
- * @return PromiseInterface
124
+ * @template T
125
+ * @param iterable<PromiseInterface<T>|T> $promisesOrValues
126
+ * @return PromiseInterface<T>
124
127
*/
125
128
function race (iterable $ promisesOrValues ): PromiseInterface
126
129
{
@@ -132,7 +135,7 @@ function race(iterable $promisesOrValues): PromiseInterface
132
135
foreach ($ promisesOrValues as $ promiseOrValue ) {
133
136
$ cancellationQueue ->enqueue ($ promiseOrValue );
134
137
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 */
136
139
$ continue = false ;
137
140
});
138
141
@@ -154,8 +157,9 @@ function race(iterable $promisesOrValues): PromiseInterface
154
157
* The returned promise will also reject with a `React\Promise\Exception\LengthException`
155
158
* if `$promisesOrValues` contains 0 items.
156
159
*
157
- * @param iterable<mixed> $promisesOrValues
158
- * @return PromiseInterface
160
+ * @template T
161
+ * @param iterable<PromiseInterface<T>|T> $promisesOrValues
162
+ * @return PromiseInterface<T>
159
163
*/
160
164
function any (iterable $ promisesOrValues ): PromiseInterface
161
165
{
@@ -171,7 +175,7 @@ function any(iterable $promisesOrValues): PromiseInterface
171
175
++$ toReject ;
172
176
173
177
resolve ($ promiseOrValue )->then (
174
- function ($ value ) use ($ resolve , &$ continue ): void {
178
+ function ($ value ) use ($ resolve , &$ continue ): void { /** @phpstan-ignore-line */
175
179
$ continue = false ;
176
180
$ resolve ($ value );
177
181
},
0 commit comments