Split up the completeValue function #311
Merged
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.
The completeValue function is fairly large and took me a while to understand. This PR extracts out the logic that is different based on the type of the value being completed. Four new functions are added:
The code in each function is identical except i inlined one isAbstractType call to avoid having to add an invariant.
I did add an invariant for an unreachable condition that also exists in the current logic in master, but ends on a return null.
This is a change that I did as part of #304. I'm submitting it as a separate PR. I think its a good change regardless of whether #304 is accepted.
Note that the names in this PR do not match #304. I tried to match the spec more closely with the names here and I will change the other to comply.
The exception to this is using the term leaf to refer to Scalar or Enum, which is established in type/definition.js, but not defined in the spec.