never executed always true always false
    1 {-# LANGUAGE DeriveFunctor #-}
    2 {-# LANGUAGE DeriveGeneric #-}
    3 module Distribution.Client.Types.PackageSpecifier (
    4     PackageSpecifier (..),
    5     pkgSpecifierTarget,
    6     pkgSpecifierConstraints,
    7 ) where
    8 
    9 import Distribution.Client.Compat.Prelude
   10 import Prelude ()
   11 
   12 import Distribution.Package           (Package (..), packageName, packageVersion)
   13 import Distribution.Types.PackageName (PackageName)
   14 import Distribution.Version           (thisVersion)
   15 
   16 import Distribution.Solver.Types.ConstraintSource
   17 import Distribution.Solver.Types.LabeledPackageConstraint
   18 import Distribution.Solver.Types.PackageConstraint
   19 
   20 -- | A fully or partially resolved reference to a package.
   21 --
   22 data PackageSpecifier pkg =
   23 
   24      -- | A partially specified reference to a package (either source or
   25      -- installed). It is specified by package name and optionally some
   26      -- required properties. Use a dependency resolver to pick a specific
   27      -- package satisfying these properties.
   28      --
   29      NamedPackage PackageName [PackageProperty]
   30 
   31      -- | A fully specified source package.
   32      --
   33    | SpecificSourcePackage pkg
   34   deriving (Eq, Show, Functor, Generic)
   35 
   36 instance Binary pkg => Binary (PackageSpecifier pkg)
   37 instance Structured pkg => Structured (PackageSpecifier pkg)
   38 
   39 pkgSpecifierTarget :: Package pkg => PackageSpecifier pkg -> PackageName
   40 pkgSpecifierTarget (NamedPackage name _)       = name
   41 pkgSpecifierTarget (SpecificSourcePackage pkg) = packageName pkg
   42 
   43 pkgSpecifierConstraints :: Package pkg
   44                         => PackageSpecifier pkg -> [LabeledPackageConstraint]
   45 pkgSpecifierConstraints (NamedPackage name props) = map toLpc props
   46   where
   47     toLpc prop = LabeledPackageConstraint
   48                  (PackageConstraint (scopeToplevel name) prop)
   49                  ConstraintSourceUserTarget
   50 pkgSpecifierConstraints (SpecificSourcePackage pkg)  =
   51     [LabeledPackageConstraint pc ConstraintSourceUserTarget]
   52   where
   53     pc = PackageConstraint
   54          (ScopeTarget $ packageName pkg)
   55          (PackagePropertyVersion $ thisVersion (packageVersion pkg))