phpstan/phpstan-webmozart-assert

Assert::nullOrStringNotEmpty() with string|null will always evaluate to true

luca-rath opened this issue · 4 comments

Hello,

public function foo(?string $bar)
{
    Assert::nullOrStringNotEmpty($bar);
}

The above example leads to the following error:

Call to static method Webmozart\Assert\Mixin::nullOrStringNotEmpty() with string|null will always evaluate to true.

The problem is, that it's totally possible for $bar to be an empty string.
Unfortunately I can't provide a playground example, because Webmozart\Assert can't be used there.

cs278 commented

I can confirm this with these dependencies:

phpstan/phpstan                             0.12.92            PHPStan - PHP Static Analysis Tooln
phpstan/phpstan-webmozart-assert            0.12.15            PHPStan webmozart/assert extension
webmozart/assert                            1.10.0             Assertions to validate method input/output with nice error messages.

Should be fixed in PHPStan core. Once this is fixed, this starts working automatically as well: https://phpstan.org/r/f23ca7f4-0c82-487a-8858-384e8abad8cd

@herndlm @ondrejmirtes Thank you for fixing this issue! 🙂

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.