Fix a minor bug in circular reference detection of deeply nested input objects #475
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.
Issue
When generating input object types with elm-graphql, some input objects get incorrectly flagged as containing loops, and get wrapped in a custom type.
Reference issue: #33
Steps to repro
Create an input object type that contains at least 3 layers of other input objects.
Example (in graphql schema notation):
Generate this schema using elm-graphql.
TypeOne
will be generated as:Root Cause
The bug originates when we descend down the type trees to inspect the fields of the first input object that are input objects themselves. We correctly push the first input object's name onto "visitedClasses", but also pass the first input object's name as the currently evaluating name in the next loop of the recursion, when it should instead be the second layer child that we're checking.
Fix
This PR updates the logic to pass the correct currently evaluation input object's name, and adds a test to guard against regressions.