preg_replace_callback with PREG_UNMATCHED_AS_NULL flag results in `null` elements in callback
#7,671 opened on Feb 14, 2022
Repository metrics
- Stars
- (5,369 stars)
- PR merge metrics
- (Avg merge 3d 12h) (5 merged PRs in 30d)
Description
The stub for preg_replace_callback() is:
With @param callable(string[]):string $callback. However if you pass the PREG_UNMATCHED_AS_NULL flag the signature will become @param callable((string|null)[]):string $callback.
I have a $m[1] === null check in my callback function and now I get the errors:
ERROR: DocblockTypeContradiction - Cannot resolve types for $m[1] - docblock-defined type string does not contain null ERROR: RedundantConditionGivenDocblockType - Docblock-defined type string for $m[1] is never null
See https://psalm.dev/r/7537bf3352
https://3v4l.org/JdUaY shows the value of $m[1] is null.