module PostgresqlSyntax.Ast.IndexElem where
import qualified HeadedMegaparsec as Parser
import PostgresqlSyntax.Algebra
import PostgresqlSyntax.Ast.AnyName
import PostgresqlSyntax.Ast.AscDesc
import PostgresqlSyntax.Ast.IndexElemDef
import PostgresqlSyntax.Ast.NullsOrder
import qualified PostgresqlSyntax.Helpers.Gens as Gens
import qualified PostgresqlSyntax.Helpers.Parsers as Parsers
import qualified PostgresqlSyntax.Helpers.TextBuilders as TextBuilders
import PostgresqlSyntax.Prelude
import qualified Test.QuickCheck as Qc
data IndexElem = IndexElem IndexElemDef (Maybe AnyName) (Maybe AnyName) (Maybe AscDesc) (Maybe NullsOrder)
deriving (Int -> IndexElem -> ShowS
[IndexElem] -> ShowS
IndexElem -> String
(Int -> IndexElem -> ShowS)
-> (IndexElem -> String)
-> ([IndexElem] -> ShowS)
-> Show IndexElem
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> IndexElem -> ShowS
showsPrec :: Int -> IndexElem -> ShowS
$cshow :: IndexElem -> String
show :: IndexElem -> String
$cshowList :: [IndexElem] -> ShowS
showList :: [IndexElem] -> ShowS
Show, (forall x. IndexElem -> Rep IndexElem x)
-> (forall x. Rep IndexElem x -> IndexElem) -> Generic IndexElem
forall x. Rep IndexElem x -> IndexElem
forall x. IndexElem -> Rep IndexElem x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. IndexElem -> Rep IndexElem x
from :: forall x. IndexElem -> Rep IndexElem x
$cto :: forall x. Rep IndexElem x -> IndexElem
to :: forall x. Rep IndexElem x -> IndexElem
Generic, IndexElem -> IndexElem -> Bool
(IndexElem -> IndexElem -> Bool)
-> (IndexElem -> IndexElem -> Bool) -> Eq IndexElem
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: IndexElem -> IndexElem -> Bool
== :: IndexElem -> IndexElem -> Bool
$c/= :: IndexElem -> IndexElem -> Bool
/= :: IndexElem -> IndexElem -> Bool
Eq, Eq IndexElem
Eq IndexElem =>
(IndexElem -> IndexElem -> Ordering)
-> (IndexElem -> IndexElem -> Bool)
-> (IndexElem -> IndexElem -> Bool)
-> (IndexElem -> IndexElem -> Bool)
-> (IndexElem -> IndexElem -> Bool)
-> (IndexElem -> IndexElem -> IndexElem)
-> (IndexElem -> IndexElem -> IndexElem)
-> Ord IndexElem
IndexElem -> IndexElem -> Bool
IndexElem -> IndexElem -> Ordering
IndexElem -> IndexElem -> IndexElem
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: IndexElem -> IndexElem -> Ordering
compare :: IndexElem -> IndexElem -> Ordering
$c< :: IndexElem -> IndexElem -> Bool
< :: IndexElem -> IndexElem -> Bool
$c<= :: IndexElem -> IndexElem -> Bool
<= :: IndexElem -> IndexElem -> Bool
$c> :: IndexElem -> IndexElem -> Bool
> :: IndexElem -> IndexElem -> Bool
$c>= :: IndexElem -> IndexElem -> Bool
>= :: IndexElem -> IndexElem -> Bool
$cmax :: IndexElem -> IndexElem -> IndexElem
max :: IndexElem -> IndexElem -> IndexElem
$cmin :: IndexElem -> IndexElem -> IndexElem
min :: IndexElem -> IndexElem -> IndexElem
Ord, Typeable IndexElem
Typeable IndexElem =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IndexElem -> c IndexElem)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IndexElem)
-> (IndexElem -> Constr)
-> (IndexElem -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IndexElem))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IndexElem))
-> ((forall b. Data b => b -> b) -> IndexElem -> IndexElem)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IndexElem -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IndexElem -> r)
-> (forall u. (forall d. Data d => d -> u) -> IndexElem -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> IndexElem -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> IndexElem -> m IndexElem)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IndexElem -> m IndexElem)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IndexElem -> m IndexElem)
-> Data IndexElem
IndexElem -> Constr
IndexElem -> DataType
(forall b. Data b => b -> b) -> IndexElem -> IndexElem
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> IndexElem -> u
forall u. (forall d. Data d => d -> u) -> IndexElem -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IndexElem -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IndexElem -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> IndexElem -> m IndexElem
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IndexElem -> m IndexElem
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IndexElem
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IndexElem -> c IndexElem
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IndexElem)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IndexElem)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IndexElem -> c IndexElem
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IndexElem -> c IndexElem
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IndexElem
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IndexElem
$ctoConstr :: IndexElem -> Constr
toConstr :: IndexElem -> Constr
$cdataTypeOf :: IndexElem -> DataType
dataTypeOf :: IndexElem -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IndexElem)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IndexElem)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IndexElem)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IndexElem)
$cgmapT :: (forall b. Data b => b -> b) -> IndexElem -> IndexElem
gmapT :: (forall b. Data b => b -> b) -> IndexElem -> IndexElem
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IndexElem -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IndexElem -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IndexElem -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IndexElem -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> IndexElem -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> IndexElem -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> IndexElem -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> IndexElem -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> IndexElem -> m IndexElem
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> IndexElem -> m IndexElem
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IndexElem -> m IndexElem
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IndexElem -> m IndexElem
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IndexElem -> m IndexElem
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IndexElem -> m IndexElem
Data)
instance IsAst IndexElem where
toTextBuilder :: Settings -> IndexElem -> TextBuilder
toTextBuilder Settings
settings (IndexElem IndexElemDef
a Maybe AnyName
b Maybe AnyName
c Maybe AscDesc
d Maybe NullsOrder
e) =
Settings -> IndexElemDef -> TextBuilder
forall a. IsAst a => Settings -> a -> TextBuilder
toTextBuilder Settings
settings IndexElemDef
a
TextBuilder -> TextBuilder -> TextBuilder
forall a. Semigroup a => a -> a -> a
<> (AnyName -> TextBuilder) -> Maybe AnyName -> TextBuilder
forall a. (a -> TextBuilder) -> Maybe a -> TextBuilder
TextBuilders.suffixMaybe AnyName -> TextBuilder
collate Maybe AnyName
b
TextBuilder -> TextBuilder -> TextBuilder
forall a. Semigroup a => a -> a -> a
<> (AnyName -> TextBuilder) -> Maybe AnyName -> TextBuilder
forall a. (a -> TextBuilder) -> Maybe a -> TextBuilder
TextBuilders.suffixMaybe (Settings -> AnyName -> TextBuilder
forall a. IsAst a => Settings -> a -> TextBuilder
toTextBuilder Settings
settings) Maybe AnyName
c
TextBuilder -> TextBuilder -> TextBuilder
forall a. Semigroup a => a -> a -> a
<> (AscDesc -> TextBuilder) -> Maybe AscDesc -> TextBuilder
forall a. (a -> TextBuilder) -> Maybe a -> TextBuilder
TextBuilders.suffixMaybe (Settings -> AscDesc -> TextBuilder
forall a. IsAst a => Settings -> a -> TextBuilder
toTextBuilder Settings
settings) Maybe AscDesc
d
TextBuilder -> TextBuilder -> TextBuilder
forall a. Semigroup a => a -> a -> a
<> (NullsOrder -> TextBuilder) -> Maybe NullsOrder -> TextBuilder
forall a. (a -> TextBuilder) -> Maybe a -> TextBuilder
TextBuilders.suffixMaybe (Settings -> NullsOrder -> TextBuilder
forall a. IsAst a => Settings -> a -> TextBuilder
toTextBuilder Settings
settings) Maybe NullsOrder
e
where
collate :: AnyName -> TextBuilder
collate = TextBuilder -> TextBuilder -> TextBuilder
forall a. Monoid a => a -> a -> a
mappend TextBuilder
"COLLATE " (TextBuilder -> TextBuilder)
-> (AnyName -> TextBuilder) -> AnyName -> TextBuilder
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Settings -> AnyName -> TextBuilder
forall a. IsAst a => Settings -> a -> TextBuilder
toTextBuilder Settings
settings
parser :: Settings -> Parser IndexElem
parser Settings
settings =
IndexElemDef
-> Maybe AnyName
-> Maybe AnyName
-> Maybe AscDesc
-> Maybe NullsOrder
-> IndexElem
IndexElem
(IndexElemDef
-> Maybe AnyName
-> Maybe AnyName
-> Maybe AscDesc
-> Maybe NullsOrder
-> IndexElem)
-> HeadedParsec Void Text IndexElemDef
-> HeadedParsec
Void
Text
(Maybe AnyName
-> Maybe AnyName -> Maybe AscDesc -> Maybe NullsOrder -> IndexElem)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Settings -> HeadedParsec Void Text IndexElemDef
forall a. IsAst a => Settings -> Parser a
parser Settings
settings HeadedParsec Void Text IndexElemDef
-> HeadedParsec Void Text () -> HeadedParsec Void Text IndexElemDef
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text a
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a
<* HeadedParsec Void Text ()
forall strm err. Stream strm => HeadedParsec err strm ()
Parser.endHead)
HeadedParsec
Void
Text
(Maybe AnyName
-> Maybe AnyName -> Maybe AscDesc -> Maybe NullsOrder -> IndexElem)
-> HeadedParsec Void Text (Maybe AnyName)
-> HeadedParsec
Void
Text
(Maybe AnyName -> Maybe AscDesc -> Maybe NullsOrder -> IndexElem)
forall a b.
HeadedParsec Void Text (a -> b)
-> HeadedParsec Void Text a -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> HeadedParsec Void Text AnyName
-> HeadedParsec Void Text (Maybe AnyName)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional (HeadedParsec Void Text ()
forall err strm.
(Ord err, Stream strm, Token strm ~ Char) =>
HeadedParsec err strm ()
Parsers.space1 HeadedParsec Void Text ()
-> HeadedParsec Void Text AnyName -> HeadedParsec Void Text AnyName
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> HeadedParsec Void Text AnyName
collate)
HeadedParsec
Void
Text
(Maybe AnyName -> Maybe AscDesc -> Maybe NullsOrder -> IndexElem)
-> HeadedParsec Void Text (Maybe AnyName)
-> HeadedParsec
Void Text (Maybe AscDesc -> Maybe NullsOrder -> IndexElem)
forall a b.
HeadedParsec Void Text (a -> b)
-> HeadedParsec Void Text a -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> HeadedParsec Void Text AnyName
-> HeadedParsec Void Text (Maybe AnyName)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional (HeadedParsec Void Text ()
forall err strm.
(Ord err, Stream strm, Token strm ~ Char) =>
HeadedParsec err strm ()
Parsers.space1 HeadedParsec Void Text ()
-> HeadedParsec Void Text AnyName -> HeadedParsec Void Text AnyName
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> HeadedParsec Void Text AnyName
class_)
HeadedParsec
Void Text (Maybe AscDesc -> Maybe NullsOrder -> IndexElem)
-> HeadedParsec Void Text (Maybe AscDesc)
-> HeadedParsec Void Text (Maybe NullsOrder -> IndexElem)
forall a b.
HeadedParsec Void Text (a -> b)
-> HeadedParsec Void Text a -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> HeadedParsec Void Text AscDesc
-> HeadedParsec Void Text (Maybe AscDesc)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional (HeadedParsec Void Text ()
forall err strm.
(Ord err, Stream strm, Token strm ~ Char) =>
HeadedParsec err strm ()
Parsers.space1 HeadedParsec Void Text ()
-> HeadedParsec Void Text AscDesc -> HeadedParsec Void Text AscDesc
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> Settings -> HeadedParsec Void Text AscDesc
forall a. IsAst a => Settings -> Parser a
parser Settings
settings)
HeadedParsec Void Text (Maybe NullsOrder -> IndexElem)
-> HeadedParsec Void Text (Maybe NullsOrder) -> Parser IndexElem
forall a b.
HeadedParsec Void Text (a -> b)
-> HeadedParsec Void Text a -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> HeadedParsec Void Text NullsOrder
-> HeadedParsec Void Text (Maybe NullsOrder)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional (HeadedParsec Void Text ()
forall err strm.
(Ord err, Stream strm, Token strm ~ Char) =>
HeadedParsec err strm ()
Parsers.space1 HeadedParsec Void Text ()
-> HeadedParsec Void Text NullsOrder
-> HeadedParsec Void Text NullsOrder
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> Settings -> HeadedParsec Void Text NullsOrder
forall a. IsAst a => Settings -> Parser a
parser Settings
settings)
where
collate :: HeadedParsec Void Text AnyName
collate = Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Tokens s ~ Text, Token s ~ Char, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyword Text
"collate" HeadedParsec Void Text Text
-> HeadedParsec Void Text () -> HeadedParsec Void Text ()
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> HeadedParsec Void Text ()
forall err strm.
(Ord err, Stream strm, Token strm ~ Char) =>
HeadedParsec err strm ()
Parsers.space1 HeadedParsec Void Text ()
-> HeadedParsec Void Text () -> HeadedParsec Void Text ()
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> HeadedParsec Void Text ()
forall strm err. Stream strm => HeadedParsec err strm ()
Parser.endHead HeadedParsec Void Text ()
-> HeadedParsec Void Text AnyName -> HeadedParsec Void Text AnyName
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> Settings -> HeadedParsec Void Text AnyName
forall a. IsAst a => Settings -> Parser a
parser Settings
settings
class_ :: HeadedParsec Void Text AnyName
class_ = Settings -> HeadedParsec Void Text AnyName
forall a. IsAst a => Settings -> Parser a
parser Settings
settings
instance Qc.Arbitrary IndexElem where
shrink :: IndexElem -> [IndexElem]
shrink = IndexElem -> [IndexElem]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
Qc.genericShrink
arbitrary :: Gen IndexElem
arbitrary =
IndexElemDef
-> Maybe AnyName
-> Maybe AnyName
-> Maybe AscDesc
-> Maybe NullsOrder
-> IndexElem
IndexElem
(IndexElemDef
-> Maybe AnyName
-> Maybe AnyName
-> Maybe AscDesc
-> Maybe NullsOrder
-> IndexElem)
-> Gen IndexElemDef
-> Gen
(Maybe AnyName
-> Maybe AnyName -> Maybe AscDesc -> Maybe NullsOrder -> IndexElem)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen IndexElemDef
forall a. Arbitrary a => Gen a
Qc.arbitrary
Gen
(Maybe AnyName
-> Maybe AnyName -> Maybe AscDesc -> Maybe NullsOrder -> IndexElem)
-> Gen (Maybe AnyName)
-> Gen
(Maybe AnyName -> Maybe AscDesc -> Maybe NullsOrder -> IndexElem)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen AnyName -> Gen (Maybe AnyName)
forall a. Gen a -> Gen (Maybe a)
Gens.terminatingMaybe Gen AnyName
forall a. Arbitrary a => Gen a
Qc.arbitrary
Gen
(Maybe AnyName -> Maybe AscDesc -> Maybe NullsOrder -> IndexElem)
-> Gen (Maybe AnyName)
-> Gen (Maybe AscDesc -> Maybe NullsOrder -> IndexElem)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen AnyName -> Gen (Maybe AnyName)
forall a. Gen a -> Gen (Maybe a)
Gens.terminatingMaybe Gen AnyName
forall a. Arbitrary a => Gen a
Qc.arbitrary
Gen (Maybe AscDesc -> Maybe NullsOrder -> IndexElem)
-> Gen (Maybe AscDesc) -> Gen (Maybe NullsOrder -> IndexElem)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Maybe AscDesc)
forall a. Arbitrary a => Gen a
Qc.arbitrary
Gen (Maybe NullsOrder -> IndexElem)
-> Gen (Maybe NullsOrder) -> Gen IndexElem
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Maybe NullsOrder)
forall a. Arbitrary a => Gen a
Qc.arbitrary