packages feed

records-edsl-deriving-quickcheck-0.1.0: Records/EDSL/Deriving/Arbitrary.hs

module Records.EDSL.Deriving.Arbitrary (deriveArbitrary) where

import Generic.Random.DerivingVia (GenericArbitraryU)
import Language.Haskell.TH qualified as TH
import Records.EDSL.Deriving.Type
import Records.EDSL.Description
import Test.QuickCheck (Arbitrary)

deriveArbitrary :: Deriver
deriveArbitrary = deriver #QuickCheck_GenericArbitrary \RecordDesc {typeName} -> do
  [d|deriving via (GenericArbitraryU $(TH.conT typeName)) instance Arbitrary $(TH.conT typeName)|]