
#14482: GHC -M mode fails to ensure that boot files are built before source files -------------------------------------+------------------------------------- Reporter: bgamari | Owner: (none) Type: bug | Status: patch Priority: normal | Milestone: 8.4.1 Component: Compiler | Version: 8.2.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #14481 | Differential Rev(s): Phab:D4208 Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): I think the payload of the patch is: * Make `M.o` depend on `M.hi-boot`. But let me ask this: in what program will that that not happen without this patch? I think only on programs where * Neither `M.hs` nor any of the module that `M.hs` imports, transitively, does a `{-# SOURCE #-}` import of `M`. And in those cases we can just get rid of `M.hs-boot` entirely. It's not needed. I've had a look at the example in #14481. (I'm not sure why this ticket is distinct from #14481, incidentally.) I believe it has the same property: no one imports `Instances1` in fact. I grant that GHC should not crash. But rather than simply adding an extra dependency, if we find that if there is no transitive edge from `M.hs` to `M.hs-boot`, we should a) add one b) emit a warning that `M.hs-boot` is apparently redundant. Failing to do (b) seems wrong. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14482#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler