clash-prelude-hedgehog 1.6.6 → 1.8.0
raw patch · 9 files changed
+75/−18 lines, 9 filesdep ~clash-preludedep ~textPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: clash-prelude, text
API changes (from Hackage documentation)
+ Clash.Hedgehog.Annotations.SynthesisAttributes: genAttr :: forall m. MonadGen m => Range Int -> m (Attr String)
- Clash.Hedgehog.Sized.BitVector: genBitVector :: (MonadGen m, KnownNat n) => m (BitVector n)
+ Clash.Hedgehog.Sized.BitVector: genBitVector :: forall m n. (MonadGen m, KnownNat n) => m (BitVector n)
Files
- clash-prelude-hedgehog.cabal +5/−4
- src/Clash/Hedgehog/Annotations/SynthesisAttributes.hs +18/−0
- src/Clash/Hedgehog/Signal.hs +4/−0
- src/Clash/Hedgehog/Sized/BitVector.hs +18/−14
- src/Clash/Hedgehog/Sized/Index.hs +6/−0
- src/Clash/Hedgehog/Sized/RTree.hs +6/−0
- src/Clash/Hedgehog/Sized/Signed.hs +6/−0
- src/Clash/Hedgehog/Sized/Unsigned.hs +6/−0
- src/Clash/Hedgehog/Sized/Vector.hs +6/−0
clash-prelude-hedgehog.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2 name: clash-prelude-hedgehog-version: 1.6.6+version: 1.8.0 synopsis: Hedgehog Generators for clash-prelude description: Hedgehog Generators for clash-prelude bug-reports: https://github.com/clash-lang/clash-compiler/issues@@ -37,17 +37,18 @@ hs-source-dirs: src exposed-modules:+ Clash.Hedgehog.Annotations.SynthesisAttributes Clash.Hedgehog.Signal Clash.Hedgehog.Sized.BitVector Clash.Hedgehog.Sized.Index+ Clash.Hedgehog.Sized.RTree Clash.Hedgehog.Sized.Signed Clash.Hedgehog.Sized.Unsigned- Clash.Hedgehog.Sized.RTree Clash.Hedgehog.Sized.Vector build-depends: ghc-typelits-knownnat >= 0.7.2 && < 0.8, ghc-typelits-natnormalise >= 0.7.2 && < 0.8,- text >= 1.2.2 && < 1.4,+ text >= 1.2.2 && < 2.1, - clash-prelude == 1.6.6,+ clash-prelude == 1.8.0,
+ src/Clash/Hedgehog/Annotations/SynthesisAttributes.hs view
@@ -0,0 +1,18 @@+module Clash.Hedgehog.Annotations.SynthesisAttributes where++import Clash.Annotations.SynthesisAttributes (Attr(..))++import Hedgehog+import qualified Hedgehog.Gen as Gen++genAttr :: forall m. MonadGen m => Range Int -> m (Attr String)+genAttr range =+ Gen.choice+ [ BoolAttr <$> genAlphaNum <*> Gen.bool+ , IntegerAttr <$> genAlphaNum <*> genInteger+ , StringAttr <$> genAlphaNum <*> genAlphaNum+ , Attr <$> genAlphaNum+ ]+ where+ genAlphaNum = Gen.string range Gen.alphaNum+ genInteger = toInteger <$> Gen.integral range
src/Clash/Hedgehog/Signal.hs view
@@ -6,6 +6,8 @@ Random generation of types from "Clash.Signal.Internal". -} +{-# LANGUAGE CPP #-}+ module Clash.Hedgehog.Signal ( genSignal , genActiveEdge@@ -14,7 +16,9 @@ , genResetPolarity ) where +#if !MIN_VERSION_base(4,18,0) import Control.Applicative (liftA2)+#endif import Hedgehog (MonadGen) import qualified Hedgehog.Gen as Gen
src/Clash/Hedgehog/Sized/BitVector.hs view
@@ -8,6 +8,7 @@ {-# OPTIONS_GHC -fplugin=GHC.TypeLits.KnownNat.Solver #-} +{-# LANGUAGE CPP #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE MagicHash #-} {-# LANGUAGE RankNTypes #-}@@ -21,17 +22,23 @@ , genSomeBitVector ) where +#if !MIN_VERSION_base(4,16,0) import GHC.Natural (Natural)+#endif import GHC.TypeNats+#if MIN_VERSION_base(4,18,0)+ hiding (SNat)+#endif import Hedgehog (MonadGen, Range)+import Hedgehog.Internal.Range (constantBounded, constant) import qualified Hedgehog.Gen as Gen +import Clash.Class.BitPack (pack) import Clash.Promoted.Nat import Clash.Sized.Internal.BitVector-import Clash.Sized.Vector (v2bv) import Clash.XException (errorX) -import Clash.Hedgehog.Sized.Vector (genVec)+import Clash.Hedgehog.Sized.Unsigned -- | Generate a bit which is guaranteed to be defined. -- This will either have the value 'low' or 'high'.@@ -40,7 +47,7 @@ genDefinedBit = Gen.element [low, high] -- | Generate a bit which is not guaranteed to be defined.--- This will either have the value 'low' or 'high', or throw an 'XException'.+-- This will either have the value 'low' or 'high', or throw an @XException@. -- genBit :: (MonadGen m) => m Bit genBit = Gen.element [low, high, errorX "X"]@@ -48,23 +55,20 @@ -- | Generate a bit vector where all bits are defined. -- genDefinedBitVector :: (MonadGen m, KnownNat n) => m (BitVector n)-genDefinedBitVector =- Gen.frequency- [ (60, fmap v2bv (genVec genDefinedBit))- , (20, Gen.constant minBound)- , (20, Gen.constant maxBound)- ]+genDefinedBitVector = pack <$> genUnsigned constantBounded -- | Generate a bit vector where some bits may be undefined. ---genBitVector :: (MonadGen m, KnownNat n) => m (BitVector n)+genBitVector :: forall m n . (MonadGen m, KnownNat n) => m (BitVector n) genBitVector = Gen.frequency- [ (55, fmap v2bv (genVec genBit))- , (15, Gen.constant minBound)- , (15, Gen.constant maxBound)- , (15, Gen.constant undefined#)+ [ (70, BV <$> genNatural <*> genNatural)+ , (10, Gen.constant minBound)+ , (10, Gen.constant maxBound)+ , (10, Gen.constant undefined#) ]+ where+ genNatural = Gen.integral $ constant 0 (2^natToNatural @n) data SomeBitVector atLeast where SomeBitVector :: SNat n -> BitVector (atLeast + n) -> SomeBitVector atLeast
src/Clash/Hedgehog/Sized/Index.hs view
@@ -8,6 +8,7 @@ {-# OPTIONS_GHC -fplugin=GHC.TypeLits.KnownNat.Solver #-} +{-# LANGUAGE CPP #-} {-# LANGUAGE GADTs #-} module Clash.Hedgehog.Sized.Index@@ -16,8 +17,13 @@ , genSomeIndex ) where +#if !MIN_VERSION_base(4,16,0) import GHC.Natural (Natural)+#endif import GHC.TypeNats+#if MIN_VERSION_base(4,18,0)+ hiding (SNat)+#endif import Hedgehog (MonadGen, Range) import qualified Hedgehog.Gen as Gen import qualified Hedgehog.Range as Range
src/Clash/Hedgehog/Sized/RTree.hs view
@@ -8,6 +8,7 @@ {-# OPTIONS_GHC -fplugin=GHC.TypeLits.KnownNat.Solver #-} +{-# LANGUAGE CPP #-} {-# LANGUAGE GADTs #-} module Clash.Hedgehog.Sized.RTree@@ -17,8 +18,13 @@ , genSomeRTree ) where +#if !MIN_VERSION_base(4,16,0) import GHC.Natural (Natural)+#endif import GHC.TypeNats+#if MIN_VERSION_base(4,18,0)+ hiding (SNat)+#endif import Hedgehog (MonadGen, Range) import qualified Hedgehog.Gen as Gen
src/Clash/Hedgehog/Sized/Signed.hs view
@@ -8,6 +8,7 @@ {-# OPTIONS_GHC -fplugin=GHC.TypeLits.KnownNat.Solver #-} +{-# LANGUAGE CPP #-} {-# LANGUAGE GADTs #-} module Clash.Hedgehog.Sized.Signed@@ -16,8 +17,13 @@ , genSomeSigned ) where +#if !MIN_VERSION_base(4,16,0) import GHC.Natural (Natural)+#endif import GHC.TypeNats+#if MIN_VERSION_base(4,18,0)+ hiding (SNat)+#endif import Hedgehog (MonadGen, Range) import qualified Hedgehog.Gen as Gen import qualified Hedgehog.Range as Range
src/Clash/Hedgehog/Sized/Unsigned.hs view
@@ -8,6 +8,7 @@ {-# OPTIONS_GHC -fplugin=GHC.TypeLits.KnownNat.Solver #-} +{-# LANGUAGE CPP #-} {-# LANGUAGE GADTs #-} module Clash.Hedgehog.Sized.Unsigned@@ -16,8 +17,13 @@ , genSomeUnsigned ) where +#if !MIN_VERSION_base(4,16,0) import GHC.Natural (Natural)+#endif import GHC.TypeNats+#if MIN_VERSION_base(4,18,0)+ hiding (SNat)+#endif import Hedgehog (MonadGen, Range) import qualified Hedgehog.Gen as Gen import qualified Hedgehog.Range as Range
src/Clash/Hedgehog/Sized/Vector.hs view
@@ -8,6 +8,7 @@ {-# OPTIONS_GHC -fplugin=GHC.TypeLits.KnownNat.Solver #-} +{-# LANGUAGE CPP #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE MagicHash #-} @@ -20,8 +21,13 @@ import Prelude hiding (repeat) +#if !MIN_VERSION_base(4,16,0) import GHC.Natural (Natural)+#endif import GHC.TypeNats+#if MIN_VERSION_base(4,18,0)+ hiding (SNat)+#endif import Hedgehog (MonadGen, Range) import qualified Hedgehog.Gen as Gen