f0bfcb8811
Not doing this makes having GhcModT pretty pointless as users of the library wouldn't be able to use custom inner monads as evey function for dealing with GhcModT's would be constraint to (GhcModT IO) thus only allowing IO as the inner monad.
37 lines
915 B
Haskell
37 lines
915 B
Haskell
module TestUtils (
|
|
run
|
|
, runD
|
|
, runI
|
|
, runID
|
|
, runIsolatedGhcMod
|
|
, isolateCradle
|
|
, module Language.Haskell.GhcMod.Monad
|
|
, module Language.Haskell.GhcMod.Types
|
|
) where
|
|
|
|
import Language.Haskell.GhcMod.Monad
|
|
import Language.Haskell.GhcMod.Types
|
|
|
|
isolateCradle :: IOish m => GhcModT m a -> GhcModT m a
|
|
isolateCradle action =
|
|
local modifyEnv $ action
|
|
where
|
|
modifyEnv e = e { gmCradle = (gmCradle e) { cradlePkgDbStack = [GlobalDb] } }
|
|
|
|
runIsolatedGhcMod :: Options -> GhcModT IO a -> IO a
|
|
runIsolatedGhcMod opt action = runGhcModT opt $ isolateCradle action
|
|
|
|
-- | Run GhcMod in isolated cradle with default options
|
|
runID = runIsolatedGhcMod defaultOptions
|
|
|
|
-- | Run GhcMod in isolated cradle
|
|
runI = runIsolatedGhcMod
|
|
|
|
-- | Run GhcMod
|
|
run :: Options -> GhcModT IO a -> IO a
|
|
run = runGhcModT
|
|
|
|
-- | Run GhcMod with default options
|
|
runD :: GhcModT IO a -> IO a
|
|
runD = runGhcModT defaultOptions
|