Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0004383OCamlOCaml generalpublic2007-09-09 05:112007-09-10 05:05
Reportersquirrel 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version3.10.0 
Target VersionFixed in Version3.10+dev 
Summary0004383: including module with private type causes strange error
DescriptionIf 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 InformationThe following code was used to produce this error:

---
module A = struct
    type t = private [> ]
end

include A
---

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

- Relationships

-  Notes
(0004145)
garrigue (manager)
2007-09-10 05:05

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...

- Issue History
Date Modified Username Field Change
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
Powered by Mantis Bugtracker