ghc-6.2.1 incorrectly reporting duplicate instance declarations

George Russell ger at informatik.uni-bremen.de
Thu Apr 8 05:21:24 EDT 2004


When I have a collection of files to compile and
(1) I use --make to compile them together;
(2) they are recursive
it works the first time, but when I try to compile them the
second time I get messages about bogus duplicate instance
declarations, for example:

Skipping  GlobalRegistry   ( GlobalRegistry.hs, GlobalRegistry.o )

Duplicate instance declarations:
   In module CodedValue: Control.Monad.Trans.MonadIO CodedValue.CodingMonad
   In module CodedValue: Control.Monad.Trans.MonadIO CodedValue.CodingMonad

Duplicate instance declarations:
   In module CodedValue: GHC.Base.Monad CodedValue.CodingMonad
   In module CodedValue: GHC.Base.Monad CodedValue.CodingMonad

Duplicate instance declarations:
   In module CodedValue: CodedValue.HasCodedValue ty
   In module CodedValue: CodedValue.HasCodedValue ty

It looks as if GHC 6.2.1 includes a new clever feature by which when a
module is imported using import {-# SOURCE #-}, it looks at the
corresponding .hi file (if one is available).  I would guess that it is
somehow importing the instances from this .hi file; however this gets
it muddled so that it thinks instances are really being duplicated when
they are not.

Unfortunately I have given up (after about half an hour of trying) in my
attempts to reduce this to a small test case.  If the Glasgow Haskell
people can't guess what is going on from the above description, I'll
happily explain to them how to obtain and compile the current workbench
sources (it's not as painful as it used to be) and hopefully it'll
be possible to demonstrate the problem.


More information about the Glasgow-haskell-bugs mailing list