projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove skolem tyvars from the InteractiveContext once they have been instantiated...
[ghc-hetmet.git]
/
compiler
/
ghci
/
GhciMonad.hs
diff --git
a/compiler/ghci/GhciMonad.hs
b/compiler/ghci/GhciMonad.hs
index
30d07e4
..
f7f2014
100644
(file)
--- a/
compiler/ghci/GhciMonad.hs
+++ b/
compiler/ghci/GhciMonad.hs
@@
-43,10
+43,11
@@
data GHCiState = GHCiState
args :: [String],
prompt :: String,
editor :: String,
args :: [String],
prompt :: String,
editor :: String,
+ stop :: String,
session :: GHC.Session,
options :: [GHCiOption],
prelude :: GHC.Module,
session :: GHC.Session,
options :: [GHCiOption],
prelude :: GHC.Module,
- resume :: [(SrcSpan, ThreadId, GHC.ResumeHandle)],
+ resume :: [EvalInProgress],
breaks :: !ActiveBreakPoints,
tickarrays :: ModuleEnv TickArray
-- tickarrays caches the TickArray for loaded modules,
breaks :: !ActiveBreakPoints,
tickarrays :: ModuleEnv TickArray
-- tickarrays caches the TickArray for loaded modules,
@@
-68,6
+69,14
@@
data ActiveBreakPoints
, breakLocations :: ![(Int, BreakLocation)] -- break location uniquely numbered
}
, breakLocations :: ![(Int, BreakLocation)] -- break location uniquely numbered
}
+-- The context of an evaluation in progress that stopped at a breakpoint
+data EvalInProgress
+ = EvalInProgress
+ { evalStmt :: String,
+ evalSpan :: SrcSpan,
+ evalThreadId :: ThreadId,
+ evalResumeHandle :: GHC.ResumeHandle }
+
instance Outputable ActiveBreakPoints where
ppr activeBrks = prettyLocations $ breakLocations activeBrks
instance Outputable ActiveBreakPoints where
ppr activeBrks = prettyLocations $ breakLocations activeBrks
@@
-180,18
+189,18
@@
unsetOption opt
io :: IO a -> GHCi a
io m = GHCi { unGHCi = \s -> m >>= return }
io :: IO a -> GHCi a
io m = GHCi { unGHCi = \s -> m >>= return }
-popResume :: GHCi (Maybe (SrcSpan, ThreadId, GHC.ResumeHandle))
+popResume :: GHCi (Maybe EvalInProgress)
popResume = do
st <- getGHCiState
case (resume st) of
[] -> return Nothing
(x:xs) -> do setGHCiState $ st { resume = xs } ; return (Just x)
popResume = do
st <- getGHCiState
case (resume st) of
[] -> return Nothing
(x:xs) -> do setGHCiState $ st { resume = xs } ; return (Just x)
-pushResume :: SrcSpan -> ThreadId -> GHC.ResumeHandle -> GHCi ()
-pushResume span threadId resumeAction = do
+pushResume :: EvalInProgress -> GHCi ()
+pushResume eval = do
st <- getGHCiState
let oldResume = resume st
st <- getGHCiState
let oldResume = resume st
- setGHCiState $ st { resume = (span, threadId, resumeAction) : oldResume }
+ setGHCiState $ st { resume = eval : oldResume }
discardResumeContext :: GHCi ()
discardResumeContext = do
discardResumeContext :: GHCi ()
discardResumeContext = do