You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Original bug ID: 4569 Reporter:@garrigue Status: closed (set by @garrigue on 2008-06-25T03:06:31Z) Resolution: fixed Priority: normal Severity: minor Version: 3.10.2 Fixed in version: 3.10.3+dev Category: ~DO NOT USE (was: OCaml general)
Bug description
Reported 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
The text was updated successfully, but these errors were encountered:
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.
Original bug ID: 4569
Reporter: @garrigue
Status: closed (set by @garrigue on 2008-06-25T03:06:31Z)
Resolution: fixed
Priority: normal
Severity: minor
Version: 3.10.2
Fixed in version: 3.10.3+dev
Category: ~DO NOT USE (was: OCaml general)
Bug description
Reported 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
The text was updated successfully, but these errors were encountered: