git.iko.soy/haskell-generate
on master help sign in
4 files changed+17−12
since splitsnapshots
unifiedsplit
.travis.yml+4−3 haskell-generate.cabal+3−4 src/Language/Haskell/Generate/Monad.hs+9−3 tests/doctests.hsc+1−2
.travis.yml+4−3
@@ -2,7 +2,8 @@ env:
22 - GHCVER=7.4.2 CABALVER=1.16
33 - GHCVER=7.6.3 CABALVER=1.18
44 - GHCVER=7.8.3 CABALVER=1.20
5− - GHCVER=head CABALVER=1.20
5+ - GHCVER=7.10.2 CABALVER=1.22
6+ - GHCVER=head CABALVER=1.22
67
78before_install:
89 - sudo add-apt-repository -y ppa:hvr/ghc
@@ -21,5 +22,5 @@ script:
2122
2223matrix:
2324 allow_failures:
24− - env: GHCVER=head CABALVER=1.20
25− fast_finish: true
25+ - env: GHCVER=head CABALVER=1.22
26+ fast_finish: true
haskell-generate.cabal+3−4
@@ -1,5 +1,5 @@
11name: haskell-generate
2−version: 0.2.3
2+version: 0.2.4
33license: BSD3
44category: Code Generation, Language
55cabal-version: >= 1.10
@@ -13,7 +13,8 @@ copyright: Copyright (C) 2013-2015 Benno Fünfstück
1313synopsis: Typesafe generation of haskell source code
1414description:
1515 This library provides an interface to generate haskell source code, verifying at compile time
16− that the resulting code typechecks. See https://github.com/bennofs/haskell-generate for an
16+ that the resulting code typechecks.
17+ See <https://github.com/bennofs/haskell-generate haskell-generate> for an
1718 introduction explaining how to use the library.
1819build-type: Custom
1920
@@ -56,6 +57,4 @@ test-suite doctests
5657 , doctest >= 0.9.1
5758 , filepath
5859 ghc-options: -Wall -threaded
59− if impl(ghc<7.6.1)
60− ghc-options: -Werror
6160 hs-source-dirs: tests
src/Language/Haskell/Generate/Monad.hs+9−3
@@ -64,9 +64,11 @@ generateExp = prettyPrint . runExpression . fst . runGenerate
6464caseE :: ExpG x -> [(Pat, ExpG t)] -> ExpG t
6565caseE v alt = do
6666 v' <- v
67−#if MIN_VERSION_haskell_src_exts(1,16,0)
67+#if MIN_VERSION_haskell_src_exts(1,17,0)
68+ alt' <- mapM (\(p,a) -> fmap (\a' -> Alt noLoc p (UnGuardedRhs $ runExpression a') Nothing) a) alt
69+#elif MIN_VERSION_haskell_src_exts(1,16,0)
6870 alt' <- mapM (\(p,a) -> fmap (\a' -> Alt noLoc p (UnGuardedRhs $ runExpression a') (BDecls [])) a) alt
69−#else
71+#else
7072 alt' <- mapM (\(p,a) -> fmap (\a' -> Alt noLoc p (UnGuardedAlt $ runExpression a') (BDecls [])) a) alt
7173#endif
7274 return $ Expression $ Case (runExpression v') alt'
@@ -212,7 +214,7 @@ instance GenExp (FunRef t) where
212214
213215-- | Generate a ExportSpec for a given function item.
214216exportFun :: FunRef t -> ExportSpec
215−#if MIN_VERSION_haskell_src_exts(1,16,0)
217+#if MIN_VERSION_haskell_src_exts(1,16,0) && !MIN_VERSION_haskell_src_exts(1,17,0)
216218exportFun (FunRef name) = EVar NoNamespace (UnQual name)
217219#else
218220exportFun (FunRef name) = EVar (UnQual name)
@@ -222,7 +224,11 @@ exportFun (FunRef name) = EVar (UnQual name)
222224addDecl :: Name -> ExpG t -> ModuleM (FunRef t)
223225addDecl name e = ModuleM $ do
224226 let (body, mods) = runGenerate e
227+#if MIN_VERSION_haskell_src_exts(1,17,0)
228+ tell (mods, [FunBind [Match noLoc name [] Nothing (UnGuardedRhs $ runExpression body) Nothing]])
229+#else
225230 tell (mods, [FunBind [Match noLoc name [] Nothing (UnGuardedRhs $ runExpression body) $ BDecls []]])
231+#endif
226232 return $ FunRef name
227233
228234-- | Extract the Module from a module generator.
tests/doctests.hsc+1−2
@@ -20,18 +20,17 @@ import Data.List
2020import System.Directory
2121import System.FilePath
2222import Test.DocTest
23+import Prelude
2324
2425##ifdef mingw32_HOST_ARCH
2526##ifdef i386_HOST_ARCH
2627##define USE_CP
27−import Control.Applicative
2828import Control.Exception
2929import Foreign.C.Types
3030foreign import stdcall "windows.h SetConsoleCP" c_SetConsoleCP :: CUInt -> IO Bool
3131foreign import stdcall "windows.h GetConsoleCP" c_GetConsoleCP :: IO CUInt
3232##elif defined(x86_64_HOST_ARCH)
3333##define USE_CP
34−import Control.Applicative
3534import Control.Exception
3635import Foreign.C.Types
3736foreign import ccall "windows.h SetConsoleCP" c_SetConsoleCP :: CUInt -> IO Bool