diff --git a/Cabal/Distribution/Version.hs b/Cabal/Distribution/Version.hs index 17c1fb7b1af0d3f4acc131bb45e70b8601a66580..47a13146c6c55bef5e8049b5c1d90ecedc6d498a 100644 --- a/Cabal/Distribution/Version.hs +++ b/Cabal/Distribution/Version.hs @@ -44,6 +44,8 @@ module Distribution.Version ( simplifyVersionRange, foldVersionRange, foldVersionRange', + hasUpperBound, + hasLowerBound, -- ** Modification removeUpperBound, @@ -805,3 +807,29 @@ instance Text VersionRange where (">", LaterVersion), (">=", orLaterVersion), ("==", ThisVersion) ] + +-- | Does the version range have an upper bound? +-- +-- @since 1.24.0.0 +hasUpperBound :: VersionRange -> Bool +hasUpperBound AnyVersion = False +hasUpperBound (ThisVersion _) = True +hasUpperBound (LaterVersion _) = False +hasUpperBound (EarlierVersion _) = True +hasUpperBound (WildcardVersion _) = True +hasUpperBound (UnionVersionRanges x y) = hasUpperBound x && hasUpperBound y +hasUpperBound (IntersectVersionRanges x y) = hasUpperBound x || hasUpperBound y +hasUpperBound (VersionRangeParens x) = hasUpperBound x + +-- | Does the version range have a lower bound? +-- +-- @since 1.24.0.0 +hasLowerBound :: VersionRange -> Bool +hasLowerBound AnyVersion = False +hasLowerBound (ThisVersion _) = True +hasLowerBound (LaterVersion _) = True +hasLowerBound (EarlierVersion _) = False +hasLowerBound (WildcardVersion _) = True +hasLowerBound (UnionVersionRanges x y) = hasLowerBound x && hasLowerBound y +hasLowerBound (IntersectVersionRanges x y) = hasLowerBound x || hasLowerBound y +hasLowerBound (VersionRangeParens x) = hasLowerBound x