GHCi info: Use src file for cache invalidation
authoralexbiehl <alex.biehl@gmail.com>
Fri, 2 Mar 2018 21:11:45 +0000 (16:11 -0500)
committerBen Gamari <ben@smart-cactus.org>
Fri, 2 Mar 2018 21:11:47 +0000 (16:11 -0500)
Prior to this patch GHCi used the modification time of a module's object
file to invalidate the info cache.

We now look at the modification time of the source file, if present.

This addresses part of
https://ghc.haskell.org/trac/ghc/ticket/12706#comment:3.

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: lelf, alpmestan, rwbarton, thomie, carter

GHC Trac Issues: #12706

Differential Revision: https://phabricator.haskell.org/D4459

ghc/GHCi/UI/Info.hs

index fd8749a..ad390dd 100644 (file)
@@ -276,7 +276,9 @@ collectInfo ms loaded = do
     cacheInvalid name = case M.lookup name ms of
         Nothing -> return True
         Just mi -> do
-            let fp = ml_obj_file (ms_location (modinfoSummary mi))
+            let src_fp = ml_hs_file (ms_location (modinfoSummary mi))
+                obj_fp = ml_obj_file (ms_location (modinfoSummary mi))
+                fp     = fromMaybe obj_fp src_fp
                 last' = modinfoLastUpdate mi
             exists <- doesFileExist fp
             if exists