stack-2.11.1: src/Stack/Types/Dependency.hs
{-# LANGUAGE NoImplicitPrelude #-}
module Stack.Types.Dependency
( DepValue (..)
, DepType (..)
) where
import Distribution.Types.VersionRange ( VersionRange )
import Stack.Prelude
import Stack.Types.Version ( intersectVersionRanges )
-- | The value for a map from dependency name. This contains both the version
-- range and the type of dependency, and provides a semigroup instance.
data DepValue = DepValue
{ dvVersionRange :: !VersionRange
, dvType :: !DepType
}
deriving (Show, Typeable)
instance Semigroup DepValue where
DepValue a x <> DepValue b y = DepValue (intersectVersionRanges a b) (x <> y)
-- | Is this package being used as a library, or just as a build tool? If the
-- former, we need to ensure that a library actually exists. See
-- <https://github.com/commercialhaskell/stack/issues/2195>
data DepType
= AsLibrary
| AsBuildTool
deriving (Eq, Show)
instance Semigroup DepType where
AsLibrary <> _ = AsLibrary
AsBuildTool <> x = x