Fix handling of wildcard match cases #1243
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.
This is a followup to #1242 and #1232.
While the preceding gave basic support for sum type constructors and
eliminators, we did not have support for properly typing "wildcard" or default
match cases.
This PR simplifies the representing and logic around such cases and extends the
constraint generator to give the correct typing for match expressions that
include a default case.
The gist:
A match expression of the form
Is now typed to apply to a variant
<A : t, B : u | v >
wherev
is an freerow variable. The open row accounts for the fact that the wildcard handles the
rest of the labels, whatever they may be.
The constraint generator is also expanded with error handling to catch cases
where redundant wildcard's or match statements are included.
CHANGELOG.md
for any new functionalityREADME.md
updated for any listed functionality