From a383f4693915f53cd847f0586b1a0fbb4d82b396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gr=C3=B6ber?= Date: Tue, 18 Aug 2015 04:27:02 +0200 Subject: [PATCH] Fix nasty module graph caching issue resolvedComponentsCache did not consider outgoing edges in the module graph when computing the set of dependent files i.e. for `A -> B, A -> C` `flatten` would give [B,C] instead of [A,B,C] --- Language/Haskell/GhcMod/Caching/Types.hs | 2 +- Language/Haskell/GhcMod/Target.hs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Language/Haskell/GhcMod/Caching/Types.hs b/Language/Haskell/GhcMod/Caching/Types.hs index ae32a7c..c4fce4c 100644 --- a/Language/Haskell/GhcMod/Caching/Types.hs +++ b/Language/Haskell/GhcMod/Caching/Types.hs @@ -47,6 +47,6 @@ data TimedCacheFiles = TimedCacheFiles { -- ^ 'cacheFile' timestamp tcFiles :: [TimedFile] -- ^ Timestamped files returned by the cached action - } + } deriving (Eq, Ord, Show) type ChCacheData = (Programs, FilePath, FilePath, (Version, [Char])) diff --git a/Language/Haskell/GhcMod/Target.hs b/Language/Haskell/GhcMod/Target.hs index ffdcd1f..5391f58 100644 --- a/Language/Haskell/GhcMod/Target.hs +++ b/Language/Haskell/GhcMod/Target.hs @@ -267,7 +267,8 @@ resolvedComponentsCache = Cached { -> [FilePath] flatten = Map.elems >>> map (gmcHomeModuleGraph >>> gmgGraph - >>> Map.elems + >>> (Map.keysSet &&& Map.elems) + >>> uncurry insert >>> map (Set.map mpPath) >>> Set.unions )