@@ -76,22 +76,25 @@ newHscEnvEqWithImportPaths envImportPaths hscEnv deps = do
76
76
-- compute the package imports
77
77
let pkgst = unitState hscEnv
78
78
depends = explicitUnits pkgst
79
- targets =
80
- [ (pkg, mn)
79
+ modules =
80
+ [ m
81
81
| d <- depends
82
82
, 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
84
89
]
85
90
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 )
91
94
return $ case modIface of
92
95
Maybes. Failed _r -> Nothing
93
96
Maybes. Succeeded mi -> Just mi
94
- modIfaces <- mapMaybeM doOne targets
97
+ modIfaces <- mapMaybeM doOne modules
95
98
return $ createExportsMap modIfaces
96
99
97
100
-- similar to envPackageExports, evaluated lazily
0 commit comments