X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fghci%2FGhciMonad.hs;h=e56c4de2c4e08b39300d58bb55cba49d527f2e96;hb=575051778533f6ca7fea374eb3ccdcc18ef68908;hp=4e8e65f257e217f6ccd039fca7526474385f63e0;hpb=d2b3daa3cc474e6ab010fb6af5c21ddb852b8b5b;p=ghc-hetmet.git diff --git a/compiler/ghci/GhciMonad.hs b/compiler/ghci/GhciMonad.hs index 4e8e65f..e56c4de 100644 --- a/compiler/ghci/GhciMonad.hs +++ b/compiler/ghci/GhciMonad.hs @@ -46,7 +46,7 @@ import GHC.Exts ----------------------------------------------------------------------------- -- GHCi monad -type Command = (String, String -> GHCi Bool, Bool, String -> IO [String]) +type Command = (String, String -> GHCi Bool, Maybe String, String -> IO [String]) data GHCiState = GHCiState { @@ -68,11 +68,20 @@ data GHCiState = GHCiState -- remember is here: last_command :: Maybe Command, cmdqueue :: [String], - remembered_ctx :: Maybe ([Module],[Module]) - -- modules we want to add to the context, but can't - -- because they currently have errors. Set by :reload. + remembered_ctx :: [(CtxtCmd, [String], [String])] + -- we remember the :module commands between :loads, so that + -- on a :reload we can replay them. See bugs #2049, + -- #1873, #1360. Previously we tried to remember modules that + -- were supposed to be in the context but currently had errors, + -- but this was complicated. Just replaying the :module commands + -- seems to be the right thing. } +data CtxtCmd + = SetContext + | AddModules + | RemModules + type TickArray = Array Int [(BreakIndex,SrcSpan)] data GHCiOption