
#1480: Template Haskell should allow reification of modules ----------------------------+---------------------------------------------- Reporter: igloo | Owner: Type: feature | Status: closed request | Milestone: 7.8.1 Priority: highest | Version: 7.7 Component: | Keywords: Template Haskell | Architecture: Unknown/Multiple Resolution: fixed | Difficulty: Moderate (less than a day) Operating System: | Blocked By: Unknown/Multiple | Related Tickets: Type of failure: | None/Unknown | Test Case: | Blocking: 8398 | ----------------------------+---------------------------------------------- Comment (by simonmar): Replying to [comment:24 simonpj]:
Simon, I don't understand the relationship between `mi_deps` and `mi_usages` fields of `ModIface`. Both seem implicated in the recompilation check. Can you clarify?
I've just been poking around in the source tree and the wiki, and I think a concise summary is this: `mi_deps` lists everything below the module, whereas `mi_usages` lists the bits that the module actually depends on, and their fingerprints. `mi_usages` is used ''only'' by the recompilation checker, whereas `mi_deps` is used by the renamer and other places (linking?), and by the recompilation checker. The `mi_usages` of modules that we are not compiling are completely redundant, we never even load them - the interface deserializer returns a thunk for that bit of the `.hi` file, and we never look at it. There is some overlap between these two fields. As far as I know it's been this way for a long time - since before I implemented fingerprints I think. Perhaps the redundancy could be eliminated... but there are a lot of subtleties here. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/1480#comment:26 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler