Fix parseLiteral not called on per-schema scalar overrides for inline arguments#1880
Merged
Fix parseLiteral not called on per-schema scalar overrides for inline arguments#1880
Conversation
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.
AST::valueFromAST() called parseLiteral() on the built-in scalar singleton from field definitions, not the custom override registered via the type loader. This meant inline literal arguments like
node(id: 123)silently skipped custom parsing logic.Pass the Schema into valueFromAST() and resolve built-in scalars from it before calling parseLiteral(), mirroring the parseValue() fix in Values::coerceInputValue().
Also thread the schema through getDirectiveValues() so directive arguments (e.g.
@include(if: true)) use schema-resolved scalars too.Extract Type::isBuiltInScalarName() to centralize the name check without requiring an instanceof guard.
Related to #1869