packages feed

generic-arbitrary 0.1.0 → 0.2.0

raw patch · 3 files changed

+41/−3 lines, 3 filesdep ~QuickChecknew-uploaderPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: QuickCheck

API changes (from Hackage documentation)

- Test.QuickCheck.Arbitrary.Generic: instance (Test.QuickCheck.Arbitrary.Generic.GArbitrary a, Test.QuickCheck.Arbitrary.Generic.GArbitrary b, GHC.TypeLits.KnownNat (Test.QuickCheck.Arbitrary.Generic.SumLen a), GHC.TypeLits.KnownNat (Test.QuickCheck.Arbitrary.Generic.SumLen b)) => Test.QuickCheck.Arbitrary.Generic.GArbitrary (a GHC.Generics.:+: b)
+ Test.QuickCheck.Arbitrary.Generic: GenericArbitrary :: a -> GenericArbitrary a
+ Test.QuickCheck.Arbitrary.Generic: [unGenericArbitrary] :: GenericArbitrary a -> a
+ Test.QuickCheck.Arbitrary.Generic: instance (GHC.Generics.Generic a, Test.QuickCheck.Arbitrary.Generic.GArbitrary (GHC.Generics.Rep a), Test.QuickCheck.Arbitrary.RecursivelyShrink (GHC.Generics.Rep a), Test.QuickCheck.Arbitrary.GSubterms (GHC.Generics.Rep a) a) => Test.QuickCheck.Arbitrary.Arbitrary (Test.QuickCheck.Arbitrary.Generic.GenericArbitrary a)
+ Test.QuickCheck.Arbitrary.Generic: instance (Test.QuickCheck.Arbitrary.Generic.GArbitrary a, Test.QuickCheck.Arbitrary.Generic.GArbitrary b, GHC.TypeNats.KnownNat (Test.QuickCheck.Arbitrary.Generic.SumLen a), GHC.TypeNats.KnownNat (Test.QuickCheck.Arbitrary.Generic.SumLen b)) => Test.QuickCheck.Arbitrary.Generic.GArbitrary (a GHC.Generics.:+: b)
+ Test.QuickCheck.Arbitrary.Generic: instance GHC.Classes.Eq a => GHC.Classes.Eq (Test.QuickCheck.Arbitrary.Generic.GenericArbitrary a)
+ Test.QuickCheck.Arbitrary.Generic: instance GHC.Show.Show a => GHC.Show.Show (Test.QuickCheck.Arbitrary.Generic.GenericArbitrary a)
+ Test.QuickCheck.Arbitrary.Generic: newtype GenericArbitrary a

Files

CHANGELOG.md view
@@ -1,3 +1,9 @@+0.2.0+-----++* Added `GenericArbitrary` for use with the [DerivingVia](https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/deriving_via.html) compiler extension.+* Minimum bound on QuickCheck changed to 2.14.+ 0.1.0 ----- 
generic-arbitrary.cabal view
@@ -1,5 +1,5 @@ name:                generic-arbitrary-version:             0.1.0+version:             0.2.0 synopsis:            Generic implementation for QuickCheck's Arbitrary description:     Generic implementations of methods of the 'Arbitrary' class from the@@ -11,13 +11,20 @@ license-file:        LICENSE author:              Typeable.io contributors maintainer:          makeit@typeable.io+homepage:            http://github.com/typeable/generic-arbitrary#readme category:            Generic build-type:          Simple extra-source-files:  CHANGELOG.md cabal-version:       >=1.22+tested-with:         GHC == 7.10.3+                   , GHC == 8.0.2+                   , GHC == 8.2.2+                   , GHC == 8.4.1+                   , GHC == 8.6.5+                   , GHC == 8.10.1  library   exposed-modules:     Test.QuickCheck.Arbitrary.Generic-  build-depends:       QuickCheck >= 2.8, base >=4.8 && <5+  build-depends:       QuickCheck >= 2.14, base >=4.8 && <5   hs-source-dirs:      src   default-language:    Haskell2010
src/Test/QuickCheck/Arbitrary/Generic.hs view
@@ -15,6 +15,16 @@   shrink = genericShrink @ +This instance can also be derived using DerivingVia language extension++@+data Foo = Foo+  { _fooX :: X+  , _fooY :: Y+  } deriving (Generic)+    deriving (Arbitrary) via GenericArbitrary Foo+@+ The generated 'arbitrary' method is equivalent to  @Foo <$> arbitrary <*> arbitrary@.@@ -22,16 +32,31 @@ -}  module Test.QuickCheck.Arbitrary.Generic-  ( Arbitrary(..)+  ( GenericArbitrary(..)+  , Arbitrary(..)   , genericArbitrary   , genericShrink   ) where  import Control.Applicative+import Data.Coerce (coerce) import Data.Proxy import GHC.Generics as G import GHC.TypeLits import Test.QuickCheck as QC+import Test.QuickCheck.Arbitrary (GSubterms, RecursivelyShrink)++newtype GenericArbitrary a = GenericArbitrary { unGenericArbitrary :: a }+  deriving (Show, Eq)++instance+  ( Generic a,+    GArbitrary (Rep a),+    RecursivelyShrink (Rep a),+    GSubterms (Rep a) a+  ) => Arbitrary (GenericArbitrary a) where+  arbitrary = coerce (genericArbitrary :: Gen a)+  shrink = coerce (genericShrink :: a -> [a])  class GArbitrary a where   gArbitrary :: QC.Gen (a x)