phpstan icon indicating copy to clipboard operation
phpstan copied to clipboard

more precise preg_match types

Open staabm opened this issue 1 year ago • 3 comments
trafficstars

Feature request

while implementing the first iteration of preg_match array-shape inference, I got a few ideas on how the type inference could be improved.

leaving it here as a feature request, so its not forgotten

https://phpstan.org/r/1e3506dd-78dc-4bbe-9c9e-2a5a2928fcfc

Did PHPStan help you today? Did it make you happy in any way?

No response

staabm avatar Jun 21 '24 10:06 staabm

First thing we should is to cover preg_match_all and maybe others as well.

ondrejmirtes avatar Jun 21 '24 10:06 ondrejmirtes

@staabm After the latest push in 1.12.x, PHPStan now reports different result with your code snippet:

@@ @@
-10: Expected type array{string, '£'|'€'}, actual: array<string>
-13: Expected type array{string, numeric-string}, actual: array<string>
-16: Expected type array{string, non-empty-string}, actual: array<string>
-19: Expected type array{string, non-empty-string}, actual: array<string>
-22: Expected type array{string, non-falsey-string}, actual: array<string>
+10: Expected type array{string, '£'|'€'}, actual: array{string, non-empty-string}
+22: Expected type array{string, non-falsey-string}, actual: array{string, non-empty-string}
Full report
Line Error
10 `Expected type array{string, '£'
22 Expected type array{string, non-falsey-string}, actual: array{string, non-empty-string}

phpstan-bot avatar Aug 01 '24 07:08 phpstan-bot

@staabm After the latest push in 1.12.x, PHPStan now reports different result with your code snippet:

@@ @@
-10: Expected type array{string, '£'|'€'}, actual: array<string>
-13: Expected type array{string, numeric-string}, actual: array<string>
-16: Expected type array{string, non-empty-string}, actual: array<string>
-19: Expected type array{string, non-empty-string}, actual: array<string>
-22: Expected type array{string, non-falsey-string}, actual: array<string>
+10: Expected type array{string, '£'|'€'}, actual: array{string, non-empty-string}
+22: Expected type array{string, non-falsey-string}, actual: array{string, non-falsy-string}
Full report
Line Error
10 `Expected type array{string, '£'
22 Expected type array{string, non-falsey-string}, actual: array{string, non-falsy-string}

phpstan-bot avatar Aug 05 '24 07:08 phpstan-bot

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.

github-actions[bot] avatar Sep 29 '24 01:09 github-actions[bot]