On 10 January 2005 14:40, Malcolm Wallace wrote:

> "Simon Marlow" <[EMAIL PROTECTED]> writes:
> 
>>> Now presumably the gtk/Graphics/UI/Gtk/General/Signals.hi file
>>> remembers the module name. So ghc reads the module name from
>>> gtk/Graphics/UI/Gtk/General/Signals.hi and then for some reason
>>> looks for Signal.hi which of course it cannot find.
>> 
>> I don't quite follow.  When compiling
>> gtk/Graphics/UI/Gtk/General/Signals.hs did you specify -ohi
>> gtk/Graphics/UI/Gtk/General/Signals.hi?
> 
> I think the problem is probably slightly more convoluted.  When one
> module M exports entities from another N, ghc does not copy the
> relevant entities into the interface file for M, but rather plants
> a pointer to the interface for N, yes?

Yes!

> So I think probably a module like Graphics.UI.Gtk.Foo is importing
> and re-exporting from Graphics.UI.Gtk.Signals. Because, and only
> because, the file Signals.hi is in the directory Graphics/UI/Gtk,
> the import works.

Aha!  I see now.  GHC 6.4 has an improvement here:

$ cat >A.hs
module B where
$ cat >C.hs
import A      
$ ghc -c A.hs
$ ghc -c C.hs

C.hs:1:0:
    Failed to load interface for `A':
        Interface file "./A.hi"
        contains module `B',
        but we were expecting module `A'
        Probable cause: the source code which generated
          "./A.hi"
        has an incompatible module name

Duncan, I think that should address your problem, right?

Cheers,
        Simon
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to