text-show-3.6: tests/Instances/Text/Read.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeSynonymInstances #-}
#if __GLASGOW_HASKELL__ >= 706
{-# LANGUAGE DataKinds #-}
#endif
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-|
Module: Instances.Text.Read
Copyright: (C) 2014-2017 Ryan Scott
License: BSD-style (see the file LICENSE)
Maintainer: Ryan Scott
Stability: Provisional
Portability: GHC
'Arbitrary' instances for data types in the "Text.Read" module.
-}
module Instances.Text.Read () where
import qualified Generics.Deriving.TH as Generics (deriveAll0)
import Instances.Utils.GenericArbitrary (genericArbitrary)
import Test.QuickCheck (Arbitrary(..))
import Text.Read (Lexeme(..))
#if MIN_VERSION_base(4,6,0)
import Language.Haskell.TH.Lib (conT)
import TextShow.TH.Names (numberTypeName)
#endif
instance Arbitrary Lexeme where
arbitrary = genericArbitrary
#if MIN_VERSION_base(4,6,0)
-- NB: Don't attempt to define
--
-- type Number' = $(conT numberTypeName)
--
-- here. Sadly, due to a bizarre GHC 7.6 bug, it'll think it's a recursive
-- type synonym and reject it.
instance Arbitrary $(conT numberTypeName) where
arbitrary = genericArbitrary
#endif
$(Generics.deriveAll0 ''Lexeme)
#if MIN_VERSION_base(4,6,0)
$(Generics.deriveAll0 numberTypeName)
#endif