| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This speeds up the debugger quite a bit, we're now only about 30%
slower than ordinary GHCi, and still adding breakpoints to every
sub-expression. Also we now get to see the free variables in
recursive bindings, which wasn't working properly before.
|
|
|
|
| |
so completion can now complete names of local bindings
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Stopped at ../Test3.hs:(1,0)-(2,30)
_result :: [a]
[../Test3.hs:(1,0)-(2,30)] *Main> _result
<interactive>:1:0:
Ambiguous type variable `a' in the constraint:
`Show a' arising from a use of `print' at <interactive>:1:0-6
Cannot resolve unkonwn runtime types: a
Use :print or :force to determine these types
|
|
|
|
| |
reconstruction
|
|
|
|
|
| |
For more details, see test print019
|
| |
|
| |
|
|
|
|
|
| |
Also share the code that extends the InteractiveContext between
tcRnStmt and GHC.extendEnvironment.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Strictly speaking most of pprintClosureCommand should be exported by
the GHC API, but this is a step in the right direction.
|
|
|
|
|
|
|
|
| |
Now, the type checker won't attempt to generalise over the skolem
variables in the interactive bindings. If we end up trying to show
one of these types, there will be an unresolved predicate 'Show t'
which causes a type error (albeit a strange one, I'll fix that
later).
|
|
|
|
| |
'_ti' in :print
|
|
|
|
| |
interactive environment
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously we relied on the names of the Ids attached to a tick being
the same as the names of the original variables in the source code.
Sometimes this worked, sometimes it didn't because the simplifier
would inline away the Id. So now we do this properly and retain the
original OccNames from the source code for each breakpoint, and use
these to construct the new Ids when we stop.
Doing this involved moving the tracking of in-scope variables from the
desugarer to the coverage pass.
|
|
|
|
|
|
| |
Instead, we keep the original tyvars.
The plan is to exploit type relationships among closures to recover more types.
|
| |
|
| |
|
|
|
|
|
| |
If you got darcs by SSH without specifying a username then the script
would break.
|
| |
|
|
|
|
|
|
|
|
| |
- Type synonym instances are turned into representation synonym tycons
- They are entered into the pool of family instances (FamInst environments)
in the same way as data/newtype instances
- Still missing is writing the parent tycon information into ifaces and
various well-formedness checks.
|
|
|
|
|
|
|
|
| |
Users often trip up on the Dreaded Monomorphism Restriction. This
warning flag tells you when the MR springs into action.
Currently it's on by default, but we could change that.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
WARNING: this patch changes interface-file formats slightly
you will need to recompile your libraries
Duncan Coutts wanted to export a function that has a NOINLNE pragma
in a local let-defintion. This works fine within a module, but was
not surviving across the interface-file serialisation.
http://www.haskell.org/pipermail/glasgow-haskell-users/2007-March/012171.html
Regardless of whether or not he's doing something sensible, it seems
reasonable to try to retain local-binder IdInfo across interface files.
This initial patch just retains inline-pragma info, on the grounds that
other IdInfo can be re-inferred at the inline site.
Interface files get a tiny bit bigger, but it seesm slight.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The ticky StgEntCounter structure was trying to be clever by using a
fixed-width 32-bit field for the registeredp value. But the code generators
are not up to handling structures packed tightly like this (on a 64-bit
architecture); result seg-fault on 64-bit.
Really there should be some complaint from the code generators, not simply
a seg fault.
Anyway I switched to using native words for StgEntCounter fields, and
now at least it works.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Merge to STABLE branch
This bug was discovered by Nicolas Frisby. It's an egregious missing guard
in boxySplitTyConApp.
Test is tcfail180
|
|
|
|
| |
should fix recent GHCi problems in the HEAD
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
nominolo@gmail.com pointed out (Trac #1204) that indexed data types
aren't quite right. I investigated and found that the wrapper
functions for indexed data types, generated in MkId, are really very
confusing. In particular, we'd like these combinations to work
newtype + indexed data type
GADT + indexted data type
The wrapper situation gets a bit complicated!
I did a bit of refactoring, and improved matters, I think. I am not
certain that I have gotten it right yet, but I think it's better.
I'm committing it now becuase it's been on my non-backed-up laptop for
a month and I want to get it into the repo. I don't think I've broken
anything, but I don't regard it as 'done'.
|
|
|
|
|
|
|
|
|
| |
MERGE TO STABLE
I forgot to include this in the previous patch and Darcs
crashes if I try 'amend-record' or 'unrecord' because I
have a partial repo. Sigh.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MERGE TO STABLE
This patch fixes Trac #1287.
The problem is described in Note [Unused spec binders] in DsBinds.
At the same time I realised that the error messages in DsBinds.dsPrag
were being given the location of the *binding* not the *pragma*.
So I've fixed that too.
|
| |
|
|
|
|
|
|
|
| |
MERGE TO STABLE
Incidentally, this flag should probably be renamed -dppr-user-depth
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MERGE TO STABLE
The "user style" in Outputable allows us to elide large expressions
when printing HsSyn, printing "..." instead. This is done by calling
Outputable.pprDeeper.
But there was no mechanism for trimming very long lists, which
occur when using do-notation or explicit lists. This patch fixes
the problem, by adding Outputable.pprDeeperList.
I also made some of the pretty-printing in HsExpr rather more
vigorous about increasing the depth; in particular, pprParendExpr.
This should make debug prints shorter.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The BuiltIn rule for GHC.Base.inline wasn't working for two reasons:
a) inlineIdName wasn't in basicKnownKeyNames
b) The rule function wasn't taking into account the type argument
Thanks to Brian Alliet for spotting this bug.
|
|
|
|
|
|
| |
I did quite a bit of clean up in the Term pretty printer code too.
Support for infix constructors is still on the TODO list
|
| |
|
| |
|