promise icon indicating copy to clipboard operation
promise copied to clipboard

[1.x] Add basic template annotations

Open WyriHaximus opened this issue 2 years ago • 0 comments

This adds basic type safety annotations for static analyzers like PHPStan and Psalm. This will cover around 80% of the use cases and a follow-up PR for all supported versions will be proposed later to get it to a 100% of close to a 100%.

By adding these annotations methods returning a promise can hint their resolving type by adding @return PromiseInterface<bool> when they for example resolve to a boolean. By doing that Psalm and PHPStan will understand that the following bit of code will not become an issue because the method's contract promised a boolean through the promise:

$promise->then(static function (bool $isEnabled) {});

However, the following will yield errors:

$promise->then(static function (string $isEnabled) {});

This PR is a requirement for https://github.com/reactphp/async/pull/40

WyriHaximus avatar Jun 21 '22 21:06 WyriHaximus