Skip to content

Commit 9088a2f

Browse files
committed
Prefer source modules when combining HPTs
1 parent 2e61b7c commit 9088a2f

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

ghcide/src/Development/IDE/Core/Compile.hs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ import Data.Map (Map)
106106
import Data.Tuple.Extra (dupe)
107107
import Data.Unique as Unique
108108
import Development.IDE.Core.Tracing (withTrace)
109-
import Development.IDE.GHC.Compat.Util (emptyUDFM, plusUDFM)
109+
import Development.IDE.GHC.Compat.Util (emptyUDFM, plusUDFM_C)
110110
import qualified Language.LSP.Server as LSP
111111
import qualified Language.LSP.Types as LSP
112112
import Unsafe.Coerce
@@ -702,11 +702,15 @@ mergeEnvs env extraModSummaries extraMods envs = do
702702
(\fc (im, ifr) -> Compat.extendInstalledModuleEnv fc im ifr) prevFinderCache
703703
$ zip ims ifrs
704704
return $ loadModulesHome extraMods $ env{
705-
hsc_HPT = foldMapBy plusUDFM emptyUDFM hsc_HPT envs,
705+
hsc_HPT = foldMapBy mergeUDFM emptyUDFM hsc_HPT envs,
706706
hsc_FC = newFinderCache,
707707
hsc_mod_graph = mkModuleGraph $ extraModSummaries ++ nubOrdOn ms_mod (concatMap (mgModSummaries . hsc_mod_graph) envs)
708708
}
709709
where
710+
mergeUDFM = plusUDFM_C combineModules
711+
combineModules a b
712+
| HsSrcFile <- mi_hsc_src (hm_iface a) = a
713+
| otherwise = b
710714
-- required because 'FinderCache':
711715
-- 1) doesn't have a 'Monoid' instance,
712716
-- 2) is abstract and doesn't export constructors

ghcide/src/Development/IDE/GHC/Compat/Util.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ module Development.IDE.GHC.Compat.Util (
6262
-- * UniqDFM
6363
emptyUDFM,
6464
plusUDFM,
65+
plusUDFM_C,
6566
-- * String Buffer
6667
StringBuffer(..),
6768
hGetStringBuffer,

0 commit comments

Comments
 (0)