From: Ian Lynagh Date: Thu, 21 Apr 2011 23:21:23 +0000 (+0100) Subject: Initialise Settings before DynFlags X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=bfa0c2ed1e4cd07c7934901520cb04db6b79cd9d Initialise Settings before DynFlags Stops us having to temporarily have a panic in the DynFlags. We still need a panic in the DynFlags used for the top-level error handler, though. --- diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index 9b1b060..5bcddca 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -43,7 +43,7 @@ module DynFlags ( -- ** Manipulating DynFlags - defaultDynFlags, -- DynFlags + defaultDynFlags, -- Settings -> DynFlags initDynFlags, -- DynFlags -> IO DynFlags getOpts, -- DynFlags -> (DynFlags -> [a]) -> [a] @@ -697,8 +697,8 @@ initDynFlags dflags = do -- | The normal 'DynFlags'. Note that they is not suitable for use in this form -- and must be fully initialized by 'GHC.newSession' first. -defaultDynFlags :: DynFlags -defaultDynFlags = +defaultDynFlags :: Settings -> DynFlags +defaultDynFlags mySettings = DynFlags { ghcMode = CompManager, ghcLink = LinkBinary, @@ -774,8 +774,7 @@ defaultDynFlags = buildTag = panic "defaultDynFlags: No buildTag", rtsBuildTag = panic "defaultDynFlags: No rtsBuildTag", splitInfo = Nothing, - -- initSysTools fills this in: - settings = panic "defaultDynFlags: No settings", + settings = mySettings, -- ghc -M values depMakefile = "Makefile", depIncludePkgDeps = False, diff --git a/compiler/main/GHC.hs b/compiler/main/GHC.hs index 2480e28..a9e652d 100644 --- a/compiler/main/GHC.hs +++ b/compiler/main/GHC.hs @@ -431,9 +431,8 @@ initGhcMonad mb_top_dir = do liftIO $ StaticFlags.initStaticOpts - dflags0 <- liftIO $ initDynFlags defaultDynFlags mySettings <- liftIO $ initSysTools mb_top_dir - let dflags = dflags0 { settings = mySettings } + dflags <- liftIO $ initDynFlags (defaultDynFlags mySettings) env <- liftIO $ newHscEnv dflags setSession env diff --git a/ghc/Main.hs b/ghc/Main.hs index 15327f8..12d8dd2 100644 --- a/ghc/Main.hs +++ b/ghc/Main.hs @@ -78,7 +78,8 @@ import Data.Maybe main :: IO () main = do hSetBuffering stdout NoBuffering - GHC.defaultErrorHandler defaultDynFlags $ do + let defaultErrorHandlerDynFlags = defaultDynFlags (panic "No settings") + GHC.defaultErrorHandler defaultErrorHandlerDynFlags $ do -- 1. extract the -B flag from the args argv0 <- getArgs diff --git a/utils/ghctags/Main.hs b/utils/ghctags/Main.hs index a25537e..b3ed58f 100644 --- a/utils/ghctags/Main.hs +++ b/utils/ghctags/Main.hs @@ -10,6 +10,7 @@ import DriverPhases ( isHaskellSrcFilename ) import HscTypes ( msHsFilePath ) import Name ( getOccString ) --import ErrUtils ( printBagOfErrors ) +import Panic ( panic ) import DynFlags ( defaultDynFlags ) import Bag import Exception @@ -100,7 +101,7 @@ main = do then Just `liftM` openFile "TAGS" openFileMode else return Nothing - GHC.defaultErrorHandler defaultDynFlags $ + GHC.defaultErrorHandler (defaultDynFlags (panic "No settings")) $ runGhc (Just ghc_topdir) $ do --liftIO $ print "starting up session" dflags <- getSessionDynFlags