Skip to content

Commit 5d7dcfd

Browse files
committed
Add record selectors for PackageIndex, and use them when not all fields are destructed.
Signed-off-by: Edward Z. Yang <[email protected]>
1 parent 66bd9cb commit 5d7dcfd

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

Cabal/Distribution/Simple/PackageIndex.hs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,11 @@ import qualified Data.Tree as Tree
132132
-- Packages are uniquely identified in by their 'UnitId', they can
133133
-- also be efficiently looked up by package name or by name and version.
134134
--
135-
data PackageIndex a = PackageIndex
135+
data PackageIndex a = PackageIndex {
136136
-- The primary index. Each InstalledPackageInfo record is uniquely identified
137137
-- by its UnitId.
138138
--
139-
!(Map UnitId a)
139+
unitIdIndex :: !(Map UnitId a),
140140

141141
-- This auxiliary index maps package names (case-sensitively) to all the
142142
-- versions and instances of that package. This allows us to find all
@@ -149,9 +149,9 @@ data PackageIndex a = PackageIndex
149149
--
150150
-- FIXME: Clarify what "preference order" means. Check that this invariant is
151151
-- preserved. See #1463 for discussion.
152-
!(Map PackageName (Map Version [a]))
152+
packageIdIndex :: !(Map PackageName (Map Version [a]))
153153

154-
deriving (Eq, Generic, Show, Read)
154+
} deriving (Eq, Generic, Show, Read)
155155

156156
instance Binary a => Binary (PackageIndex a)
157157

@@ -354,26 +354,26 @@ deleteDependency (Dependency name verstionRange) =
354354
-- | Get all the packages from the index.
355355
--
356356
allPackages :: PackageIndex a -> [a]
357-
allPackages (PackageIndex pids _) = Map.elems pids
357+
allPackages = Map.elems . unitIdIndex
358358

359359
-- | Get all the packages from the index.
360360
--
361361
-- They are grouped by package name (case-sensitively).
362362
--
363363
allPackagesByName :: PackageIndex a -> [(PackageName, [a])]
364-
allPackagesByName (PackageIndex _ pnames) =
364+
allPackagesByName index =
365365
[ (pkgname, concat (Map.elems pvers))
366-
| (pkgname, pvers) <- Map.toList pnames ]
366+
| (pkgname, pvers) <- Map.toList (packageIdIndex index) ]
367367

368368
-- | Get all the packages from the index.
369369
--
370370
-- They are grouped by source package id (package name and version).
371371
--
372372
allPackagesBySourcePackageId :: HasUnitId a => PackageIndex a
373373
-> [(PackageId, [a])]
374-
allPackagesBySourcePackageId (PackageIndex _ pnames) =
374+
allPackagesBySourcePackageId index =
375375
[ (packageId ipkg, ipkgs)
376-
| pvers <- Map.elems pnames
376+
| pvers <- Map.elems (packageIdIndex index)
377377
, ipkgs@(ipkg:_) <- Map.elems pvers ]
378378

379379
--
@@ -387,14 +387,14 @@ allPackagesBySourcePackageId (PackageIndex _ pnames) =
387387
--
388388
lookupUnitId :: PackageIndex a -> UnitId
389389
-> Maybe a
390-
lookupUnitId (PackageIndex m _) uid = Map.lookup uid m
390+
lookupUnitId index uid = Map.lookup uid (unitIdIndex index)
391391

392392
-- | Does a lookup by component identifier. In the absence
393393
-- of Backpack, this is just a 'lookupUnitId'.
394394
--
395395
lookupComponentId :: PackageIndex a -> ComponentId
396396
-> Maybe a
397-
lookupComponentId (PackageIndex m _) uid = Map.lookup (SimpleUnitId uid) m
397+
lookupComponentId index uid = Map.lookup (SimpleUnitId uid) (unitIdIndex index)
398398

399399
-- | Backwards compatibility for Cabal pre-1.24.
400400
{-# DEPRECATED lookupInstalledPackageId "Use lookupUnitId instead" #-}
@@ -410,8 +410,8 @@ lookupInstalledPackageId = lookupUnitId
410410
-- preference, with the most preferred first.
411411
--
412412
lookupSourcePackageId :: PackageIndex a -> PackageId -> [a]
413-
lookupSourcePackageId (PackageIndex _ pnames) pkgid =
414-
case Map.lookup (packageName pkgid) pnames of
413+
lookupSourcePackageId index pkgid =
414+
case Map.lookup (packageName pkgid) (packageIdIndex index) of
415415
Nothing -> []
416416
Just pvers -> case Map.lookup (packageVersion pkgid) pvers of
417417
Nothing -> []
@@ -429,8 +429,8 @@ lookupPackageId index pkgid = case lookupSourcePackageId index pkgid of
429429
--
430430
lookupPackageName :: PackageIndex a -> PackageName
431431
-> [(Version, [a])]
432-
lookupPackageName (PackageIndex _ pnames) name =
433-
case Map.lookup name pnames of
432+
lookupPackageName index name =
433+
case Map.lookup name (packageIdIndex index) of
434434
Nothing -> []
435435
Just pvers -> Map.toList pvers
436436

@@ -442,8 +442,8 @@ lookupPackageName (PackageIndex _ pnames) name =
442442
--
443443
lookupDependency :: PackageIndex a -> Dependency
444444
-> [(Version, [a])]
445-
lookupDependency (PackageIndex _ pnames) (Dependency name versionRange) =
446-
case Map.lookup name pnames of
445+
lookupDependency index (Dependency name versionRange) =
446+
case Map.lookup name (packageIdIndex index) of
447447
Nothing -> []
448448
Just pvers -> [ entry
449449
| entry@(ver, _) <- Map.toList pvers
@@ -466,8 +466,8 @@ lookupDependency (PackageIndex _ pnames) (Dependency name versionRange) =
466466
-- it is a non-empty list of non-empty lists.
467467
--
468468
searchByName :: PackageIndex a -> String -> SearchResult [a]
469-
searchByName (PackageIndex _ pnames) name =
470-
case [ pkgs | pkgs@(PackageName name',_) <- Map.toList pnames
469+
searchByName index name =
470+
case [ pkgs | pkgs@(PackageName name',_) <- Map.toList (packageIdIndex index)
471471
, lowercase name' == lname ] of
472472
[] -> None
473473
[(_,pvers)] -> Unambiguous (concat (Map.elems pvers))
@@ -483,9 +483,9 @@ data SearchResult a = None | Unambiguous a | Ambiguous [a]
483483
-- That is, all packages that contain the given string in their name.
484484
--
485485
searchByNameSubstring :: PackageIndex a -> String -> [a]
486-
searchByNameSubstring (PackageIndex _ pnames) searchterm =
486+
searchByNameSubstring index searchterm =
487487
[ pkg
488-
| (PackageName name, pvers) <- Map.toList pnames
488+
| (PackageName name, pvers) <- Map.toList (packageIdIndex index)
489489
, lsearchterm `isInfixOf` lowercase name
490490
, pkgs <- Map.elems pvers
491491
, pkg <- pkgs ]

0 commit comments

Comments
 (0)