summaryrefslogtreecommitdiff
path: root/compiler/GHC/Iface/Recomp.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Iface/Recomp.hs')
-rw-r--r--compiler/GHC/Iface/Recomp.hs5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/GHC/Iface/Recomp.hs b/compiler/GHC/Iface/Recomp.hs
index 9bfbe218d6..fc53b91d68 100644
--- a/compiler/GHC/Iface/Recomp.hs
+++ b/compiler/GHC/Iface/Recomp.hs
@@ -74,6 +74,7 @@ import Data.Either
import qualified Data.Semigroup
import GHC.List (uncons)
import Data.Ord
+import Data.Containers.ListUtils
{-
-----------------------------------------------
@@ -461,7 +462,7 @@ checkDependencies hsc_env summary iface
let (hs, ps) = partitionEithers es
res1 <- liftIO $ check_mods (sort hs) prev_dep_mods
- let allPkgDeps = sortBy (comparing snd) (ps ++ bkpk_units)
+ let allPkgDeps = sortBy (comparing snd) $ nubOrdOn snd (ps ++ implicit_deps ++ bkpk_units)
res2 <- liftIO $ check_packages allPkgDeps prev_dep_pkgs
return (res1 `mappend` res2)
where
@@ -475,6 +476,8 @@ checkDependencies hsc_env summary iface
bkpk_units = map (("Signature",) . indefUnit . instUnitInstanceOf . moduleUnit) (requirementMerges units (moduleName (mi_module iface)))
+ implicit_deps = map ("Implicit",) (implicitPackageDeps dflags)
+
classify _ (Found _ mod)
| isHomeUnit home_unit (moduleUnit mod) = Right (Left (moduleName mod))