@@ -105,7 +105,7 @@ indexDependencyHieFiles recorder se hscEnv = do
105
105
hieDir :: FilePath
106
106
hieDir = pkgLibDir </> " extra-compilation-artifacts"
107
107
unit :: GHC. Unit
108
- unit = GHC. fromUnitId $ GHC. unitId package
108
+ unit = GHC. RealUnit $ GHC. Definite $ GHC. unitId package
109
109
-- Check if we have already indexed this package.
110
110
moduleRows <- withHieDb se $ \ db ->
111
111
lookupPackage db unit
@@ -141,14 +141,16 @@ indexDependencyHieFiles recorder se hscEnv = do
141
141
packages :: Set Package
142
142
packages = Set. fromList
143
143
$ map Package
144
- -- Take only the packages that are direct or transitive dependencies.
145
- $ filter (\ unitInfo -> GHC. unitId unitInfo `Set.member` dependencyIds) allPackages
144
+ $ Map. elems
145
+ -- Take only the packages in the unitInfoMap that are direct
146
+ -- or transitive dependencies.
147
+ $ Map. filterWithKey (\ uid _ -> uid `Set.member` dependencyIds) unitInfoMap
146
148
where
147
- allPackages :: [ GHC. UnitInfo ]
148
- allPackages = GHC. getUnitInfo hscEnv
149
+ unitInfoMap :: GHC. UnitInfoMap
150
+ unitInfoMap = GHC. getUnitInfoMap hscEnv
149
151
dependencyIds :: Set GHC. UnitId
150
152
dependencyIds =
151
- calculateTransitiveDependencies allPackages directDependencyIds directDependencyIds
153
+ calculateTransitiveDependencies unitInfoMap directDependencyIds directDependencyIds
152
154
directDependencyIds :: Set GHC. UnitId
153
155
directDependencyIds = Set. fromList
154
156
$ map GHC. toUnitId
@@ -157,14 +159,14 @@ indexDependencyHieFiles recorder se hscEnv = do
157
159
158
160
-- calculateTransitiveDependencies finds the UnitId keys in the UnitInfoMap
159
161
-- that are dependencies or transitive dependencies.
160
- calculateTransitiveDependencies :: [ GHC. UnitInfo ] -> Set GHC. UnitId -> Set GHC. UnitId -> Set GHC. UnitId
161
- calculateTransitiveDependencies allPackages allDependencies newDepencencies
162
- -- If there are no new dependencies, then we have found them all,
162
+ calculateTransitiveDependencies :: GHC. UnitInfoMap -> Set GHC. UnitId -> Set GHC. UnitId -> Set GHC. UnitId
163
+ calculateTransitiveDependencies unitInfoMap allDependencies newDepencencies
164
+ -- If there are no new dependencies, we have found them all,
163
165
-- so return allDependencies
164
166
| Set. null newDepencencies = allDependencies
165
167
-- Otherwise recursively add any dependencies of the newDepencencies
166
168
-- that are not in allDependencies already.
167
- | otherwise = calculateTransitiveDependencies allPackages nextAll nextNew
169
+ | otherwise = calculateTransitiveDependencies unitInfoMap nextAll nextNew
168
170
where
169
171
nextAll :: Set GHC. UnitId
170
172
nextAll = Set. union allDependencies nextNew
@@ -175,7 +177,8 @@ calculateTransitiveDependencies allPackages allDependencies newDepencencies
175
177
nextNew = flip Set. difference allDependencies
176
178
$ Set. unions
177
179
$ map (Set. fromList . GHC. unitDepends)
178
- $ filter (\ unitInfo -> GHC. unitId unitInfo `Set.member` newDepencencies) allPackages
180
+ $ Map. elems
181
+ $ Map. filterWithKey (\ uid _ -> uid `Set.member` newDepencencies) unitInfoMap
179
182
180
183
getModulesForPackage :: Package -> [GHC. Module ]
181
184
getModulesForPackage (Package package) =
0 commit comments