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 +8/−9
- src/Text/XML/Twiml/Internal/TH.hs +125/−31
- src/Text/XML/Twiml/Internal/Twiml.hs +32/−26
- src/Text/XML/Twiml/Lenses.hs +0/−1
- src/Text/XML/Twiml/Types.hs +0/−2
- test/ShouldNotTypecheck.hs +9/−5
- test/examples/dialExample3.txt +1/−1
- twiml.cabal +15/−17
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