mirrored from https://gitlab.haskell.org/ghc/ghc.git
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Split off a InteractiveEvalTypes module to remove an import loop
- Loading branch information
Ian Lynagh
committed
Apr 6, 2013
1 parent
6534c99
commit 575cb0c
Showing
5 changed files
with
69 additions
and
42 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
-- ----------------------------------------------------------------------------- | ||
-- | ||
-- (c) The University of Glasgow, 2005-2007 | ||
-- | ||
-- Running statements interactively | ||
-- | ||
-- ----------------------------------------------------------------------------- | ||
|
||
module InteractiveEvalTypes ( | ||
#ifdef GHCI | ||
RunResult(..), Status(..), Resume(..), History(..), | ||
#endif | ||
) where | ||
|
||
#ifdef GHCI | ||
|
||
import Id | ||
import Name | ||
import RdrName | ||
import TypeRep | ||
import ByteCodeInstr | ||
import ByteCodeLink | ||
import SrcLoc | ||
import Exception | ||
import Control.Concurrent | ||
|
||
data RunResult | ||
= RunOk [Name] -- ^ names bound by this evaluation | ||
| RunException SomeException -- ^ statement raised an exception | ||
| RunBreak ThreadId [Name] (Maybe BreakInfo) | ||
|
||
data Status | ||
= Break Bool HValue BreakInfo ThreadId | ||
-- ^ the computation hit a breakpoint (Bool <=> was an exception) | ||
| Complete (Either SomeException [HValue]) | ||
-- ^ the computation completed with either an exception or a value | ||
|
||
data Resume | ||
= Resume { | ||
resumeStmt :: String, -- the original statement | ||
resumeThreadId :: ThreadId, -- thread running the computation | ||
resumeBreakMVar :: MVar (), | ||
resumeStatMVar :: MVar Status, | ||
resumeBindings :: ([TyThing], GlobalRdrEnv), | ||
resumeFinalIds :: [Id], -- [Id] to bind on completion | ||
resumeApStack :: HValue, -- The object from which we can get | ||
-- value of the free variables. | ||
resumeBreakInfo :: Maybe BreakInfo, | ||
-- the breakpoint we stopped at | ||
-- (Nothing <=> exception) | ||
resumeSpan :: SrcSpan, -- just a cache, otherwise it's a pain | ||
-- to fetch the ModDetails & ModBreaks | ||
-- to get this. | ||
resumeHistory :: [History], | ||
resumeHistoryIx :: Int -- 0 <==> at the top of the history | ||
} | ||
|
||
data History | ||
= History { | ||
historyApStack :: HValue, | ||
historyBreakInfo :: BreakInfo, | ||
historyEnclosingDecls :: [String] -- declarations enclosing the breakpoint | ||
} | ||
#endif | ||
|