From a28a2968e3e5c2f1d903550699db022b17375150 Mon Sep 17 00:00:00 2001
From: Duncan Coutts <duncan@community.haskell.org>
Date: Tue, 21 Jul 2015 19:01:32 +0100
Subject: [PATCH] Move PackageFixedDeps class to Types module

It was in the PackageIndex module but it was unused there and it
being there was just confusing.
---
 cabal-install/Distribution/Client/Install.hs  |  2 --
 .../Distribution/Client/InstallPlan.hs        |  4 +---
 .../Distribution/Client/PackageIndex.hs       | 23 +------------------
 .../Distribution/Client/PlanIndex.hs          |  2 +-
 cabal-install/Distribution/Client/Types.hs    | 18 +++++++++++++--
 5 files changed, 19 insertions(+), 30 deletions(-)

diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs
index 93c2af9f11..68fa7303ad 100644
--- a/cabal-install/Distribution/Client/Install.hs
+++ b/cabal-install/Distribution/Client/Install.hs
@@ -96,8 +96,6 @@ import Distribution.Client.BuildReports.Types
          ( ReportLevel(..) )
 import Distribution.Client.SetupWrapper
          ( setupWrapper, SetupScriptOptions(..), defaultSetupScriptOptions )
-import Distribution.Client.PackageIndex
-         ( PackageFixedDeps(..) )
 import qualified Distribution.Client.BuildReports.Anonymous as BuildReports
 import qualified Distribution.Client.BuildReports.Storage as BuildReports
          ( storeAnonymous, storeLocal, fromInstallPlan, fromPlanningFailure )
diff --git a/cabal-install/Distribution/Client/InstallPlan.hs b/cabal-install/Distribution/Client/InstallPlan.hs
index 91da634445..cb9fd04884 100644
--- a/cabal-install/Distribution/Client/InstallPlan.hs
+++ b/cabal-install/Distribution/Client/InstallPlan.hs
@@ -55,7 +55,7 @@ import Distribution.Client.Types
          , ReadyPackage(..), readyPackageToConfiguredPackage
          , InstalledPackage, BuildFailure, BuildSuccess(..), enableStanzas
          , InstalledPackage(..), fakeInstalledPackageId
-         , ConfiguredId(..)
+         , ConfiguredId(..), PackageFixedDeps(..)
          )
 import Distribution.Package
          ( PackageIdentifier(..), PackageName(..), Package(..), packageName
@@ -70,8 +70,6 @@ import Distribution.PackageDescription
          )
 import Distribution.Client.PackageUtils
          ( externalBuildDepends )
-import Distribution.Client.PackageIndex
-         ( PackageFixedDeps(..) )
 import Distribution.Client.ComponentDeps (ComponentDeps)
 import qualified Distribution.Client.ComponentDeps as CD
 import Distribution.PackageDescription.Configuration
diff --git a/cabal-install/Distribution/Client/PackageIndex.hs b/cabal-install/Distribution/Client/PackageIndex.hs
index c975177d61..0efb485c78 100644
--- a/cabal-install/Distribution/Client/PackageIndex.hs
+++ b/cabal-install/Distribution/Client/PackageIndex.hs
@@ -16,9 +16,6 @@ module Distribution.Client.PackageIndex (
   -- * Package index data type
   PackageIndex,
 
-  -- * Fine-grained package dependencies
-  PackageFixedDeps(..),
-
   -- * Creating an index
   fromList,
 
@@ -61,30 +58,12 @@ import Data.Maybe (isJust, fromMaybe)
 import Distribution.Package
          ( PackageName(..), PackageIdentifier(..)
          , Package(..), packageName, packageVersion
-         , Dependency(Dependency)
-         , InstalledPackageId, installedDepends )
+         , Dependency(Dependency) )
 import Distribution.Version
          ( withinRange )
-import Distribution.InstalledPackageInfo
-         ( InstalledPackageInfo_ )
 import Distribution.Simple.Utils
          ( lowercase, comparing )
 
-import Distribution.Client.ComponentDeps (ComponentDeps)
-import qualified Distribution.Client.ComponentDeps as CD
-
--- | Subclass of packages that have specific versioned dependencies.
---
--- So for example a not-yet-configured package has dependencies on version
--- ranges, not specific versions. A configured or an already installed package
--- depends on exact versions. Some operations or data structures (like
---  dependency graphs) only make sense on this subclass of package types.
---
-class Package pkg => PackageFixedDeps pkg where
-  depends :: pkg -> ComponentDeps [InstalledPackageId]
-
-instance PackageFixedDeps (InstalledPackageInfo_ str) where
-  depends = CD.fromInstalled . installedDepends
 
 -- | The collection of information about packages from one or more 'PackageDB's.
 --
diff --git a/cabal-install/Distribution/Client/PlanIndex.hs b/cabal-install/Distribution/Client/PlanIndex.hs
index ca3be6fe36..5e837c6eed 100644
--- a/cabal-install/Distribution/Client/PlanIndex.hs
+++ b/cabal-install/Distribution/Client/PlanIndex.hs
@@ -42,7 +42,7 @@ import Distribution.Version
 
 import Distribution.Client.ComponentDeps (ComponentDeps)
 import qualified Distribution.Client.ComponentDeps as CD
-import Distribution.Client.PackageIndex
+import Distribution.Client.Types
          ( PackageFixedDeps(..) )
 import Distribution.Simple.PackageIndex
          ( PackageIndex, allPackages, insert, lookupInstalledPackageId )
diff --git a/cabal-install/Distribution/Client/Types.hs b/cabal-install/Distribution/Client/Types.hs
index 129f65b489..da840c4ca6 100644
--- a/cabal-install/Distribution/Client/Types.hs
+++ b/cabal-install/Distribution/Client/Types.hs
@@ -20,14 +20,14 @@ import Distribution.Package
          , HasInstalledPackageId(..), PackageInstalled(..)
          , LibraryName, packageKeyLibraryName )
 import Distribution.InstalledPackageInfo
-         ( InstalledPackageInfo )
+         ( InstalledPackageInfo, InstalledPackageInfo_ )
 import Distribution.PackageDescription
          ( Benchmark(..), GenericPackageDescription(..), FlagAssignment
          , TestSuite(..) )
 import Distribution.PackageDescription.Configuration
          ( mapTreeData )
 import Distribution.Client.PackageIndex
-         ( PackageIndex, PackageFixedDeps(..) )
+         ( PackageIndex )
 import Distribution.Client.ComponentDeps
          ( ComponentDeps )
 import qualified Distribution.Client.ComponentDeps as CD
@@ -58,6 +58,20 @@ data SourcePackageDb = SourcePackageDb {
 -- * Various kinds of information about packages
 -- ------------------------------------------------------------
 
+-- | Subclass of packages that have specific versioned dependencies.
+--
+-- So for example a not-yet-configured package has dependencies on version
+-- ranges, not specific versions. A configured or an already installed package
+-- depends on exact versions. Some operations or data structures (like
+--  dependency graphs) only make sense on this subclass of package types.
+--
+class Package pkg => PackageFixedDeps pkg where
+  depends :: pkg -> ComponentDeps [InstalledPackageId]
+
+instance PackageFixedDeps (InstalledPackageInfo_ str) where
+  depends = CD.fromInstalled . installedDepends
+
+
 -- | InstalledPackage caches its dependencies as source package IDs.
 -- This is for the benefit of the top-down solver only.
 data InstalledPackage = InstalledPackage
-- 
GitLab