on master help sign in
derive NFData for all generated datatypes
commit965a460f21968840659076698c7269cd2402e1dd authorDenis Redozubov <denis.redozubov@gmail.com> dateTue 13 Mar 2018, 11:13 (9 years ago) parentaa88b41
3 files changed+11−7
src/Data/THGen/XML.hs+9−2 test/TestDefs.hs−5 xml-isogen.cabal+2
src/Data/THGen/XML.hs+9−2
@@ -121,6 +121,7 @@ module Data.THGen.XML
121121 , Integer
122122 ) where
123123
124+import Control.DeepSeq
124125import Control.Lens hiding (repeated, enum, (&))
125126import Control.Lens.Internal.FieldTH (makeFieldOpticsForDec)
126127import qualified Data.Char as C
@@ -130,12 +131,13 @@ import Data.String
130131import Data.THGen.Compat
131132import Data.THGen.Enum
132133import qualified Data.Text as T
134+import GHC.Generics (Generic)
133135import qualified Language.Haskell.TH as TH
134136import Prelude hiding ((+), (*))
137+import qualified Text.XML as X
135138import Text.XML.DOM.Parser
136139import Text.XML.ParentAttributes
137140import qualified Text.XML.Writer as XW
138−import qualified Text.XML as X
139141
140142data XmlFieldPlural
141143 = XmlFieldPluralMandatory -- Occurs exactly 1 time (Identity)
@@ -344,8 +346,13 @@ isoXmlGenerateRecord (PrefixName strName' strPrefix') descRecordParts = do
344346 dataD
345347 name
346348 [TH.recC name fields]
347− [''Eq, ''Show]
349+ [''Eq, ''Show, ''Generic]
348350 lensDecls <- makeFieldOpticsForDec lensRules dataDecl
351+ nfDataInst <- do
352+ TH.instanceD
353+ (return [])
354+ [t|NFData $(TH.conT name)|]
355+ [ ]
349356 fromDomInst <- do
350357 let
351358 exprHeader = [e|pure $(TH.conE name)|]
test/TestDefs.hs−5
@@ -6,7 +6,6 @@ module TestDefs where
66
77import Data.List.NonEmpty
88import Data.THGen.XML
9−import GHC.Generics (Generic)
109import Test.QuickCheck.Arbitrary.Generic
1110import Test.QuickCheck.Instances ()
1211
@@ -32,14 +31,10 @@ import Test.QuickCheck.Instances ()
3231"Root" =:= record
3332 ! "Foo"
3433
35−deriving instance Generic XmlRoot
36−
3734instance Arbitrary XmlRoot where
3835 arbitrary = genericArbitrary
3936 shrink = genericShrink
4037
41−deriving instance Generic XmlFoo
42−
4338instance Arbitrary XmlFoo where
4439 arbitrary = genericArbitrary
4540 shrink = genericShrink
xml-isogen.cabal+2
@@ -34,6 +34,7 @@ library
3434 build-depends: QuickCheck >= 2.8
3535 , base >=4.8 && <5
3636 , dom-parser >= 2.0.0
37+ , deepseq
3738 , lens >= 4.13
3839 , mtl >= 2.2
3940 , semigroups >= 0.18
@@ -60,6 +61,7 @@ test-suite spec
6061 build-depends: base
6162 , QuickCheck
6263 , data-default
64+ , deepseq
6365 , dom-parser
6466 , generic-arbitrary
6567 , hspec