File tree Expand file tree Collapse file tree 1 file changed +11
-8
lines changed Expand file tree Collapse file tree 1 file changed +11
-8
lines changed Original file line number Diff line number Diff line change @@ -193,15 +193,18 @@ performInstall set pkgName PackageInfo{ repo, version } = do
193
193
pure pkgDir
194
194
195
195
getReverseDeps :: PackageSet -> PackageName -> IO [(PackageName , PackageInfo )]
196
- getReverseDeps db dep =
197
- List. nub <$> foldMap go (Map. toList db)
196
+ getReverseDeps = getReverseDeps' Set. empty
198
197
where
199
- go pair@ (packageName, PackageInfo {dependencies}) =
200
- case List. find (== dep) dependencies of
201
- Nothing -> return mempty
202
- Just _ -> do
203
- innerDeps <- getReverseDeps db packageName
204
- return $ pair : innerDeps
198
+ getReverseDeps' seen db dep = List. nub <$> foldMap (go seen db dep) (Map. toList db)
199
+ go seen db dep pair@ (packageName, PackageInfo {dependencies})
200
+ | packageName `Set.member` seen =
201
+ exitWithErr (" Cycle in package dependencies at package " <> runPackageName packageName)
202
+ | otherwise =
203
+ case List. find (== dep) dependencies of
204
+ Nothing -> return mempty
205
+ Just _ -> do
206
+ innerDeps <- getReverseDeps' (Set. insert packageName seen) db packageName
207
+ return $ pair : innerDeps
205
208
206
209
getTransitiveDeps :: PackageSet -> [PackageName ] -> IO [(PackageName , PackageInfo )]
207
210
getTransitiveDeps db deps =
You can’t perform that action at this time.
0 commit comments