[GHC] #12395: Misleading GHCi errors when package is installed

GHC ghc-devs at haskell.org
Mon Aug 29 21:07:16 UTC 2016


#12395: Misleading GHCi errors when package is installed
-------------------------------------+-------------------------------------
        Reporter:  crockeea          |                Owner:
            Type:  bug               |               Status:  new
        Priority:  high              |            Milestone:
       Component:  GHCi              |              Version:  8.0.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Incorrect         |  Unknown/Multiple
  warning at compile-time            |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #11536            |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by ezyang):

 I think the answer is, "You shouldn't use cabal install, full stop. But
 you *especially* shouldn't use it on code you are editing and
 recompiling."

 Here's what's happening:

 1. When you cabal install the package, it gets added to the user package
 database. This means that if you run ghci without any flags, all of the
 modules from this package are available for import.

 2. When you ghci Main.hs, it first looks to see if there's a local B.hs.
 There is none, so then it looks to see if any exposed packages in the
 databases its using (including the user one) have B. The one that cabal
 install'ed is there, so it uses that! And so now you have two versions of
 A in scope: one that came from the cabal install'ed package, and one that
 was locally interpreted by bytecode.

 I think GHC's error messages here could be a lot better. But that's what's
 happening. If you unregister the installed package (ghc-pkg unregister)
 you'll stop picking up the installed copy.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12395#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list