From 61207c13d396618be35fdbcfa3fd2a7178243bb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gr=C3=B6ber?= Date: Thu, 8 May 2014 08:26:26 +0200 Subject: [PATCH] Add MonadIO instance for RWST --- Language/Haskell/GhcMod/Monad.hs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Language/Haskell/GhcMod/Monad.hs b/Language/Haskell/GhcMod/Monad.hs index ee7e5b6..a34264d 100644 --- a/Language/Haskell/GhcMod/Monad.hs +++ b/Language/Haskell/GhcMod/Monad.hs @@ -1,4 +1,5 @@ -{-# LANGUAGE GeneralizedNewtypeDeriving, MultiParamTypeClasses, RankNTypes, TypeFamilies #-} +{-# LANGUAGE CPP, GeneralizedNewtypeDeriving, FlexibleInstances, MultiParamTypeClasses, RankNTypes, TypeFamilies #-} +{-# OPTIONS_GHC -fno-warn-orphans #-} module Language.Haskell.GhcMod.Monad ( GhcMod , GhcModEnv(..) @@ -23,14 +24,16 @@ import Exception import MonadUtils import DynFlags +import Data.Monoid (Monoid) import Data.IORef (IORef, readIORef, writeIORef, newIORef) import Control.Monad (liftM) import Control.Monad.Base (MonadBase,liftBase) --import Control.Monad.IO.Class (MonadIO) -import Control.Monad.Trans.RWS.Lazy (RWST,runRWST) +import Control.Monad.Trans.RWS.Lazy (RWST(..),runRWST) import Control.Monad.Trans.Control (MonadBaseControl(..), StM, liftBaseWith , control, liftBaseOp, liftBaseOp_) +import Control.Monad.Trans.Class (lift) import Control.Monad.Reader.Class import Control.Monad.Writer.Class import Control.Monad.State.Class @@ -58,6 +61,12 @@ newtype GhcMod a = GhcMod { MonadWriter GhcModWriter, MonadState GhcModState) +#if __GLASGOW_HASKELL__ < 708 +instance (Monoid w, MonadIO m) => MonadIO (RWST r w s m) where +-- liftIO :: MonadIO m => m -> IO m + liftIO = lift . liftIO +#endif + runGhcMod' :: GhcModEnv -> GhcModState -> GhcMod a