Skip to content

Commit 0efbabb

Browse files
committed
Handle re-exported modules when constructing ExportsMap
1 parent f128085 commit 0efbabb

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

ghcide/src/Development/IDE/Types/HscEnvEq.hs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,22 +76,25 @@ newHscEnvEqWithImportPaths envImportPaths hscEnv deps = do
7676
-- compute the package imports
7777
let pkgst = unitState hscEnv
7878
depends = explicitUnits pkgst
79-
targets =
80-
[ (pkg, mn)
79+
modules =
80+
[ m
8181
| d <- depends
8282
, Just pkg <- [lookupPackageConfig d hscEnv]
83-
, (mn, _) <- unitExposedModules pkg
83+
, (modName, maybeOtherPkgMod) <- unitExposedModules pkg
84+
, m <- pure $ case maybeOtherPkgMod of
85+
-- When module is re-exported from another package,
86+
-- the origin module is represented by value in Just
87+
Just otherPkgMod -> otherPkgMod
88+
Nothing -> mkModule (unitInfoId pkg) modName
8489
]
8590

86-
doOne (pkg, mn) = do
87-
modIface <- liftIO $ initIfaceLoad hscEnv $ loadInterface
88-
""
89-
(mkModule (unitInfoId pkg) mn)
90-
(ImportByUser NotBoot)
91+
doOne m = do
92+
modIface <- initIfaceLoad hscEnv $
93+
loadInterface "" m (ImportByUser NotBoot)
9194
return $ case modIface of
9295
Maybes.Failed _r -> Nothing
9396
Maybes.Succeeded mi -> Just mi
94-
modIfaces <- mapMaybeM doOne targets
97+
modIfaces <- mapMaybeM doOne modules
9598
return $ createExportsMap modIfaces
9699

97100
-- similar to envPackageExports, evaluated lazily

0 commit comments

Comments
 (0)