|Anonymous | Login | Signup for a new account||2014-12-21 16:55 CET|
|Main | My View | View Issues | Change Log | Roadmap|
|View Issue Details|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0004383||OCaml||OCaml general||public||2007-09-09 05:11||2007-09-10 05:05|
|Target Version||Fixed in Version||3.10+dev|
|Summary||0004383: including module with private type causes strange error|
|Description||If a module A containing a private type is included in module B which does not have a type signature, the following error occurs:|
The implementation b.ml does not match the interface (inferred signature):
Type declarations do not match:
type t = A.t
is not included in
type t = A.t#row
This did not occur in 3.09.3.
|Additional Information||The following code was used to produce this error:|
module A = struct
type t = private [> ]
The same error occurs if a private object type is used in place of the private variant.
Note that if the struct is included directly, e.g. "include struct type t = private [> ] end", then the error does not occur.
|Tags||No tags attached.|
Fixed in CVS.
The code was assuming than row types could only be abstract in signatures,
but after some change in 3.10 a module may be checked with the signature
inferred from itself, which may in turn contain manifest row types if the
include construct was used...
|2007-09-09 05:11||squirrel||New Issue|
|2007-09-10 05:05||garrigue||Status||new => closed|
|2007-09-10 05:05||garrigue||Note Added: 0004145|
|2007-09-10 05:05||garrigue||Resolution||open => fixed|
|2007-09-10 05:05||garrigue||Fixed in Version||=> 3.10+dev|
|Copyright © 2000 - 2011 MantisBT Group|