smallcheck-kind-generics 0.0.0.0 → 0.0.0.1
raw patch · 2 files changed
+8/−4 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Test.SmallCheck.GenericK: instance forall k (m :: * -> *) (f :: Data.PolyKinded.LoT k -> *) (x :: Data.PolyKinded.LoT k) i (c :: GHC.Generics.Meta). Test.SmallCheck.GenericK.GSerial m f x => Test.SmallCheck.GenericK.GSerial m (GHC.Generics.M1 i c f) x
+ Test.SmallCheck.GenericK: instance forall k i (m :: * -> *) (f :: Data.PolyKinded.LoT k -> *) (x :: Data.PolyKinded.LoT k) (c :: GHC.Generics.Meta). (Data.Typeable.Internal.Typeable i, Test.SmallCheck.GenericK.GSerial m f x) => Test.SmallCheck.GenericK.GSerial m (GHC.Generics.M1 i c f) x
Files
smallcheck-kind-generics.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.4 name: smallcheck-kind-generics-version: 0.0.0.0+version: 0.0.0.1 synopsis: See README for more info description: See README for more info homepage: https://github.com/strake/smallcheck-kind-generics.hs
src/Test/SmallCheck/GenericK.hs view
@@ -9,7 +9,10 @@ import Control.Applicative import Data.Kind (Type)-import Generics.Kind+import Data.Type.Equality+import GHC.Generics (C)+import Generics.Kind hiding ((:~:))+import Type.Reflection (Typeable, typeRep) import Test.SmallCheck.Series @@ -27,8 +30,9 @@ gSeries = (L1 <$> gSeries) \/ (R1 <$> gSeries) instance (Monad m, GSerial m f x, GSerial m g x) => GSerial m (f :*: g) x where gSeries = (:*:) <$> gSeries <~> gSeries-instance GSerial m f x => GSerial m (M1 i c f) x where- gSeries = M1 <$> gSeries+instance (Typeable i, GSerial m f x) => GSerial m (M1 i c f) x where+ gSeries = ($ M1 <$> gSeries) $ case testEquality typeRep typeRep :: Maybe (i :~: C) of+ Just _ -> decDepth; _ -> id instance (Serial m (Interpret t x)) => GSerial m (Field t) x where gSeries = Field <$> series instance (∀ (t :: k) . GSerial m f (t :&&: x)) => GSerial m (Exists k f) x where