packages feed

twiml 0.2.0.0 → 0.2.0.1

raw patch · 8 files changed

+190/−92 lines, 8 filesdep ~HUnitdep ~basedep ~data-default

Dependency ranges changed: HUnit, base, data-default, deepseq, lens, void

Files

src/Text/XML/Twiml/Internal.hs view
@@ -8,7 +8,6 @@ {-# LANGUAGE GADTs #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverlappingInstances #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-}@@ -89,16 +88,16 @@   inj = id   prj = Just -instance (Functor f, Functor g) => f :<: (f :+: g) where-  inj = InL-  prj (InL f) = Just f-  prj _ = Nothing--instance (Functor f, Functor g, Functor h, f :<: g) => f :<: (h :+: g) where+instance {-# OVERLAPPABLE #-} (Functor f, Functor g, Functor h, f :<: g) => f :<: (h :+: g) where   inj = InR . inj   prj (InR g) = prj g   prj _ = Nothing +instance {-# OVERLAPPING #-} (Functor f, Functor g) => f :<: (f :+: g) where+  inj = InL+  prj (InL f) = Just f+  prj _ = Nothing+ {- Elem -}  -- $elem 'TwimlF uses @∉@ in order to enforce nesting rules.@@ -319,10 +318,10 @@ instance ToSomeNode String where   toSomeNode str = SomeNode . Text $ CData CDataText str Nothing -instance ToSomeNode () where+instance {-# OVERLAPPING #-} ToSomeNode () where   toSomeNode = SomeNode -instance ToSomeNode n => Node n where+instance {-# OVERLAPPABLE #-} ToSomeNode n => Node n where   node qName n = node qName (toSomeNode n)  class ToXML a where
src/Text/XML/Twiml/Internal/TH.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE RecordWildCards #-} -------------------------------------------------------------------------------@@ -103,23 +104,27 @@ attributeToVarStrictType :: (String -> String) -> Attribute -> VarStrictType attributeToVarStrictType f Attribute{..} =   ( mkName $ f attributeName+#if MIN_VERSION_template_haskell(2,11,0)+  , Bang NoSourceUnpackedness SourceStrict+#else   , IsStrict+#endif   , AppT (ConT $ mkName "Maybe") (ConT $ mkName attributeType)   )  parametersToVarStrictTypes :: (String -> String) -> [Parameters] -> [VarStrictType] parametersToVarStrictTypes f = map (attributeToVarStrictType f) . getAllAttributes -rnfI :: Int -> Exp-rnfI i = rnfNames . take i $ map (mkName . return) ['a'..'z']+-- rnfI :: Int -> Exp+-- rnfI i = rnfNames . take i $ map (mkName . return) ['a'..'z'] -rnfNames :: [Name] -> Exp-rnfNames [] = TupE []-rnfNames [a] = rnfName a-rnfNames (a:as) = AppE (AppE (VarE $ mkName "seq") (rnfName a)) (rnfNames as)+-- rnfNames :: [Name] -> Exp+-- rnfNames [] = TupE []+-- rnfNames [a] = rnfName a+-- rnfNames (a:as) = AppE (AppE (VarE $ mkName "seq") (rnfName a)) (rnfNames as) -rnfName :: Name -> Exp-rnfName name = AppE (VarE $ mkName "rnf") (VarE name)+-- rnfName :: Name -> Exp+-- rnfName name = AppE (VarE $ mkName "rnf") (VarE name)  specToGADTName :: TwimlSpec -> Name specToGADTName TwimlSpec{..} = mkName $ twimlName ++ "F"@@ -144,14 +149,14 @@ specToGADTChildName spec@(TwimlSpec{..}) = go $ zip parameters $ specToGADTNames spec where   go [] = Nothing   go ((Required _, name):_) = Just name-  go ((Attributes _, name):rest) = go rest+  go ((Attributes _, _):rest) = go rest  specToGADTPat :: TwimlSpec -> Pat specToGADTPat spec@(TwimlSpec{..}) = ConP (specToGADTName spec) varPs where   varPs = map VarP $ specToGADTNames spec  specToAttributesListE :: TwimlSpec -> Exp-specToAttributesListE spec@(TwimlSpec{..}) = ListE . map go $ getAllAttributes parameters where+specToAttributesListE (TwimlSpec{..}) = ListE . map go $ getAllAttributes parameters where   go (Attribute{..}) =     let name = LitE . StringL $ fromMaybe attributeName overrideName     in  AppE (AppE (VarE $ mkName "makeAttr") name) (VarE . mkName $ makeAttr attributeName)@@ -168,19 +173,31 @@     else ListE []  specToStrictTypes :: TwimlSpec -> [StrictType]+#if MIN_VERSION_template_haskell(2,11,0)+specToStrictTypes spec@(TwimlSpec{..}) = go parameters ++ [(Bang NoSourceUnpackedness NoSourceStrictness, VarT $ mkName "a") | recursive] where+#else specToStrictTypes spec@(TwimlSpec{..}) = go parameters ++ [(NotStrict, VarT $ mkName "a") | recursive] where+#endif   go [] = []   go (Required   as :bs) = map stringToStrictType as ++ go bs+#if MIN_VERSION_template_haskell(2,11,0)+  go (Attributes _  :bs) = (Bang NoSourceUnpackedness NoSourceStrictness, ConT $ specToAttributesName spec) : go bs+#else   go (Attributes _  :bs) = (NotStrict, ConT $ specToAttributesName spec) : go bs+#endif+#if MIN_VERSION_template_haskell(2,11,0)+  stringToStrictType a = (Bang NoSourceUnpackedness NoSourceStrictness, ConT $ mkName a)+#else   stringToStrictType a = (NotStrict, ConT $ mkName a)+#endif -gadtToDefExp :: TwimlSpec -> [Parameters] -> Exp-gadtToDefExp spec@(TwimlSpec{..}) = go (ConE $ specToGADTName spec) . foldr ((+) . count) (if recursive then 1 else 0) where-  go conE 0 = conE-  go conE n = go (AppE conE defE) (n-1)-  defE = VarE $ mkName "def"-  count (Required r) = length r-  count _ = 1+-- gadtToDefExp :: TwimlSpec -> [Parameters] -> Exp+-- gadtToDefExp spec@(TwimlSpec{..}) = go (ConE $ specToGADTName spec) . foldr ((+) . count) (if recursive then 1 else 0) where+--   go conE 0 = conE+--   go conE n = go (AppE conE defE) (n-1)+--   defE = VarE $ mkName "def"+--   count (Required r) = length r+--   count _ = 1  attributesToDefExp :: Exp -> [Parameters] -> Exp attributesToDefExp conE = go conE . length . getAllAttributes where@@ -246,7 +263,12 @@ runTwimlSpecParser = runParser parseTwimlSpec () ""  s :: QuasiQuoter-s = QuasiQuoter {quoteExp = stringE . trim}+s = QuasiQuoter {+  quoteExp = stringE . trim+, quotePat = undefined+, quoteType = undefined+, quoteDec = undefined+}  trim :: String -> String trim = trimTail . dropWhile isSpace@@ -276,7 +298,7 @@     [ emptyDataDecl     , gadt --    , deriveDataForGADT-    -- , instanceDefaultForGADT+--    , instanceDefaultForGADT --    , deriveEqForGADT     , deriveFunctorForGADT     , instanceFunctor1ForGADT@@ -294,7 +316,15 @@     conName = mkName twimlName      -- | @data Foo@+#if MIN_VERSION_template_haskell(2,12,0)+    emptyDataDecl = DataD [] conName [] Nothing [] $ DerivClause Nothing []+#else+#if MIN_VERSION_template_haskell(2,11,0)+    emptyDataDecl = DataD [] conName [] Nothing [] []+#else     emptyDataDecl = DataD [] conName [] [] []+#endif+#endif      -- | Type variables @i :: [*]@ and @a@     i' = mkName "i"@@ -326,10 +356,18 @@         . NormalC conNameF $ specToStrictTypes spec      -- | @data FooF i a where FooF :: a -> FooF '[Foo] a@+#if MIN_VERSION_template_haskell(2,12,0)+    gadt = DataD [] conNameF tyVarBndrs Nothing [con] $ DerivClause Nothing []+#else+#if MIN_VERSION_template_haskell(2,11,0)+    gadt = DataD [] conNameF tyVarBndrs Nothing [con] []+#else     gadt = DataD [] conNameF tyVarBndrs [con] []+#endif+#endif      dataN = mkName "Data"-    dataC = ConT dataN+    -- dataC = ConT dataN      defaultN = mkName "Default"     defaultC = ConT defaultN@@ -338,7 +376,7 @@     -- enumC = ConT enumN      eqN = mkName "Eq"-    eqC = ConT eqN+    -- eqC = ConT eqN      functorN = mkName "Functor"     functorC = ConT functorN@@ -347,16 +385,16 @@     functor1C = ConT functor1N      genericN = mkName "Generic"-    genericC = ConT genericN+    -- genericC = ConT genericN      nfdataN = mkName "NFData"-    nfdataC = ConT nfdataN+    -- nfdataC = ConT nfdataN      ordN = mkName "Ord"-    ordC = ConT ordN+    -- ordC = ConT ordN      readN = mkName "Read"-    readC = ConT readN+    -- readC = ConT readN      showN = mkName "Show"     showC = ConT showN@@ -368,34 +406,74 @@     toXMLC = ConT toXMLN      -- | @instance Default a => Default (FooF i a) where def = FooF def ...@-    instanceDefaultForGADT = InstanceD [AppT defaultC a] (AppT defaultC (AppT (AppT (ConT conNameF) list) a)) [ValD (VarP $ mkName "def") (NormalB $ gadtToDefExp spec parameters) []]+#if MIN_VERSION_template_haskell(2,11,0)+--     instanceDefaultForGADT = InstanceD Nothing [AppT defaultC a] (AppT defaultC (AppT (AppT (ConT conNameF) list) a)) [ValD (VarP $ mkName "def") (NormalB $ gadtToDefExp spec parameters) []]+#else+--     instanceDefaultForGADT = InstanceD [AppT defaultC a] (AppT defaultC (AppT (AppT (ConT conNameF) list) a)) [ValD (VarP $ mkName "def") (NormalB $ gadtToDefExp spec parameters) []]+#endif      -- | @deriving instance Data a => Data (FooF i a)@-    deriveDataForGADT = StandaloneDerivD [AppT dataC a] $ AppT dataC (AppT (AppT (ConT conNameF) list) a)+#if MIN_VERSION_template_haskell(2,12,0)+--     deriveDataForGADT = StandaloneDerivD Nothing [AppT dataC a] $ AppT dataC (AppT (AppT (ConT conNameF) list) a)+#else+--     deriveDataForGADT = StandaloneDerivD [AppT dataC a] $ AppT dataC (AppT (AppT (ConT conNameF) list) a)+#endif      -- | @deriving instance Eq a => Eq (FooF i a)@-    deriveEqForGADT = StandaloneDerivD [AppT eqC a] $ AppT eqC (AppT (AppT (ConT conNameF) i) a)+#if MIN_VERSION_template_haskell(2,12,0)+--     deriveEqForGADT = StandaloneDerivD Nothing [AppT eqC a] $ AppT eqC (AppT (AppT (ConT conNameF) i) a)+#else+--     deriveEqForGADT = StandaloneDerivD [AppT eqC a] $ AppT eqC (AppT (AppT (ConT conNameF) i) a)+#endif      -- | @deriving instance Functor (FooF i)@+#if MIN_VERSION_template_haskell(2,12,0)+    deriveFunctorForGADT = StandaloneDerivD Nothing [] $ AppT functorC (AppT (ConT conNameF) i)+#else     deriveFunctorForGADT = StandaloneDerivD [] $ AppT functorC (AppT (ConT conNameF) i)+#endif      -- | @instance Functor1 FooF where fmap1 = fmap@+#if MIN_VERSION_template_haskell(2,11,0)+    instanceFunctor1ForGADT = InstanceD Nothing [] (AppT functor1C $ ConT conNameF) [ValD (VarP $ mkName "fmap1") (NormalB . VarE $ mkName "fmap") []]+#else     instanceFunctor1ForGADT = InstanceD [] (AppT functor1C $ ConT conNameF) [ValD (VarP $ mkName "fmap1") (NormalB . VarE $ mkName "fmap") []]+#endif      -- | @instance NFData a => NFData (FooF i a) where rnf (FooF a ...) = rnf a `seq` ...@-    instanceNFDataForGADT = InstanceD [AppT nfdataC a] (AppT nfdataC (AppT (AppT (ConT conNameF) list) a)) [FunD (mkName "rnf") [Clause [specToGADTPat spec] (NormalB . rnfI $ specToGADTArity spec) []]]+#if MIN_VERSION_template_haskell(2,11,0)+--     instanceNFDataForGADT = InstanceD Nothing [AppT nfdataC a] (AppT nfdataC (AppT (AppT (ConT conNameF) list) a)) [FunD (mkName "rnf") [Clause [specToGADTPat spec] (NormalB . rnfI $ specToGADTArity spec) []]]+#else+--     instanceNFDataForGADT = InstanceD [AppT nfdataC a] (AppT nfdataC (AppT (AppT (ConT conNameF) list) a)) [FunD (mkName "rnf") [Clause [specToGADTPat spec] (NormalB . rnfI $ specToGADTArity spec) []]]+#endif      -- | @deriving instance Ord a => Ord (FooF i a)@-    deriveOrdForGADT = StandaloneDerivD [AppT ordC a] $ AppT ordC (AppT (AppT (ConT conNameF) i) a)+#if MIN_VERSION_template_haskell(2,12,0)+--     deriveOrdForGADT = StandaloneDerivD Nothing [AppT ordC a] $ AppT ordC (AppT (AppT (ConT conNameF) i) a)+#else+--     deriveOrdForGADT = StandaloneDerivD [AppT ordC a] $ AppT ordC (AppT (AppT (ConT conNameF) i) a)+#endif      -- | @deriving instance Read a => Read (FooF i a)@-    deriveReadForGADT = StandaloneDerivD [AppT readC a] $ AppT readC (AppT (AppT (ConT conNameF) list) a)+#if MIN_VERSION_template_haskell(2,12,0)+--     deriveReadForGADT = StandaloneDerivD Nothing [AppT readC a] $ AppT readC (AppT (AppT (ConT conNameF) list) a)+#else+--     deriveReadForGADT = StandaloneDerivD [AppT readC a] $ AppT readC (AppT (AppT (ConT conNameF) list) a)+#endif      -- | @deriving instance Show a => Show (FooF i a)@+#if MIN_VERSION_template_haskell(2,12,0)+    deriveShowForGADT = StandaloneDerivD Nothing [AppT showC a] $ AppT showC (AppT (AppT (ConT conNameF) i) a)+#else     deriveShowForGADT = StandaloneDerivD [AppT showC a] $ AppT showC (AppT (AppT (ConT conNameF) i) a)+#endif      -- | @instance ToXML a => ToXML (FooF i a) where toXML (FooF a ...) = makeElement "Foo" a ...@+#if MIN_VERSION_template_haskell(2,11,0)+    instanceToXMLForGADT = InstanceD Nothing [AppT toXMLC a | recursive] (AppT toXMLC (AppT (AppT (ConT conNameF) i) a))+#else     instanceToXMLForGADT = InstanceD [AppT toXMLC a | recursive] (AppT toXMLC (AppT (AppT (ConT conNameF) i) a))+#endif       [FunD (mkName "toXML") [Clause [specToGADTPat spec] (NormalB $ specToToXML spec) []]]      attrPrefix = '_' : map toLower twimlName@@ -406,9 +484,25 @@     -- | @data FooAttributes = FooAttributes{..} deriving (Data, Eq, Ord, Read, Show)@     --     -- All record fields should be camelCased and prefixed with "_foo".+#if MIN_VERSION_template_haskell(2,12,0)+    attributes = DataD [] attributesName [] Nothing [RecC attributesName (parametersToVarStrictTypes makeAttr parameters)] . DerivClause Nothing $ ConT <$> [dataN, eqN, genericN, nfdataN, ordN, readN, showN]+#else+#if MIN_VERSION_template_haskell(2,11,0)+    attributes = DataD [] attributesName [] Nothing [RecC attributesName (parametersToVarStrictTypes makeAttr parameters)] $ ConT <$> [dataN, eqN, genericN, nfdataN, ordN, readN, showN]+#else     attributes = DataD [] attributesName [] [RecC attributesName (parametersToVarStrictTypes makeAttr parameters)] [dataN, eqN, genericN, nfdataN, ordN, readN, showN]+#endif+#endif      -- | @instance Default FooAttributes where def = FooAttributes def ...@+#if MIN_VERSION_template_haskell(2,11,0)+    instanceDefaultForAttributes = InstanceD Nothing [] (AppT defaultC $ ConT attributesName) [ValD (VarP $ mkName "def") (NormalB $ attributesToDefExp (ConE attributesName) parameters) []]+#else     instanceDefaultForAttributes = InstanceD [] (AppT defaultC $ ConT attributesName) [ValD (VarP $ mkName "def") (NormalB $ attributesToDefExp (ConE attributesName) parameters) []]+#endif +#if MIN_VERSION_template_haskell(2,11,0)+    instanceToAttrsForAttributes = InstanceD Nothing [] (AppT toAttrsC $ ConT attributesName) [ValD (VarP $ mkName "toAttrs") (NormalB (AppE (AppE (VarE $ mkName "flip") (VarE $ mkName "makeAttrs")) (specToAttributesListE spec))) []]+#else     instanceToAttrsForAttributes = InstanceD [] (AppT toAttrsC $ ConT attributesName) [ValD (VarP $ mkName "toAttrs") (NormalB (AppE (AppE (VarE $ mkName "flip") (VarE $ mkName "makeAttrs")) (specToAttributesListE spec))) []]+#endif
src/Text/XML/Twiml/Internal/Twiml.hs view
@@ -254,12 +254,14 @@       SipF        i ) a   } deriving (Functor, Generic, Show, Typeable) -instance (f i :<: ( ClientF     i :+:-                    ConferenceF i :+:-                    NumberF     i :+:-                    QueueF      i :+:-                    SipF        i )-         ) => f i :<: DialNounF i where+instance+  ( Functor (f i)+  , f i :<: ( ClientF     i :+:+              ConferenceF i :+:+              NumberF     i :+:+              QueueF      i :+:+              SipF        i )+  ) => f i :<: DialNounF i where   inj = DialNounF . inj   prj = prj . getDialNounF @@ -269,7 +271,7 @@ instance Show1 DialNounF where   show1 = show -instance ToXML a => ToXML (DialNounF i a) where+instance ToXML (DialNounF i a) where   toXML = toXML . getDialNounF  instance ToXML (IxFree DialNounF i Void) where@@ -589,20 +591,22 @@       EndF      i ) a -- Shared between Voice and Messaging TwiML   } deriving (Functor, Generic, Show, Typeable) -instance (f i :<: ( SayF      i :+:-                    PlayF     i :+:-                    GatherF   i :+:-                    SmsF      i :+:-                    DialF     i :+:-                    EnqueueF  i :+:-                    LeaveF    i :+:-                    HangupF   i :+:-                    RecordF   i :+:-                    RedirectF i :+:-                    RejectF   i :+:-                    PauseF    i :+:-                    EndF      i )-         ) => f i :<: VoiceVerbsF i where+instance+  ( Functor (f i)+  , f i :<: ( SayF      i :+:+              PlayF     i :+:+              GatherF   i :+:+              SmsF      i :+:+              DialF     i :+:+              EnqueueF  i :+:+              LeaveF    i :+:+              HangupF   i :+:+              RecordF   i :+:+              RedirectF i :+:+              RejectF   i :+:+              PauseF    i :+:+              EndF      i )+  ) => f i :<: VoiceVerbsF i where   inj = VoiceVerbsF . inj   prj = prj . getVoiceVerbsF @@ -638,11 +642,13 @@       EndF      i ) a -- Shared between Voice and Messaging TwiML   } deriving (Functor, Generic, Show, Typeable) -instance (f i :<: ( MessageF  i :+:-                    RedirectF i :+:-                    SmsF      i :+:-                    EndF      i )-         ) => f i :<: MessagingVerbsF i where+instance+  ( Functor (f i)+  , f i :<: ( MessageF  i :+:+              RedirectF i :+:+              SmsF      i :+:+              EndF      i )+  ) => f i :<: MessagingVerbsF i where   inj = MessagingVerbsF . inj   prj = prj . getMessagingVerbsF 
src/Text/XML/Twiml/Lenses.hs view
@@ -16,7 +16,6 @@ module Text.XML.Twiml.Lenses where  import Control.Lens hiding (to)-import Text.XML.Twiml.Types hiding (ClientAttributes(..), ConferenceAttributes(..), NumberAttributes(..), QueueAttributes(..), SipAttributes(..), DialNoun(..)) import Text.XML.Twiml.Internal.Twiml  makeLensesWith abbreviatedFields ''SayAttributes
src/Text/XML/Twiml/Types.hs view
@@ -10,7 +10,6 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE OverlappingInstances #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-}@@ -42,7 +41,6 @@  import Control.DeepSeq (NFData(..)) import Data.Data-import Data.Default import GHC.Generics (Generic) import Network.URI (URI(..), parseURIReference) 
test/ShouldNotTypecheck.hs view
@@ -1,16 +1,12 @@ {-#OPTIONS_GHC -fdefer-type-errors -fno-defer-typed-holes #-}+{-#LANGUAGE CPP #-} {-#LANGUAGE DataKinds #-} {-#LANGUAGE RebindableSyntax #-} {-#LANGUAGE RecordWildCards #-}  module ShouldNotTypecheck where -import Text.XML.Twiml-import qualified Text.XML.Twiml.Syntax as Twiml- import Control.DeepSeq (NFData)-import Data.Default-import Data.Void import Distribution.TestSuite import qualified Test.HUnit as H import Test.ShouldNotTypecheck@@ -52,11 +48,19 @@     onStart :: H.State -> Progress -> IO Progress     onStart _ = return +#if MIN_VERSION_HUnit(1,3,0)+    onError :: a -> String -> H.State -> Progress -> IO Progress+    onError _ msg _ _ = return $ Finished (Error msg)++    onFailure :: a -> String -> H.State -> Progress -> IO Progress+    onFailure _ msg _ _ = return $ Finished (Fail msg)+#else     onError :: String -> H.State -> Progress -> IO Progress     onError msg _ _ = return $ Finished (Error msg)      onFailure :: String -> H.State -> Progress -> IO Progress     onFailure msg _ _ = return $ Finished (Fail msg)+#endif  {- someGather :: Twiml' '[Gather] Void
test/examples/dialExample3.txt view
@@ -1,7 +1,7 @@ > example :: VoiceTwiml > example = >   response $ do->     dial' (Left $ Number def "+15558675309") $ def+>     dial' (Left . dialNoun $ number "+15558675309" def) $ def >              & callerId .~ Just "+15551112222" >     end >   where Twiml.Syntax{..} = def
twiml.cabal view
@@ -1,8 +1,5 @@--- Initial twiml.cabal generated by cabal init.  For further documentation,---  see http://haskell.org/cabal/users-guide/- name:                twiml-version:             0.2.0.0+version:             0.2.0.1 synopsis:            TwiML library for Haskell description:         TwiML library for Haskell homepage:            https://github.com/markandrus/twiml-haskell@@ -14,6 +11,7 @@ category:            Text, Web, XML build-type:          Simple cabal-version:       >=1.8+tested-with:         GHC == 7.10.1, GHC == 7.10.2, GHC == 8.0.1, GHC == 8.0.2 data-files:          test/examples/*.txt  source-repository head@@ -46,7 +44,7 @@   hs-source-dirs:      src   -- other-modules:          build-depends:       base ==4.*,-                       data-default ==0.5.*,+                       data-default >=0.5 && < 0.8,                        deepseq ==1.4.*,                        lens ==4.*,                        network-uri >=2.6,@@ -55,31 +53,31 @@                        template-haskell ==2.*,                        void ==0.*,                        xml >=1.3-  ghc-options:         -Wall -fno-warn-unused-do-bind+  ghc-options:         -Wall -fno-warn-name-shadowing -fno-warn-orphans -fno-warn-unused-do-bind  test-suite Golden   hs-source-dirs:      test   type:                detailed-0.9   test-module:         Golden-  build-depends:       base ==4.*,+  build-depends:       base,                        Cabal >=1.16.0,-                       data-default ==0.5.*,+                       data-default,                        Diff ==0.3.2,-                       lens ==4.*,+                       lens,                        twiml-  ghc-options:         -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing+  ghc-options:         -Wall -fno-warn-name-shadowing -fno-warn-orphans -fno-warn-unused-do-bind  test-suite ShouldNotTypecheck   hs-source-dirs:      test   type:                detailed-0.9   test-module:         ShouldNotTypecheck-  build-depends:       base ==4.*,+  build-depends:       base,                        Cabal >=1.16.0,-                       data-default ==0.5.*,-                       deepseq ==1.4.*,-                       HUnit ==1.2.*,-                       lens ==4.*,+                       data-default,+                       deepseq,+                       HUnit >=1.2 && <1.6,+                       lens,                        should-not-typecheck ==2.0.*,                        twiml,-                       void ==0.*-  ghc-options:         -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing+                       void+  ghc-options:         -Wall -fno-warn-name-shadowing -fno-warn-orphans -fno-warn-unused-do-bind