Clarify 'Values of Correct Type' rule relates to literals#1118
Merged
Clarify 'Values of Correct Type' rule relates to literals#1118
Conversation
✅ Deploy Preview for graphql-spec-draft ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
df483ec to
7fe1b5a
Compare
This was referenced Oct 17, 2024
Member
Author
|
@graphql/tsc I would love to get your input on this change. |
yaacovCR
reviewed
Oct 17, 2024
yaacovCR
approved these changes
Dec 12, 2024
martinbonnin
approved these changes
Mar 25, 2025
Contributor
martinbonnin
left a comment
There was a problem hiding this comment.
Good clarification 👍
Left a few additional questions that arose while doing the review but the PR in itself is an improvement from the current state and I support merging it.
BoD
approved these changes
Apr 3, 2025
mjmahone
approved these changes
Apr 3, 2025
michaelstaib
approved these changes
Apr 3, 2025
PascalSenn
approved these changes
Apr 3, 2025
23 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
An Input Value is defined as being either a variable (if not const) or one of the literal types (IntValue, FloatValue, StringValue, BooleanValue, NullValue, EnumValue, ListValue or ObjectValue).
The rule "Values of Correct Type" states:
However, an input value can be a variable, and variable coercion is handled at runtime (by CoerceVariableValues). Further, we already have a rule that validates that variables are only used in the positions in which they are allowed: All Variable Usages Are Allowed.
It seems to me that "Values of Correct Type" only meant to handle literal input values, so I've added the word "literal" for clarity. I've also expanded the explanation to reference where to look for variable input value validation. Since input coercion for Input Object references "runtime value", and validation doesn't have access to runtime values, I've made explicit the assumption that values represented by variables will be of the requisite type.
This is an alternative solution to, and
Thank you to @yaacovCR for pointing out this deficiency 🙌