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
Original bug ID: 5989 Reporter:@yallop Assigned to:@garrigue Status: closed (set by @xavierleroy on 2015-12-11T18:18:39Z) Resolution: fixed Priority: normal Severity: minor Version: 4.00.1 Fixed in version: 4.00.2+dev Category: typing Related to:#5981#5997 Child of:#5998 Monitored by:@gasche
Bug description
$ cat private_row_inequality.ml
type (_, _) t =
Any : ('a, 'b) t
| Eq : ('a, 'a) t
module M :
sig
type s = private [> A] val eq : (s, [A | B]) t end = struct type s = [A | `B]
let eq = Eq
end
let f : (M.s, [A | B]) t -> string = function
| Any -> "Any"
let () = print_endline (f M.eq)
$ ocaml private_row_inequality.ml
Any
The text was updated successfully, but these errors were encountered:
Indeed, this is the same problem as 5989: it seems that I misunderstood the relation between unify and mcomp.
In this case again, mcomp is correct, but unify3 itself needs to implement the same behavior.
While we're at that, we should also check object rows...
Original bug ID: 5989
Reporter: @yallop
Assigned to: @garrigue
Status: closed (set by @xavierleroy on 2015-12-11T18:18:39Z)
Resolution: fixed
Priority: normal
Severity: minor
Version: 4.00.1
Fixed in version: 4.00.2+dev
Category: typing
Related to: #5981 #5997
Child of: #5998
Monitored by: @gasche
Bug description
$ cat private_row_inequality.ml
type (_, _) t =
Any : ('a, 'b) t
| Eq : ('a, 'a) t
module M :
sig
type s = private [>
A] val eq : (s, [
A |B]) t end = struct type s = [
A | `B]let eq = Eq
end
let f : (M.s, [
A |
B]) t -> string = function| Any -> "Any"
let () = print_endline (f M.eq)
$ ocaml private_row_inequality.ml
Any
The text was updated successfully, but these errors were encountered: