From c9af5d11c0d46c2c817ef4bf7a9d68c77d05d995 Mon Sep 17 00:00:00 2001 From: hallgren Date: Mon, 10 Feb 2014 21:44:34 +0000 Subject: [PATCH] Restore compatibility with GHC 7.0 --- src/runtime/haskell-bind/examples/pgf-shell.hs | 11 ++++++++--- src/runtime/haskell-bind/pgf2-bind.cabal | 2 +- src/runtime/haskell/PGF/Optimize.hs | 6 +++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/runtime/haskell-bind/examples/pgf-shell.hs b/src/runtime/haskell-bind/examples/pgf-shell.hs index 20667a4cd..e111076d4 100644 --- a/src/runtime/haskell-bind/examples/pgf-shell.hs +++ b/src/runtime/haskell-bind/examples/pgf-shell.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} -- | pgf-shell: A simple shell to illustrate the use of the Haskell binding -- to the C implementation of the PGF run-time system. -- @@ -11,7 +12,7 @@ import Control.Monad(forever) import Data.Char(isSpace) import qualified Data.Map as M import System.IO(hFlush,stdout) -import System.IO.Error(catchIOError) +import qualified System.IO.Error as S import System.Environment import PGF2 import System.Mem(performGC) @@ -23,7 +24,7 @@ getPGF [path] = pgfShell =<< readPGF path getPGF _ = putStrLn "Usage: pgf-shell " pgfShell pgf = - do putStrLn . unwords . map fst . M.toList $ languages pgf + do putStrLn . unwords . M.keys $ languages pgf forever $ do performGC putStr "> "; hFlush stdout execute pgf =<< readLn @@ -38,7 +39,7 @@ execute pgf cmd = cto <- getConcr' pgf to putl [linearize cto t|(t,_)<-parse cfrom (startCat pgf) s] _ -> putStrLn "Huh?" - `catchIOError` print + `catch` print getConcr' pgf lang = maybe (fail $ "Concrete syntax not found: "++show lang) return $ @@ -61,3 +62,7 @@ instance Read Command where ++ [(T l1 l2 r3,"") | ("t",r1)<-lex s, (l1,r2)<-lex r1, (l2,r3)<-lex r2] + +#if MIN_VERSION_base(4,6,0) +catch = S.catchIOError +#endif diff --git a/src/runtime/haskell-bind/pgf2-bind.cabal b/src/runtime/haskell-bind/pgf2-bind.cabal index f69eb3f05..877eb0e72 100644 --- a/src/runtime/haskell-bind/pgf2-bind.cabal +++ b/src/runtime/haskell-bind/pgf2-bind.cabal @@ -19,7 +19,7 @@ cabal-version: >=1.10 library exposed-modules: PGF2 other-modules: PGF2.FFI - build-depends: base >=4.5 && <4.7, bytestring >=0.9 && <0.11, + build-depends: base >=4.3, bytestring >=0.9, containers -- hs-source-dirs: build-tools: hsc2hs diff --git a/src/runtime/haskell/PGF/Optimize.hs b/src/runtime/haskell/PGF/Optimize.hs index 3f7a2e7f7..6944eb209 100644 --- a/src/runtime/haskell/PGF/Optimize.hs +++ b/src/runtime/haskell/PGF/Optimize.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE BangPatterns #-} +{-# LANGUAGE CPP, BangPatterns #-} module PGF.Optimize ( optimizePGF , updateProductionIndices @@ -11,7 +11,11 @@ import PGF.Macros import Data.List (mapAccumL) import Data.Array.IArray import Data.Array.MArray +#if MIN_VERSION_base(4,6,0) import Data.Array.Unsafe as U(unsafeFreeze) +#else +import Data.Array.ST as U(unsafeFreeze) +#endif import Data.Array.ST import Data.Array.Unboxed import qualified Data.Map as Map