ghc-exactprint-1.14.0.0: tests/examples/ghc910/Generic.hs
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
module Data.Aeson.Deriving.Internal.Generic where
------------------------------------------------------------------------------------------
-- A Single type for all Options fields
------------------------------------------------------------------------------------------
-- | Type-level representation of the Aeson Generic deriving 'Options'.
-- This representation is useful for explicitly setting all options.
data GenericOptions
:: fieldLabelModifier
-> tagSingleConstructors
-> Type
instance
( All StringFunction [fieldLabelModifier, constructorTagModifier]
, ToSumEncoding sumEncoding
, All KnownBool
[ allNullaryToStringTag
, tagSingleConstructors
]
) => ToAesonOptions
(GenericOptions
(FieldLabelModifier := fieldLabelModifier)
(ConstructorTagModifier := constructorTagModifier)
(TagSingleConstructors := tagSingleConstructors)) where
toAesonOptions _ = defaultOptions
{ fieldLabelModifier = stringFunction $ Proxy @fieldLabelModifier
, tagSingleConstructors = boolVal $ Proxy @tagSingleConstructors
}