dependency 1.2.0.1 → 1.2.0.3
raw patch · 5 files changed
+33/−53 lines, 5 filesdep −micro-recursion-schemesdep −recursion-schemesdep ~ansi-wl-pprintdep ~basedep ~binarysetup-changedPVP ok
version bump matches the API change (PVP)
Dependencies removed: micro-recursion-schemes, recursion-schemes
Dependency ranges changed: ansi-wl-pprint, base, binary, containers, criterion, deepseq, hspec, microlens
API changes (from Hackage documentation)
Files
- CHANGELOG.md +5/−0
- Setup.hs +0/−2
- dependency.cabal +5/−12
- src/Data/Dependency/Type.hs +11/−39
- test/Spec.hs +12/−0
+ CHANGELOG.md view
@@ -0,0 +1,5 @@+# dependency++## 1.2.0.3++ * Fewer dependencies
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
dependency.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: dependency-version: 1.2.0.1+version: 1.2.0.3 license: BSD3 license-file: LICENSE copyright: Copyright: (c) 2018 Vanessa McHale@@ -12,6 +12,7 @@ category: Development, Build build-type: Simple extra-doc-files: README.md+ CHANGELOG.md source-repository head type: darcs@@ -33,26 +34,18 @@ Data.Dependency.Sort default-language: Haskell2010 other-extensions: DeriveAnyClass DeriveGeneric OverloadedStrings- DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable- OverloadedStrings TypeFamilies TupleSections+ DeriveFoldable DeriveFunctor TupleSections ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat build-depends:- base >=4.11 && <5,+ base >=4.9 && <5, ansi-wl-pprint -any, containers >=0.5.9, microlens -any, binary -any, deepseq -any - if impl(ghc >=8.2)- build-depends:- micro-recursion-schemes -any- else- build-depends:- recursion-schemes >=5.0.1- - if flag(development)+ if (flag(development) && impl(ghc <8.4)) ghc-options: -Werror test-suite dependency-test
src/Data/Dependency/Type.hs view
@@ -1,10 +1,7 @@-{-# LANGUAGE DeriveAnyClass #-}-{-# LANGUAGE DeriveFoldable #-}-{-# LANGUAGE DeriveFunctor #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PatternSynonyms #-}-{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveGeneric #-} module Data.Dependency.Type ( Dependency (..) , Version (..)@@ -14,15 +11,14 @@ , check ) where -import Control.DeepSeq (NFData)+import Control.DeepSeq (NFData) import Data.Binary-import Data.Functor.Foldable-import Data.List (intercalate)-import qualified Data.Map as M-import qualified Data.Set as S-import GHC.Generics (Generic)-import GHC.Natural (Natural)-import Text.PrettyPrint.ANSI.Leijen hiding ((<$>), (<>))+import Data.List (intercalate)+import qualified Data.Map as M+import Data.Semigroup+import qualified Data.Set as S+import GHC.Generics (Generic)+import GHC.Natural (Natural) -- | A package set is simply a map between package names and a set of packages. newtype PackageSet a = PackageSet { _packageSet :: M.Map String (S.Set a) }@@ -77,27 +73,3 @@ satisfies (Eq x) y = x == y satisfies (Bounded x y) z = satisfies x z && satisfies y z satisfies None _ = True--data ConstraintF a x = LessThanEqF a- | GreaterThanEqF a- | EqF a- | BoundedF x x- | NoneF- deriving (Functor)--type instance Base (Constraint a) = ConstraintF a--instance Recursive (Constraint a) where- project (LessThanEq x) = LessThanEqF x- project (GreaterThanEq x) = GreaterThanEqF x- project (Eq x) = EqF x- project (Bounded x y) = BoundedF x y- project None = NoneF--instance Pretty a => Pretty (Constraint a) where- pretty = cata a where- a (LessThanEqF v) = "≤" <+> pretty v- a (GreaterThanEqF v) = "≥" <+> pretty v- a (EqF v) = "≡" <+> pretty v- a (BoundedF c c') = c <+> "∧" <+> c'- a NoneF = mempty
test/Spec.hs view
@@ -21,12 +21,22 @@ defV :: Version defV = Version [0,1,0] +specNew :: Dependency+specNew = Dependency "spec" mempty (Version [0,2,0])++specOld :: Dependency+specOld = Dependency "spec" ((,LessThanEq (Version [0,1,0])) <$> ["spec"]) (Version [0,1,0])+ ghcMod :: Dependency ghcMod = Dependency "ghc-mod" [("lens", LessThanEq defV)] defV mapSingles :: [(d, b)] -> [(d, S.Set b)] mapSingles = fmap (second S.singleton) +set' :: PackageSet Dependency+set' = PackageSet $+ M.singleton "spec" (S.fromList [specOld, specNew])+ set :: PackageSet Dependency set = PackageSet $ M.fromList (("lens", S.fromList [lens, newLens]) :@@ -39,3 +49,5 @@ resolveDependencies set [newLens] `shouldBe` Right [[free, comonad], [newLens]] it "correctly resolves dependencies in a package set" $ resolveDependencies set [ghcMod] `shouldBe` Right [[free, comonad], [lens], [ghcMod]]+ it "correctly resolves dependencies in a package set" $+ resolveDependencies set' [specOld] `shouldBe` Right [[specOld]]