Skip to content

Commit d0f2f2a

Browse files
authored
Merge pull request #149 from WyriHaximus-secret-labs/return-typehints
Enforce return type hints on all functions and require PHP 7.1+ as a consequence
2 parents b02f512 + 2642d72 commit d0f2f2a

File tree

12 files changed

+68
-68
lines changed

12 files changed

+68
-68
lines changed

.travis.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
language: php
22

33
php:
4-
- 7.0
54
- 7.1
65
- 7.2
76
- 7.3

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
{"name": "Jan Sorgalla", "email": "jsorgalla@gmail.com"}
77
],
88
"require": {
9-
"php": ">=7.0.0"
9+
"php": ">=7.1.0"
1010
},
1111
"require-dev": {
1212
"phpunit/phpunit": "~6.4"

src/Deferred.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ public function __construct(callable $canceller = null)
1414
$this->canceller = $canceller;
1515
}
1616

17-
public function promise()
17+
public function promise(): PromiseInterface
1818
{
1919
if (null === $this->promise) {
2020
$canceller = $this->canceller;
2121
$this->canceller = null;
2222

23-
$this->promise = new Promise(function ($resolve, $reject) {
23+
$this->promise = new Promise(function ($resolve, $reject): void {
2424
$this->resolveCallback = $resolve;
2525
$this->rejectCallback = $reject;
2626
}, $canceller);
@@ -29,14 +29,14 @@ public function promise()
2929
return $this->promise;
3030
}
3131

32-
public function resolve($value = null)
32+
public function resolve($value = null): void
3333
{
3434
$this->promise();
3535

3636
\call_user_func($this->resolveCallback, $value);
3737
}
3838

39-
public function reject(\Throwable $reason)
39+
public function reject(\Throwable $reason): void
4040
{
4141
$this->promise();
4242

src/Exception/CompositeException.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public function __construct(array $throwables, $message = '', $code = 0, $previo
2323
/**
2424
* @return \Throwable[]
2525
*/
26-
public function getThrowables()
26+
public function getThrowables(): array
2727
{
2828
return $this->throwables;
2929
}

src/FulfilledPromise.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ public function __construct($value = null)
1515
$this->value = $value;
1616
}
1717

18-
public function then(callable $onFulfilled = null, callable $onRejected = null)
18+
public function then(callable $onFulfilled = null, callable $onRejected = null): PromiseInterface
1919
{
2020
if (null === $onFulfilled) {
2121
return $this;
2222
}
2323

24-
return new Promise(function (callable $resolve, callable $reject) use ($onFulfilled) {
25-
enqueue(function () use ($resolve, $reject, $onFulfilled) {
24+
return new Promise(function (callable $resolve, callable $reject) use ($onFulfilled): void {
25+
enqueue(function () use ($resolve, $reject, $onFulfilled): void {
2626
try {
2727
$resolve($onFulfilled($this->value));
2828
} catch (\Throwable $exception) {
@@ -32,7 +32,7 @@ public function then(callable $onFulfilled = null, callable $onRejected = null)
3232
});
3333
}
3434

35-
public function done(callable $onFulfilled = null, callable $onRejected = null)
35+
public function done(callable $onFulfilled = null, callable $onRejected = null): void
3636
{
3737
if (null === $onFulfilled) {
3838
return;
@@ -51,21 +51,21 @@ public function done(callable $onFulfilled = null, callable $onRejected = null)
5151
});
5252
}
5353

54-
public function otherwise(callable $onRejected)
54+
public function otherwise(callable $onRejected): PromiseInterface
5555
{
5656
return $this;
5757
}
5858

59-
public function always(callable $onFulfilledOrRejected)
59+
public function always(callable $onFulfilledOrRejected): PromiseInterface
6060
{
61-
return $this->then(function ($value) use ($onFulfilledOrRejected) {
61+
return $this->then(function ($value) use ($onFulfilledOrRejected): PromiseInterface {
6262
return resolve($onFulfilledOrRejected())->then(function () use ($value) {
6363
return $value;
6464
});
6565
});
6666
}
6767

68-
public function cancel()
68+
public function cancel(): void
6969
{
7070
}
7171
}

src/Internal/CancellationQueue.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ final class CancellationQueue
1010
private $started = false;
1111
private $queue = [];
1212

13-
public function __invoke()
13+
public function __invoke(): void
1414
{
1515
if ($this->started) {
1616
return;
@@ -20,7 +20,7 @@ public function __invoke()
2020
$this->drain();
2121
}
2222

23-
public function enqueue($cancellable)
23+
public function enqueue($cancellable): void
2424
{
2525
if (!\method_exists($cancellable, 'then') || !\method_exists($cancellable, 'cancel')) {
2626
return;
@@ -33,7 +33,7 @@ public function enqueue($cancellable)
3333
}
3434
}
3535

36-
private function drain()
36+
private function drain(): void
3737
{
3838
for ($i = \key($this->queue); isset($this->queue[$i]); $i++) {
3939
$cancellable = $this->queue[$i];

src/Internal/Queue.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ final class Queue
99
{
1010
private $queue = [];
1111

12-
public function enqueue(callable $task)
12+
public function enqueue(callable $task): void
1313
{
1414
if (1 === \array_push($this->queue, $task)) {
1515
$this->drain();
1616
}
1717
}
1818

19-
private function drain()
19+
private function drain(): void
2020
{
2121
for ($i = \key($this->queue); isset($this->queue[$i]); $i++) {
2222
$task = $this->queue[$i];

src/Promise.php

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public function __construct(callable $resolver, callable $canceller = null)
1717
$this->call($resolver);
1818
}
1919

20-
public function then(callable $onFulfilled = null, callable $onRejected = null)
20+
public function then(callable $onFulfilled = null, callable $onRejected = null): PromiseInterface
2121
{
2222
if (null !== $this->result) {
2323
return $this->result->then($onFulfilled, $onRejected);
@@ -38,10 +38,11 @@ public function then(callable $onFulfilled = null, callable $onRejected = null)
3838
});
3939
}
4040

41-
public function done(callable $onFulfilled = null, callable $onRejected = null)
41+
public function done(callable $onFulfilled = null, callable $onRejected = null): void
4242
{
4343
if (null !== $this->result) {
44-
return $this->result->done($onFulfilled, $onRejected);
44+
$this->result->done($onFulfilled, $onRejected);
45+
return;
4546
}
4647

4748
$this->handlers[] = function (PromiseInterface $promise) use ($onFulfilled, $onRejected) {
@@ -50,7 +51,7 @@ public function done(callable $onFulfilled = null, callable $onRejected = null)
5051
};
5152
}
5253

53-
public function otherwise(callable $onRejected)
54+
public function otherwise(callable $onRejected): PromiseInterface
5455
{
5556
return $this->then(null, function ($reason) use ($onRejected) {
5657
if (!_checkTypehint($onRejected, $reason)) {
@@ -61,7 +62,7 @@ public function otherwise(callable $onRejected)
6162
});
6263
}
6364

64-
public function always(callable $onFulfilledOrRejected)
65+
public function always(callable $onFulfilledOrRejected): PromiseInterface
6566
{
6667
return $this->then(function ($value) use ($onFulfilledOrRejected) {
6768
return resolve($onFulfilledOrRejected())->then(function () use ($value) {
@@ -74,7 +75,7 @@ public function always(callable $onFulfilledOrRejected)
7475
});
7576
}
7677

77-
public function cancel()
78+
public function cancel(): void
7879
{
7980
$canceller = $this->canceller;
8081
$this->canceller = null;
@@ -109,7 +110,7 @@ public function cancel()
109110
}
110111
}
111112

112-
private function resolver(callable $onFulfilled = null, callable $onRejected = null)
113+
private function resolver(callable $onFulfilled = null, callable $onRejected = null): callable
113114
{
114115
return function ($resolve, $reject) use ($onFulfilled, $onRejected) {
115116
$this->handlers[] = function (PromiseInterface $promise) use ($onFulfilled, $onRejected, $resolve, $reject) {
@@ -120,7 +121,7 @@ private function resolver(callable $onFulfilled = null, callable $onRejected = n
120121
};
121122
}
122123

123-
private function resolve($value = null)
124+
private function resolve($value = null): void
124125
{
125126
if (null !== $this->result) {
126127
return;
@@ -129,7 +130,7 @@ private function resolve($value = null)
129130
$this->settle(resolve($value));
130131
}
131132

132-
private function reject(\Throwable $reason)
133+
private function reject(\Throwable $reason): void
133134
{
134135
if (null !== $this->result) {
135136
return;
@@ -138,7 +139,7 @@ private function reject(\Throwable $reason)
138139
$this->settle(reject($reason));
139140
}
140141

141-
private function settle(PromiseInterface $result)
142+
private function settle(PromiseInterface $result): void
142143
{
143144
$result = $this->unwrap($result);
144145

@@ -165,7 +166,7 @@ private function settle(PromiseInterface $result)
165166
}
166167
}
167168

168-
private function unwrap($promise)
169+
private function unwrap($promise): PromiseInterface
169170
{
170171
while ($promise instanceof self && null !== $promise->result) {
171172
$promise = $promise->result;
@@ -174,7 +175,7 @@ private function unwrap($promise)
174175
return $promise;
175176
}
176177

177-
private function call(callable $callback)
178+
private function call(callable $callback): void
178179
{
179180
// Use reflection to inspect number of arguments expected by this callback.
180181
// We did some careful benchmarking here: Using reflection to avoid unneeded

src/PromiseInterface.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ interface PromiseInterface
3232
* @param callable|null $onRejected
3333
* @return PromiseInterface
3434
*/
35-
public function then(callable $onFulfilled = null, callable $onRejected = null);
35+
public function then(?callable $onFulfilled = null, ?callable $onRejected = null): PromiseInterface;
3636

3737
/**
3838
* Consumes the promise's ultimate value if the promise fulfills, or handles the
@@ -48,7 +48,7 @@ public function then(callable $onFulfilled = null, callable $onRejected = null);
4848
* @param callable|null $onRejected
4949
* @return void
5050
*/
51-
public function done(callable $onFulfilled = null, callable $onRejected = null);
51+
public function done(callable $onFulfilled = null, callable $onRejected = null): void;
5252

5353
/**
5454
* Registers a rejection handler for promise. It is a shortcut for:
@@ -63,7 +63,7 @@ public function done(callable $onFulfilled = null, callable $onRejected = null);
6363
* @param callable $onRejected
6464
* @return PromiseInterface
6565
*/
66-
public function otherwise(callable $onRejected);
66+
public function otherwise(callable $onRejected): PromiseInterface;
6767

6868
/**
6969
* Allows you to execute "cleanup" type tasks in a promise chain.
@@ -110,7 +110,7 @@ public function otherwise(callable $onRejected);
110110
* @param callable $onFulfilledOrRejected
111111
* @return PromiseInterface
112112
*/
113-
public function always(callable $onFulfilledOrRejected);
113+
public function always(callable $onFulfilledOrRejected): PromiseInterface;
114114

115115
/**
116116
* The `cancel()` method notifies the creator of the promise that there is no
@@ -121,5 +121,5 @@ public function always(callable $onFulfilledOrRejected);
121121
*
122122
* @return void
123123
*/
124-
public function cancel();
124+
public function cancel(): void;
125125
}

src/PromisorInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ interface PromisorInterface
99
*
1010
* @return PromiseInterface
1111
*/
12-
public function promise();
12+
public function promise(): PromiseInterface;
1313
}

0 commit comments

Comments
 (0)