Closed zilinc closed 2 years ago
NB: Also resolves an analogous bug for records:
type A
type B
type C
foo : { x : A , y : B } -> ()
bar : () -> { x : A , y : B , c : C! }
quux : () -> ()
quux x = foo (bar x)
I don't think the fix is correct. In both cases, the surface typecheck should reject the programs. <A | B>
is not a subtype of <A | B | C >
. Same for the records.
Error message: