@@ -27,7 +27,6 @@ import Control.Arrow
2727import Control.Lens
2828 (makeLenses, mapped, over, traversed, view, (%~), (&), (.~),
2929 (<>~), (^.), (|>))
30−import qualified Control.Monad.Omega as Omega
3130import qualified Data.ByteString.Char8 as BSC
3231import Data.ByteString.Lazy.Char8
3332 (ByteString)
@@ -65,6 +64,8 @@ import Servant.API
6564import Servant.API.ContentTypes
6665import Servant.API.TypeLevel
6766
67+import qualified Data.Universe.Helpers as U
68+
6869import qualified Data.HashMap.Strict as HM
6970import qualified Data.Text as T
7071import qualified Network.HTTP.Media as M
@@ -479,22 +480,22 @@ samples = map ("",)
479480
480481-- | Default sample Generic-based inputs/outputs.
481482defaultSamples :: forall a. (Generic a, GToSample (Rep a)) => Proxy a -> [(Text, a)]
482−defaultSamples _ = Omega.runOmega $ second to <$> gtoSamples (Proxy :: Proxy (Rep a))
483+defaultSamples _ = second to <$> gtoSamples (Proxy :: Proxy (Rep a))
483484
484485-- | @'ToSample'@ for Generics.
485486--
486−-- The use of @'Omega'@ allows for more productive sample generation.
487+-- Note: we use combinators from "Universe.Data.Helpers" for more productive sample generation.
487488class GToSample t where
488− gtoSamples :: proxy t -> Omega.Omega (Text, t x)
489+ gtoSamples :: proxy t -> [(Text, t x)]
489490
490491instance GToSample U1 where
491− gtoSamples _ = Omega.each (singleSample U1)
492+ gtoSamples _ = singleSample U1
492493
493494instance GToSample V1 where
494495 gtoSamples _ = empty
495496
496497instance (GToSample p, GToSample q) => GToSample (p :*: q) where
497− gtoSamples _ = render <$> ps <*> qs
498+ gtoSamples _ = U.cartesianProduct render ps qs
498499 where
499500 ps = gtoSamples (Proxy :: Proxy p)
500501 qs = gtoSamples (Proxy :: Proxy q)
@@ -503,13 +504,13 @@ instance (GToSample p, GToSample q) => GToSample (p :*: q) where
503504 | otherwise = (ta <> ", " <> tb, a :*: b)
504505
505506instance (GToSample p, GToSample q) => GToSample (p :+: q) where
506− gtoSamples _ = lefts <|> rights
507+ gtoSamples _ = lefts U.+++ rights
507508 where
508509 lefts = second L1 <$> gtoSamples (Proxy :: Proxy p)
509510 rights = second R1 <$> gtoSamples (Proxy :: Proxy q)
510511
511512instance ToSample a => GToSample (K1 i a) where
512− gtoSamples _ = second K1 <$> Omega.each (toSamples (Proxy :: Proxy a))
513+ gtoSamples _ = second K1 <$> toSamples (Proxy :: Proxy a)
513514
514515instance (GToSample f) => GToSample (M1 i a f) where
515516 gtoSamples _ = second M1 <$> gtoSamples (Proxy :: Proxy f)