Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0004569OCamlOCaml generalpublic2008-06-25 05:022008-06-25 05:06
Reportergarrigue 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version3.10.2 
Target VersionFixed in Version3.10.3+dev 
Summary0004569: Conjunctive polymorphic variants in class parameter constraints are rejected
DescriptionReported by Khoo Yit Phang on the caml list 2008-06-24:

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
TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0004524)
garrigue (manager)
2008-06-25 05:06

This was due to the way unification is used during type expansion.
Fxied in branch release310 by making the unification rigid when
expanding a type during an equality check.

- Issue History
Date Modified Username Field Change
2008-06-25 05:02 garrigue New Issue
2008-06-25 05:06 garrigue Status new => closed
2008-06-25 05:06 garrigue Note Added: 0004524
2008-06-25 05:06 garrigue Resolution open => fixed
2008-06-25 05:06 garrigue Fixed in Version => 3.10.3+dev


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker