Browse thread
Problem with class method and polymorphic variants
- Khoo Yit Phang
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2008-06-24 (18:17) |
From: | Khoo Yit Phang <khooyp@c...> |
Subject: | Problem with class method and polymorphic variants |
Hi, I discovered that the attached snippet of Ocaml does not compile in ocamlc, but does work in the ocaml toplevel (tested in v3.10.0 and 3.10.2). Removing anything (except the :int annotation) causes the error to go away. Is it a bug in the type-checker? # cat polymorphic-variants-methods-bug.ml class ['a] c (a : 'a) = object (s) method s = s method d : int = match a with `A b -> b#num end # ocamlc polymorphic-variants-methods-bug.ml The implementation polymorphic-variants-methods-bug.ml does not match the interface (inferred signature): Type declarations do not match: type 'a c = < d : int; s : 'a c > constraint 'a = [< `A of < num : int; .. > & < num : int; .. > ] is not included in type 'a c = < d : int; s : 'a c > constraint 'a = [< `A of < num : int; .. > & < num : int; .. > & < num : int; .. > ] #ocamlc -i polymorphic-variants-methods-bug.ml class ['a] c : 'a -> object ('b) constraint 'a = [< `A of < num : int; .. > ] method d : int method s : 'b end Yit June 24, 2008