Generalize Ctype.free_variables
to Ctype.free_variables_list
#1518
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.
(See also #1519, which attempts to fix the same problem)
The motivation for this change is similar to #1503's: we sometimes collect all free variables in a list of types
tyl
by passing a fakeTTuple
toCtype.free_variables
, as inCtype.free_variables (Btype.newgenty (Ttuple tyl))
.However, this is fragile to changes in tuples, and in particular, becomes messy when adding labeled tuples: the above would become
Ctype.free_variables (Btype.newgenty (Ttuple (List.map (fun t -> None, t) tyl)))
.