map anonymous GraphQL InputObjects to T.untyped #1146
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.
Motivation
When run
tapioca dsl
against a GraphQLType that used an anonymous class inheriting from InputObject, I was seeing errors like these:(when sorbet assertions are being enforced)
(when sorbet assertions are not being enforced)
The problem appears to be that
Tapioca::Dsl::Helpers::GraphqlTypeHelper#type_for
when receiving a descendant ofGraphQL::Schema::InputObject
assumes it will have a name, but with anonymous classes that is not the case:tapioca/lib/tapioca/dsl/helpers/graphql_type_helper.rb
Lines 16 to 47 in 9c6e115
Implementation
I replace the
T.must
with a guard to returnT.untyped
, I'm not sure if we could make a more precise type determination?Tests
I have augmented a test - hopefully it suffices as replication instructions.