[GHC] #11013: GHC sometimes forgets to test for hs-boot consistency

GHC ghc-devs at haskell.org
Sat Oct 24 07:54:01 UTC 2015


#11013: GHC sometimes forgets to test for hs-boot consistency
-------------------------------------+-------------------------------------
           Reporter:  ezyang         |             Owner:
               Type:  bug            |            Status:  new
           Priority:  low            |         Milestone:
          Component:  Compiler       |           Version:  7.11
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  GHC accepts
  Unknown/Multiple                   |  invalid program
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 Steps to reproduce: create your classic circular dependency:

 {{{
 -- A.hs-boot
 module A where
 }}}

 {{{
 -- B.hs
 module B where
 import {-# SOURCE #-} A
 }}}

 {{{
 -- A.hs
 module A where
 import B
 }}}

 Now run this:

 {{{
 ghc -c A.hs-boot
 ghc -c B.hs
 ghc -c A.hs
 echo "module A where x :: Bool" > A.hs-boot
 ghc -c A.hs-boot
 ghc -c B.hs
 ghc -c A.hs
 }}}

 Expected result: A.hs recompiles and gives us an error that we don't
 implement enough.

 Actual result: compilation IS NOT required. (Obviously, if you force
 recomp you do get an error now.)

 I think the problem is `checkOldIface` doesn't also look for an hi-boot
 file, and even if it did, we don't record the hashes from the hi-boot file
 in the hi file proper (they're not an immediate dependency).

 Related #10333

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


More information about the ghc-tickets mailing list