@@ -15,7 +15,13 @@ import Test.QuickCheck.Arbitrary.Generic
1515data Unit = Unit
1616 deriving (Eq, Show, Generic)
1717 deriving anyclass NFData
18+#if MIN_VERSION_QuickCheck(2, 14, 0)
1819 deriving Arbitrary via (GenericArbitrary Unit)
20+#else
21+instance Arbitrary Unit where
22+ arbitrary = genericArbitrary
23+ shrink = genericShrink
24+#endif
1925
2026prop_unitTotal :: Unit -> Property
2127prop_unitTotal = total
@@ -23,7 +29,13 @@ prop_unitTotal = total
2329data Single = Single Int
2430 deriving (Eq, Show, Generic)
2531 deriving anyclass NFData
32+#if MIN_VERSION_QuickCheck(2, 14, 0)
2633 deriving Arbitrary via (GenericArbitrary Single)
34+#else
35+instance Arbitrary Single where
36+ arbitrary = genericArbitrary
37+ shrink = genericShrink
38+#endif
2739
2840prop_singleTotal :: Single -> Property
2941prop_singleTotal = total
@@ -31,7 +43,13 @@ prop_singleTotal = total
3143data Multiple = M1 | M2 | M3 Int
3244 deriving (Eq, Show, Generic)
3345 deriving anyclass NFData
46+#if MIN_VERSION_QuickCheck(2, 14, 0)
3447 deriving Arbitrary via (GenericArbitrary Multiple)
48+#else
49+instance Arbitrary Multiple where
50+ arbitrary = genericArbitrary
51+ shrink = genericShrink
52+#endif
3553
3654prop_multipleTotal :: Multiple -> Property
3755prop_multipleTotal = total
@@ -42,7 +60,13 @@ data Rec = Rec
4260 , multiple :: Multiple
4361 } deriving (Eq, Show, Generic)
4462 deriving anyclass NFData
45− deriving Arbitrary via (GenericArbitrary Rec)
63+#if MIN_VERSION_QuickCheck(2, 14, 0)
64+ deriving Arbitrary via (GenericArbitrary Rec)
65+#else
66+instance Arbitrary Rec where
67+ arbitrary = genericArbitrary
68+ shrink = genericShrink
69+#endif
4670
4771prop_recTotal :: Rec -> Property
4872prop_recTotal = total
@@ -53,7 +77,13 @@ data Expr
5377 | Mul Expr Expr
5478 deriving (Eq, Show, Generic)
5579 deriving anyclass NFData
80+#if MIN_VERSION_QuickCheck(2, 14, 0)
5681 deriving Arbitrary via (GenericArbitrary Expr)
82+#else
83+instance Arbitrary Expr where
84+ arbitrary = genericArbitrary
85+ shrink = genericShrink
86+#endif
5787
5888prop_exprTotal :: Expr -> Property
5989prop_exprTotal = total
@@ -67,7 +97,13 @@ data Recursive
6797 | R5 Recursive String
6898 deriving (Eq, Show, Generic)
6999 deriving anyclass NFData
100+#if MIN_VERSION_QuickCheck(2, 14, 0)
70101 deriving Arbitrary via (GenericArbitrary Recursive)
102+#else
103+instance Arbitrary Recursive where
104+ arbitrary = genericArbitrary
105+ shrink = genericShrink
106+#endif
71107
72108prop_recursiveTotal :: Recursive -> Property
73109prop_recursiveTotal = total
@@ -77,7 +113,13 @@ data DeepRecursive
77113 | Short
78114 deriving (Eq, Show, Generic)
79115 deriving anyclass NFData
116+#if MIN_VERSION_QuickCheck(2, 14, 0)
80117 deriving Arbitrary via (GenericArbitrary DeepRecursive)
118+#else
119+instance Arbitrary DeepRecursive where
120+ arbitrary = genericArbitrary
121+ shrink = genericShrink
122+#endif
81123
82124prop_deepRecursiveTotal :: DeepRecursive -> Property
83125prop_deepRecursiveTotal = total