From c27e735e016fb925a2514f1c0f11d925ed4bd320 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Thu, 9 Apr 2009 16:01:39 +0200 Subject: [PATCH] Add a runTcM utility function. --- GhcTools.hs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/GhcTools.hs b/GhcTools.hs index dcfab0f..9c5038c 100644 --- a/GhcTools.hs +++ b/GhcTools.hs @@ -6,6 +6,10 @@ import qualified System.IO.Unsafe import qualified GHC import qualified GHC.Paths import qualified DynFlags +import qualified TcRnMonad +import qualified MonadUtils +import qualified HscTypes +import qualified PrelNames -- Change a DynFlag from within the Ghc monad. Strangely enough there seems to -- be no standard function to do exactly this. @@ -29,3 +33,12 @@ unsafeRunGhc m = dflags <- GHC.getSessionDynFlags GHC.setSessionDynFlags dflags m + +runTcM :: TcRnMonad.TcM a -> IO a +runTcM thing_inside = do + GHC.runGhc (Just GHC.Paths.libdir) $ do + dflags <- GHC.getSessionDynFlags + GHC.setSessionDynFlags dflags + env <- GHC.getSession + HscTypes.ioMsgMaybe . MonadUtils.liftIO . TcRnMonad.initTcPrintErrors env PrelNames.iNTERACTIVE $ do + thing_inside -- 2.30.2