Version française
Home     About     Download     Resources     Contact us    
Browse thread
Problem with class method and polymorphic variants
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Khoo Yit Phang <khooyp@c...>
Subject: Re: [Caml-list] Problem with class method and polymorphic variants
Hi,

Thanks for the quick response! I've encountered another strange one  
that may be related. The code below compiles only if you remove the  
underscore in the method "_a". The error message is similar to the  
earlier one, but I think it's a different problem?

class ['a] node d =
     object
         method _d : 'a = d
         method p (x : 'a) = "<data>"
     end

class ['a] pnode data =
     object (self)
         inherit ['a] node data
         (* doesn't compile with the underscore in "_a" *)
         method _a = self
         method p = function `P p -> p#name
     end

Yit
June 25, 2008

On Jun 24, 2008, at 11:12 PM, Jacques Garrigue wrote:

> From: Khoo Yit Phang <khooyp@cs.umd.edu>
>> 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
>
> Of course this is a bug. I added it myself to the bug tracker.
> By the way you could also trigger it in the toplevel by giving
> explicitly a module signature (this is what ocamlc does internally).
>
> This is now fixed in CVS, branch release310.
> Note that you may still have other kinds of problems using
> upper-bounded polymorpic variants inside constraints. Just report them
> as you go...
>
> Cheers,
>
> Jacques Garrigue