{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -fno-warn-orphans #-} #if __GLASGOW_HASKELL__ == 800 -- See Note [Increased simpl-tick-factor on old GHCs] {-# OPTIONS_GHC -fsimpl-tick-factor=200 #-} #endif {-| Module: TextShow.Data.Binary Copyright: (C) 2014-2017 Ryan Scott License: BSD-style (see the file LICENSE) Maintainer: Ryan Scott Stability: Provisional Portability: GHC 'TextShow' instance for 'Decoder'. /Since: 2/ -} module TextShow.Data.Binary () where import Data.Binary.Get.Internal (Decoder(..)) import Prelude () import Prelude.Compat import TextShow (TextShow(..), TextShow1(..), Builder, fromString, showbPrec1) -- | /Since: 2/ instance TextShow a => TextShow (Decoder a) where showbPrec = showbPrec1 {-# INLINE showbPrec #-} -- | /Since: 2/ instance TextShow1 Decoder where liftShowbPrec sp' _ _ = go $ sp' 0 where go :: (a -> Builder) -> Decoder a -> Builder go _ (Fail _ msg) = "Fail: " <> fromString msg go _ (Partial _) = "Partial _" go sp (Done _ a) = "Done: " <> sp a go _ (BytesRead _ _) = "BytesRead" {-# INLINE liftShowbPrec #-} {- Note [Increased simpl-tick-factor on old GHCs] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Compiling certain text-show modules with optimizations on old versions of GHC (particularly 8.0 and 8.2) will trigger "Simplifier ticks exhausted" panics. To make things worse, this sometimes depends on whether a certain version of the text library is being used. There are two possible ways to work around this issue: 1. Figure out which uses of the INLINE pragma in text-show are responsible and remove them. 2. Just increase the tick limit. Since executing on (1) will require a lot of effort to fix an issue that only happens on old versions of GHC, I've opted for the simple solution of (2) for now. Issue #51 is a reminder to revisit this choice. -}