git.iko.soy/typeable/derive-api-th
on master help sign in
fix context
commit89699393eefbf606d5c85922e3c7b58373c05d3e authorodr <dima.typeable.io> dateTue 10 Sep 2024, 18:04 (2 years ago) parente3dc944
2 files changed+8−4
derive-api-th.cabal+2−1 src/Derive/API/TH.hs+6−3
derive-api-th.cabal+2−1
@@ -37,7 +37,8 @@ library
3737 openapi3
3838 default-language: Haskell2010
3939 default-extensions:
40− DuplicateRecordFields
40+ BlockArguments
41+ , DuplicateRecordFields
4142 , NamedFieldPuns
4243 , RecordWildCards
4344 , StandaloneDeriving
src/Derive/API/TH.hs+6−3
@@ -26,7 +26,6 @@ import Data.Aeson.TH as A
2626import Data.Aeson.Types
2727import Data.List
2828import Data.Maybe
29−-- import Data.Traversable
3029import Data.Typeable
3130import Language.Haskell.TH
3231import Language.Haskell.TH.Datatype
@@ -131,8 +130,12 @@ datatypeVarsTypes = datatypeVars
131130deriveArbitrary :: Name -> Q [Dec]
132131deriveArbitrary t = do
133132 tinfo <- reifyDatatype t
134− let ctx = AppT (ConT ''Arbitrary) <$> datatypeVarsTypes tinfo
135− pure [InstanceD Nothing ctx (ConT ''Arbitrary `AppT` datatypeType tinfo)
133+ let
134+ typ = datatypeType tinfo
135+ ctx = datatypeVarsTypes tinfo >>= \tv ->
136+ [ ConT ''Arbitrary `AppT` tv
137+ , ConT ''Arg `AppT` typ `AppT` tv ]
138+ pure [InstanceD Nothing ctx (ConT ''Arbitrary `AppT` typ)
136139 [ FunD 'arbitrary [Clause [] (NormalB $ VarE 'genericArbitrary) []]
137140 , FunD 'shrink [Clause [] (NormalB $ VarE 'genericShrink) []] ] ]
138141#endif