diff --git a/Language/Haskell/GhcMod/Monad/Compat.hs_h b/Language/Haskell/GhcMod/Monad/Compat.hs_h index 4aafa75..7437bfc 100644 --- a/Language/Haskell/GhcMod/Monad/Compat.hs_h +++ b/Language/Haskell/GhcMod/Monad/Compat.hs_h @@ -26,7 +26,3 @@ -- RWST doen't have a MonadIO instance before ghc 7.8 #define MONADIO_INSTANCES 1 #endif - -#if DIFFERENT_MONADIO -import Data.Monoid (Monoid) -#endif diff --git a/Language/Haskell/GhcMod/Monad/Newtypes.hs b/Language/Haskell/GhcMod/Monad/Newtypes.hs index 915dded..dd7e5a6 100644 --- a/Language/Haskell/GhcMod/Monad/Newtypes.hs +++ b/Language/Haskell/GhcMod/Monad/Newtypes.hs @@ -40,15 +40,9 @@ import Control.Monad.Trans.Class (MonadTrans(..)) import Control.Monad.Trans.Control import Control.Monad.Base (MonadBase(..), liftBase) -#if DIFFERENT_MONADIO -import qualified MonadUtils as GHC (MonadIO(..)) -#endif -import qualified Control.Monad.IO.Class as MTL - import Data.IORef import Prelude - type GhcModT m = GmT (GmOutT m) newtype GmOutT m a = GmOutT { @@ -59,10 +53,6 @@ newtype GmOutT m a = GmOutT { , Monad , MonadPlus , MonadTrans - , MTL.MonadIO -#if DIFFERENT_MONADIO - , GHC.MonadIO -#endif ) newtype GmT m a = GmT { @@ -75,10 +65,6 @@ newtype GmT m a = GmT { , Alternative , Monad , MonadPlus - , MTL.MonadIO -#if DIFFERENT_MONADIO - , GHC.MonadIO -#endif , MonadError GhcModError ) @@ -88,10 +74,6 @@ newtype GmlT m a = GmlT { unGmlT :: GhcModT m a } , Alternative , Monad , MonadPlus - , MTL.MonadIO -#if DIFFERENT_MONADIO - , GHC.MonadIO -#endif , MonadError GhcModError ) @@ -99,10 +81,6 @@ newtype LightGhc a = LightGhc { unLightGhc :: ReaderT (IORef HscEnv) IO a } deriving ( Functor , Applicative , Monad - , MTL.MonadIO -#if DIFFERENT_MONADIO - , GHC.MonadIO -#endif ) -- GmOutT ---------------------------------------- diff --git a/Language/Haskell/GhcMod/Monad/Orphans.hs b/Language/Haskell/GhcMod/Monad/Orphans.hs index 80c1fb3..88e3e28 100644 --- a/Language/Haskell/GhcMod/Monad/Orphans.hs +++ b/Language/Haskell/GhcMod/Monad/Orphans.hs @@ -14,7 +14,9 @@ -- You should have received a copy of the GNU Affero General Public License -- along with this program. If not, see . -{-# LANGUAGE CPP #-} +{-# LANGUAGE CPP, UndecidableInstances, StandaloneDeriving #-} +{-# LANGUAGE GeneralizedNewtypeDeriving #-} + {-# OPTIONS_GHC -fno-warn-orphans #-} module Language.Haskell.GhcMod.Monad.Orphans where @@ -23,6 +25,9 @@ module Language.Haskell.GhcMod.Monad.Orphans where import Language.Haskell.GhcMod.Types import Language.Haskell.GhcMod.Monad.Newtypes +#if DIFFERENT_MONADIO +import qualified MonadUtils as GHC (MonadIO(..)) +#endif import qualified Control.Monad.IO.Class as MTL import Control.Monad.Reader (ReaderT(..)) @@ -45,8 +50,17 @@ instance MTL.MonadIO m => GHC.MonadIO (JournalT x m) where liftIO = MTL.liftIO instance MTL.MonadIO m => GHC.MonadIO (MaybeT m) where liftIO = MTL.liftIO +deriving instance MTL.MonadIO m => GHC.MonadIO (GmOutT m) +deriving instance MTL.MonadIO m => GHC.MonadIO (GmT m) +deriving instance MTL.MonadIO m => GHC.MonadIO (GmlT m) +deriving instance GHC.MonadIO LightGhc #endif +deriving instance MTL.MonadIO m => MTL.MonadIO (GmOutT m) +deriving instance MTL.MonadIO m => MTL.MonadIO (GmT m) +deriving instance MTL.MonadIO m => MTL.MonadIO (GmlT m) +deriving instance MTL.MonadIO LightGhc + instance MonadIO IO where liftIO = id instance MonadIO m => MonadIO (ReaderT x m) where