From e5c868984b72aa53dd588fce50c7b9993c27d684 Mon Sep 17 00:00:00 2001 From: Adithya Kumar Date: Wed, 20 Sep 2023 18:24:23 +0530 Subject: [PATCH] Add Serialize instance for Lazy Text --- src/Streamly/Data/Serialize/Instances.hs | 7 ------- src/Streamly/Data/Serialize/Instances/Text.hs | 7 ++++--- streamly-serialize-instances.cabal | 5 ++++- test/Main.hs | 4 ++++ 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/Streamly/Data/Serialize/Instances.hs b/src/Streamly/Data/Serialize/Instances.hs index 4f8e9b9..f6886b4 100644 --- a/src/Streamly/Data/Serialize/Instances.hs +++ b/src/Streamly/Data/Serialize/Instances.hs @@ -6,13 +6,6 @@ -- Stability : experimental -- Portability : GHC -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE MagicHash #-} -{-# LANGUAGE RecordWildCards #-} - --- This is required as all the instances in this module are orphan instances. -{-# OPTIONS_GHC -fno-warn-orphans #-} - module Streamly.Data.Serialize.Instances () where -------------------------------------------------------------------------------- diff --git a/src/Streamly/Data/Serialize/Instances/Text.hs b/src/Streamly/Data/Serialize/Instances/Text.hs index ef2b46f..f3a95b2 100644 --- a/src/Streamly/Data/Serialize/Instances/Text.hs +++ b/src/Streamly/Data/Serialize/Instances/Text.hs @@ -1,6 +1,3 @@ --- This is required as all the instances in this module are orphan instances. -{-# OPTIONS_GHC -fno-warn-orphans #-} - -- | -- Module : Streamly.Data.Serialize.Instances -- Copyright : (c) 2023 Composewell technologies @@ -20,7 +17,9 @@ import Streamly.Internal.Data.Serialize (Serialize(..)) import Streamly.Internal.Data.Unbox (MutableByteArray(..)) import qualified Data.Text.Internal as Strict (Text(..)) +import qualified Data.Text.Lazy as Lazy import qualified Streamly.Internal.Data.Unbox as Unbox +import qualified Streamly.Internal.Data.Serialize.TH as Serialize #if MIN_VERSION_text(2,0,0) @@ -84,3 +83,5 @@ instance Serialize Strict.Text where -------------------------------------------------------------------------------- -- Lazy Text -------------------------------------------------------------------------------- + +$(Serialize.deriveSerialize ''Lazy.Text) diff --git a/streamly-serialize-instances.cabal b/streamly-serialize-instances.cabal index 79e81f1..3bdd048 100644 --- a/streamly-serialize-instances.cabal +++ b/streamly-serialize-instances.cabal @@ -55,7 +55,9 @@ extra-doc-files: CHANGELOG.md -- extra-source-files: common warnings - ghc-options: -Wall -Werror + -- -fno-warn-orphans is required as all the instances in this package are + -- orphan instances. + ghc-options: -Wall -Werror -fno-warn-orphans common default-extensions default-extensions: @@ -84,6 +86,7 @@ common default-extensions TypeFamilies TypeOperators ViewPatterns + TemplateHaskell library -- Import common warning flags. diff --git a/test/Main.hs b/test/Main.hs index f41aa5a..3462b3b 100644 --- a/test/Main.hs +++ b/test/Main.hs @@ -22,6 +22,7 @@ import qualified Streamly.Internal.Data.Serialize as Serialize import Data.Time (UTCTime) import qualified Data.Text as TextS +import qualified Data.Text.Lazy as TextL import Test.Hspec.QuickCheck import Test.Hspec as H @@ -88,6 +89,9 @@ testCases = do prop "Strict Text" $ \(x :: TextS.Text) -> roundtrip x + prop "Lazy Text" + $ \(x :: TextL.Text) -> roundtrip x + -------------------------------------------------------------------------------- -- Main --------------------------------------------------------------------------------