
#8029: batch-mode recompilation checking sometimes fails ------------------------------------------+--------------------------------- Reporter: jwlato | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.6.3 Keywords: recompilation, batch-mode | Os: Unknown/Multiple Architecture: Unknown/Multiple | Failure: None/Unknown Difficulty: Unknown | Testcase: Blockedby: | Blocking: Related: | ------------------------------------------+--------------------------------- Comment(by simonpj): Ah, now I understand. Here is what is happening, when using `OneShot` mode, i.e. the "`-c`" flag: * From `import Foo` GHC looks for `Foo.hi` in some exposed package. * When it finds that file, it trusts it. * In this case, `Data/List.hi` exists and is trusted; but actually `Data/List.hs` has gone away. * As you say, for installed packages, the `.hs` files may legitimately not exist. Dealing with the dependencies between `.hi` files and `.hs` files is really what `--make` is for, but I can see the confusion. Here are a couple of suggestions * We could easily make the error message say {{{ It could refer to either `Data.List.foo', imported from `Data.List' (package base) at Data/Top.hs:3:1-16 or `Data.OtherList.foo', imported from `Data.OtherList' at Data/Top.hs:4:1-21 }}} That is, add `(package X)` to say which package the module is from. Probably nothing for the "home package". That might help a little. * A bit harder would be this: for the '''home''' package only, we ''do'' expect source files to exist. So I suppose `Finder.findHomeModule` could look for the source file too, and complain if it finds a `.hi` file without a corresponding `.hs` file (and maybe also check modification times). But of course that too is only a sticking plaster. The source file might exist, and the `.hi` file might have a later modification time; but it might still all be out of date because some module lower down is out of date. And that takes you back to `--make`. Design suggestions, and subsequent patches, would be welcome! Simon -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/8029#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler