| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
|
|
|
| |
Older GHCs can't parse OPTIONS_GHC.
This also changes the URL referenced for the -w options from
WorkingConventions#Warnings to CodingStyle#Warnings for the compiler
modules.
|
|
|
|
|
| |
I had planned to do findEnclosingDecl a different way, so add a ToDo
as a reminder.
|
| |
|
| |
|
|
|
|
| |
when printing the contents of binding at a breakpoint
|
|
|
|
| |
srcspan
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With this patch, :stepover can effectively appear to step over recursive calls and
calls to locally bound functions (in a where clause).
However, when we run out of ticks in the current expression,
the illusion vanishes and laziness brings us to the body of the last function
we "stepped over".
This is not desired at all, it is potentially very confusing.
As a countermeasure, when this happens :stepover emits a warning
"Warning: no more breakpoints in this function body, switching to :step"
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With this patch, :stepover can effectively appear to step over recursive calls and
calls to locally bound functions (in a where clause).
However, when we run out of ticks in the current expression,
the illusion vanishes and laziness brings us to the body of the last function
we "stepped over".
This is not desired at all, it is potentially very confusing.
As a countermeasure, when this happens :stepover emits a warning
"Warning: no more breakpoints in this function body, switching to :step"
|
| |
|
|
|
|
|
|
| |
together with src locs
Purely for convenience and user friendliness
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Step from statement to statement without leaving the block.
Tries to do the sensible thing when used on expressions.
The idea is to:
1 - Step to the next breakpoint and examine the srcloc
2 - If it is contained in the same statement block as we were,
then stop and give control to the user,
else continue to the next breakpoint
3 - Repeat from 1. If we reach the end of the statement block,
i.e. no more ticks in this expression after the current one,
then step normally.
Replace statement block with 'declaration block' (of an expression) in the
pseudo algo. above.
Let's see how well this idea works in practice...
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
unqualified
Trac #1581 was doing too much filtering; it even filtered out intances
defined in this very module! The new rule shows more instances, but
hopefully not to many.
Furthermore I have moved the filtering out of TcRnDriver (where it does
not belong) to InteractiveEval. And I've added a note to the documentation.
|
|
|
|
|
|
|
|
|
|
| |
With this patch, ghci runs rtti (bounded in the term treewith a max. depth of 10)
automatically after evaluating any expression in the interactive env.
In addition, a rtti step is performed on the local bindings in a breakpoint,
before returning control to the user
Let's see how well this works in practice
|
|
|
|
| |
This does a better job of showing that obtainTerm does not alter the Session
|
|
|
|
|
|
| |
Reset the exception flag before re-throwing the exception unless it
was "Interrupted". This avoids needing the double :continue for
ordinary exceptions, but still lets us break on ^C.
|
|
|
|
| |
This gives us a chance to catch asynchronous exceptions (e.g. ^C) and break.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
When -fbreak-on-exception is set, an exception will cause GHCi to
suspend the current computation and return to the prompt, where the
history of the current evaluation can be inspected (if we are in
:trace). This isn't on by default, because the behaviour could be
confusing: for example, ^C will cause a breakpoint. It can be very
useful for finding the cause of a "head []" or a "fromJust Nothing",
though.
|
| |
|
|
|
|
| |
This has been a long-standing ToDo.
|
| |
|
|
|
|
|
| |
Otherwise :print only works for local identifiers, not global ones.
In fact it was silently failing, so I fixed that too.
|
|
|
|
|
|
| |
This means we can avoid some StablePtrs, and also catch cases where
the AP_STACK has been evaluated (this can happen with :history, see
the hist001 test).
|
|
|
|
|
|
|
|
| |
The debugger can now log each step of the evaluation without actually
stopping, keeping a history of the recent steps (currently 50). When
a (real) breakpoint is hit, you can examine previous steps in the
history (and their free variables) using the :history, :back and
:forward commands.
|
|
The stack of breakpoint resume contexts is now part of the
InteractiveContext and managed by the GHC API. This prevents misuse
of the resume context by the client (e.g. resuming a breakpoint that
isn't the topmost, which would lead to a confused IC at the least).
I changed the TypeEnv in the IC to a [Id]. It only contained Ids
anyway, and this allows us to have shadowing, which removes an ugly
and annoying restriction.
The parts of the GHC API which deal with interactive evaluation are
now in a module of their own, InteractiveEval.
|