caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* A bug(?) around phantoms in 3.11.0 b1 (Re: [Caml-list] OCaml version 3.11.0+beta1)
@ 2008-10-21  7:15 Jun Furuse
  2008-10-21  8:32 ` A bug(?) around phantoms in 3.11.0 b1 Jacques Garrigue
  0 siblings, 1 reply; 3+ messages in thread
From: Jun Furuse @ 2008-10-21  7:15 UTC (permalink / raw)
  To: caml users

Hi,

I found a strange bug in 3.11.0 beta 1. The following typical example
of phantom types does not compile any more. (It is compilable in
3.10.2, but not in release311):

module M : sig
  type +'a t constraint 'a = [< `checked | `unchecked ]
  val check : _ t -> [ `checked ] t
end = struct
  type +'a t = { x : int } constraint 'a = [< `checked | `unchecked ]
  let check (t : _ t) = t (* actually it grants anything *)
end

A strange thing is that if I change the definition as follows it compiles!

module M : sig
  type +'a t constraint 'a = [< `checked | `unchecked ]
  val check : _ t -> [ `checked ] t
end = struct
  type u = { x : int } (* strange workaround *)
  type +'a t = u constraint 'a = [< `checked | `unchecked ]
  let check (t : _ t) = t (* actually it grants anything *)
end

=
j


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-10-21  9:21 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-10-21  7:15 A bug(?) around phantoms in 3.11.0 b1 (Re: [Caml-list] OCaml version 3.11.0+beta1) Jun Furuse
2008-10-21  8:32 ` A bug(?) around phantoms in 3.11.0 b1 Jacques Garrigue
2008-10-21  9:21   ` Jun Furuse

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).