- This commit delays making up inference variables until the
outermost universal quantifiers of a type annotation have
been unwrapped and added to the context. However, failures
can still be generated by putting quantifiers inside other
connectives.
- Previously, the type checker was not using the patterns to inform
which abilities are matched on in cases at all.
- Instead, we walk through all patterns and compile a list of all
abilities involved in matching, then perform a subtype check on
the scrutinee type with a type consisting of all the abilities.
- This strategy seems to be more robust than trying to handle this
case-by-case. In such scenarios, recursion can lead to additional
effects being pushed into the `Request` type that are not informed by
the pattern matching.
- This causes the 1696 transcript to fail appropriately (I believe).