Throw if a variadic parameter contains unexpected named arguments #11260
+91
−4
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.
Fixes #11253.
If a method signature has a variadic parameter, you can call that method with any arbitrary named argument that you want. Hooray. However, our codebase rarely expects that and doing so sometimes raises error messages about invalid array access and similar issues.
This practice could also hide typos in named argument calls.
In order to improve the DX on those methods, I'd like to guard the calls to those methods by introducing a trait that validates if a variadic parameter contains any named arguments. If it finds any, an exception is raised that reports those arguments.
I've started with the
QueryBuilder
class, but I could extend this change to other classes if we agree that this is what we want.