File tree Expand file tree Collapse file tree 1 file changed +33
-8
lines changed
src/Test/QuickCheck/Arbitrary Expand file tree Collapse file tree 1 file changed +33
-8
lines changed Original file line number Diff line number Diff line change @@ -125,23 +125,26 @@ Now everything compiles and works as expected.
125125-}
126126
127127module Test.QuickCheck.Arbitrary.Generic
128- ( Arbitrary (.. )
128+ ( -- * Main
129+ genericArbitrary
130+ , genericShrink
129131#if MIN_VERSION_QuickCheck(2, 14, 0)
130132 , GenericArbitrary (.. )
131133#endif
132134 , Arg
133- , TypesDiffer
134- , AllFieldsFinal
135+ -- * Internal
136+ , GArbitrary
137+ , FiniteSum
138+ , FiniteSumElem
135139 , Finite
140+ , AllFieldsFinal
141+ , TypesDiffer
136142 , ArgumentsCount
137143 , SumLen
138- , genericArbitrary
139- , genericShrink
144+ -- * Reexports
145+ , Arbitrary ( .. )
140146 ) where
141147
142-
143-
144-
145148import Control.Applicative
146149import Data.Coerce (coerce )
147150import Data.Proxy
@@ -155,6 +158,16 @@ import Test.QuickCheck.Arbitrary (GSubterms, RecursivelyShrink)
155158
156159
157160-- | Newtype for @DerivingVia@
161+ --
162+ -- Usage:
163+ --
164+ -- @
165+ -- data Foo = Foo
166+ -- { _fooX :: X
167+ -- , _fooY :: Y
168+ -- } deriving (Generic)
169+ -- deriving (Arbitrary) via GenericArbitrary Foo
170+ -- @
158171newtype GenericArbitrary a = GenericArbitrary { unGenericArbitrary :: a }
159172 deriving (Show , Eq )
160173
@@ -168,6 +181,18 @@ instance
168181 shrink = coerce (genericShrink :: a -> [a ])
169182#endif
170183
184+ -- | Constraint helper for types with parameters
185+ --
186+ -- Usage:
187+ --
188+ -- @
189+ -- data A a = A a
190+ -- deriving (Generic)
191+ -- instance (Arg (A a) a, Arbitrary a) => Arbitrary (A a) where
192+ -- arbitrary = genericArbitrary
193+ -- shrink = genericShrink
194+ -- @
195+
171196type Arg self field = (TypesDiffer self field ~ 'True)
172197
173198type family TypesDiffer a b where
You can’t perform that action at this time.
0 commit comments