unison/unison-src/transcripts/fix2167.output.md
Greg Pfeil 0031542faf
Add a space before code block info strings
This is for consistency with the `cmark` style. Now the blocks we still
pretty-print ourselves will match the bulk of them that `cmark`
produces.
2024-07-10 13:56:07 -06:00

1002 B

This is just a simple transcript to regression check an ability inference/checking issue.

structural ability R t where
  die : () -> x
  near.impl : Nat -> Either () [Nat]

R.near n = match near.impl n with
  Left e -> die ()
  Right a -> a

R.near1 region loc = match R.near 42 with
  [loc] -> loc
  ls -> R.die ()

  Loading changes detected in scratch.u.

  I found and typechecked these definitions in scratch.u. If you
  do an `add` or `update`, here's how your codebase would
  change:
  
    ⍟ These new definitions are ok to `add`:
    
      structural ability R t
      R.near  : Nat ->{R t} [Nat]
      R.near1 : region -> loc ->{R t} Nat

The issue was that abilities with parameters like this were sometimes causing failures like this because the variable in the parameter would escape to a scope where it no longer made sense. Then solving would fail because the type was invalid.

The fix was to avoid dropping certain existential variables out of scope.