You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The subsumes check mistakenly allowed any capability to subsume `cap`, since `cap` is expanded
as `caps.cap`, and by the path subcapturing rule `caps.cap <: caps`, where the capture set of
`caps` is empty. This allowed quite a few hidden errors to go through. This commit fixes the
subcapturing issue and all downstream issues caused by that fix.
In particular:
- Don't use path comparison for `x subsumes caps.cap`
- Don't allow an opened existential on the left of a comparison to leak into a capture set on
the right. This would give a "leak" error later in healCaptures.
- Print pre-cc annotated capturing types with @retains annotations with `^`. The annotation is
already rendered as a set in this case, but the `^` was missing.
- Don't recheck `_` right hand sides of uninitialized variables. These were handled in ways
that broke freshness checking. The new `uninitialied` scheme does not have this problem.
0 commit comments