ghc-lib-parser-9.14.1.20251220: The GHC API, decoupled from GHC versions

Safe Haskell | Ignore
Language | GHC2021

GHC.Runtime.Eval.Types

Synopsis

- data Resume = Resume {
  - resumeStmt :: String
  - resumeContext :: ForeignRef (ResumeContext [HValueRef])
  - resumeBindings :: ResumeBindings
  - resumeFinalIds :: [Id]
  - resumeApStack :: ForeignHValue
  - resumeBreakpointId :: Maybe InternalBreakpointId
  - resumeSpan :: SrcSpan
  - resumeDecl :: String
  - resumeCCS :: RemotePtr CostCentreStack
  - resumeHistory :: [History]
  - resumeHistoryIx :: Int
  }
- type ResumeBindings = ([TyThing], IcGlobalRdrEnv)
- data IcGlobalRdrEnv = IcGlobalRdrEnv {
  - igre_env :: !GlobalRdrEnv
  - igre_prompt_env :: !GlobalRdrEnv
  }
- data History = History {
  - historyApStack :: ForeignHValue
  - historyBreakpointId :: InternalBreakpointId
  - historyEnclosingDecls :: [String]
  }
- data ExecResult
  - = ExecComplete {
    - execResult :: Either SomeException [Name]
    - execAllocation :: Word64
    }
  - | ExecBreak {
    - breakNames :: [Name]
    - breakPointId :: Maybe InternalBreakpointId
    }
- data SingleStep
  - = RunToCompletion
  - | RunAndLogSteps
  - | SingleStep
  - | StepOut {
    - initiatedFrom :: Maybe SrcSpan
    }
  - | LocalStep {
    - breakAt :: SrcSpan
    }
  - | ModuleStep {
    - breakAt :: SrcSpan
    }
- enableGhcStepMode :: SingleStep -> EvalStep
- breakHere :: Bool -> SingleStep -> SrcSpan -> Bool
- data ExecOptions = ExecOptions {
  - execSingleStep :: SingleStep
  - execSourceFile :: String
  - execLineNumber :: Int
  - execWrap :: ForeignHValue -> EvalExpr ForeignHValue
  }

# Documentation

data Resume #

Constructors

Resume |

Fields

- resumeStmt :: String
- resumeContext :: ForeignRef (ResumeContext [HValueRef])
- resumeBindings :: ResumeBindings
- resumeFinalIds :: [Id]
- resumeApStack :: ForeignHValue
- resumeBreakpointId :: Maybe InternalBreakpointId

  the internal breakpoint we stopped at (Nothing = exception)

- resumeSpan :: SrcSpan
- resumeDecl :: String
- resumeCCS :: RemotePtr CostCentreStack
- resumeHistory :: [History]
- resumeHistoryIx :: Int

type ResumeBindings = ([TyThing], IcGlobalRdrEnv) #

data IcGlobalRdrEnv #

Essentially a GlobalRdrEnv, but with additional cached values to allow efficient re-calculation when the imports change. Fields are strict to avoid space leaks (see T4029) All operations are in GHC.Runtime.Context. See Note [icReaderEnv recalculation]

Constructors

IcGlobalRdrEnv |

Fields

- igre_env :: !GlobalRdrEnv

  The final environment

- igre_prompt_env :: !GlobalRdrEnv

  Just the things defined at the prompt (excluding imports!)

data History #

Constructors

History |

Fields

- historyApStack :: ForeignHValue
- historyBreakpointId :: InternalBreakpointId

  breakpoint identifier

- historyEnclosingDecls :: [String]

  declarations enclosing the breakpoint

data ExecResult #

Constructors

ExecComplete | Execution is complete with either an exception or the list of user-visible names that were brought into scope.

Fields

- execResult :: Either SomeException [Name]
- execAllocation :: Word64

ExecBreak | Execution stopped at a breakpoint. Note: `ExecBreak` is only returned by `handleRunStatus` when GHCi should definitely stop at this breakpoint. GHCi is not responsible for subsequently deciding whether to really stop here. `ExecBreak` always means GHCi breaks.

Fields

- breakNames :: [Name]
- breakPointId :: Maybe InternalBreakpointId

data SingleStep #

What kind of stepping are we doing?

Constructors

RunToCompletion |
RunAndLogSteps | :trace [expr]
SingleStep | :step [expr]
StepOut | :stepout

Fields

- initiatedFrom :: Maybe SrcSpan

  Step-out locations are filtered to make sure we don't stop at a continuation that is within the function from which step-out was initiated. See Note [Debugger: Step-out]

LocalStep | :steplocal [expr]

Fields

- breakAt :: SrcSpan

ModuleStep | :stepmodule [expr]

Fields

- breakAt :: SrcSpan

enableGhcStepMode :: SingleStep -> EvalStep #

Whether this `SingleStep` mode requires instructing the interpreter to step at every breakpoint or after every return (see ``EvalStep``).

breakHere #

Arguments

:: Bool | Was this breakpoint explicitly active (in the `BreakArray`s)?
-> SingleStep | What kind of stepping were we doing
-> SrcSpan | The span of the breakpoint we hit
-> Bool | Should we stop here then?

Given a `SingleStep` mode, whether the breakpoint was explicitly active, and the SrcSpan of a breakpoint we hit, return `True` if we should stop at this breakpoint.

In particular, this will always be `False` for ``RunToCompletion`` and ``RunAndLogSteps``. We'd need further information e.g. about the user breakpoints to determine whether to break in those modes.

data ExecOptions #

Constructors

ExecOptions |

Fields

- execSingleStep :: SingleStep

  stepping mode

- execSourceFile :: String

  filename (for errors)

- execLineNumber :: Int

  line number (for errors)

- execWrap :: ForeignHValue -> EvalExpr ForeignHValue