Thanks Leo!
This default behaviour is a bit surprising since usually, methods are not typed as polymorphic unless stated explicitely. Here, if I wanted the method m to be more polymorphic I could have written this:
# class type ['a] c = object ('a) method m : 'b. 'b end;;
class type ['a] c = object ('a) constraint 'a = < m : 'b. 'b; .. > method m : 'b end
This was an easy way to say that the polymorphism of m was not captured by 'a. I don't want to abuse your time, but if you have a tiny example illustrating when this automatic promotion is indeed useful, I'd be curious to see it. In any case, many thanks for the fix, which I'll use right away.
cheers,
ph.