Actually update `world` in legacyInteractiveLoop

This commit is contained in:
Daniel Gröber 2015-09-11 09:53:24 +02:00
parent ce1d9d1da1
commit 64379a7c56
2 changed files with 13 additions and 3 deletions

View File

@ -69,8 +69,13 @@ initSession :: IOish m
initSession opts mdf = do
s <- gmsGet
case gmGhcSession s of
Just GmGhcSession {..} -> when (gmgsOptions /= opts) $ putNewSession s
Nothing -> putNewSession s
Just GmGhcSession {..} | gmgsOptions /= opts-> do
gmLog GmDebug "initSession" $ text "Flags changed, creating new session"
putNewSession s
Just _ -> return ()
Nothing -> do
gmLog GmDebug "initSession" $ text "Session not initialized, creating new one"
putNewSession s
where
putNewSession s = do

View File

@ -462,6 +462,11 @@ legacyInteractiveLoop symdbreq world = do
-- after blocking, we need to see if the world has changed.
changed <- didWorldChange world
world' <- if changed
then getCurrentWorld -- TODO: gah, we're hitting the fs twice
else return world
when changed $ do
dropSession
@ -500,7 +505,7 @@ legacyInteractiveLoop symdbreq world = do
_ -> fatalError $ "unknown command: `" ++ cmd ++ "'"
gmPutStr res >> gmPutStrLn "OK" >> liftIO (hFlush stdout)
legacyInteractiveLoop symdbreq world
legacyInteractiveLoop symdbreq world'
where
interactiveHandlers =
[ GHandler $ \e@(FatalError _) -> throw e