@@ -34,9 +34,10 @@ import Distribution.Package
34
34
import Distribution.PackageDescription
35
35
import Distribution.PackageDescription.Configuration
36
36
import Distribution.Utils.ShortText (fromShortText )
37
- import Distribution.Simple.Utils (safeLast )
38
37
39
38
import Control.Concurrent
39
+ import qualified Data.List.NonEmpty as NE
40
+ import Data.List.NonEmpty (NonEmpty )
40
41
import Data.Maybe (mapMaybe )
41
42
import Data.Map (Map )
42
43
import qualified Data.Map as Map
@@ -233,9 +234,9 @@ listFeature CoreFeature{..}
233
234
False -> do
234
235
index <- queryGetPackageIndex
235
236
let pkgs = PackageIndex. lookupPackageName index pkgname
236
- case pkgs of
237
- [] -> return () -- this shouldn't happen
238
- _ -> modifyMemState itemCache . uncurry Map. insert =<< constructItem pkgs
237
+ case NE. nonEmpty pkgs of
238
+ Nothing -> return () -- this shouldn't happen
239
+ Just ne -> modifyMemState itemCache . uncurry Map. insert =<< constructItem ne
239
240
240
241
updateDesc pkgname = do
241
242
index <- queryGetPackageIndex
@@ -256,13 +257,14 @@ listFeature CoreFeature{..}
256
257
constructItemIndex :: IO (Map PackageName PackageItem )
257
258
constructItemIndex = do
258
259
index <- queryGetPackageIndex
259
- items <- mapM constructItem $ PackageIndex. allPackagesByName index
260
- return $ Map. fromList items
260
+ let byName = PackageIndex. allPackagesByNameNE index
261
+ mPkgInfos <- traverse (mapM constructItem) (NE. nonEmpty byName)
262
+ pure $ foldMap (Map. fromList . NE. toList) mPkgInfos
261
263
262
- constructItem :: [ PkgInfo ] -> IO (PackageName , PackageItem )
264
+ constructItem :: NonEmpty PkgInfo -> IO (PackageName , PackageItem )
263
265
constructItem pkgs = do
264
266
let pkgname = packageName pkg
265
- pkg = last pkgs
267
+ pkg = NE. last pkgs
266
268
-- [reverse index disabled] revCount <- query . GetReverseCount $ pkgname
267
269
users <- queryGetUserDb
268
270
tags <- queryTagsForPackage pkgname
@@ -271,7 +273,7 @@ listFeature CoreFeature{..}
271
273
deprs <- queryGetDeprecatedFor pkgname
272
274
maintainers <- queryUserGroup (maintainersGroup pkgname)
273
275
packageR <- rankPackage versions (cmFind pkgname downs)
274
- (UserIdSet. size maintainers) documentation tar env pkgs (safeLast pkgs)
276
+ (UserIdSet. size maintainers) documentation tar env pkgs
275
277
276
278
return $ (,) pkgname $ (updateDescriptionItem (pkgDesc pkg) $ emptyPackageItem pkgname) {
277
279
itemTags = tags
0 commit comments