Remove InvalidScalarArgument (BC break) #7181
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This could be controversial! I'm happy to close if you think it might be too disruptive for Psalm 5.
InvalidScalarArgument
originally came about because, in non-strict mode, PHP is more lenient with those scalar type conversions.If you take the example given the example code, and add a
strict_types
declare you getInvalidArgument
(example).But that's not universal — docblock types are treated differently than runtime typehints. This can make some bugs seem less harmful even though they still lead to runtime errors (albeit with a level of indirection).
InvalidScalarArgument
has also never played comfortably withPossiblyInvalidArgument
— the former often suppresses the latter in an unintuitive fashion.This PR removes it in favour of
InvalidArgument
/PossiblyInvalidArgument
— whichever is more appropriate.