preg_replace_callback with PREG_UNMATCHED_AS_NULL flag results in `null` elements in callback
#7671 aperta il 14 feb 2022
Metriche repository
- Star
- (5369 star)
- Metriche merge PR
- (Merge medio 3g 12h) (5 PR mergiate in 30 g)
Descrizione
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.