simonpj@microsoft.com [Wed, 2 May 2007 10:28:11 +0000 (10:28 +0000)]
Fixes to data type families
- Fix two distinct bugs, one in MkId.mkDataConIds, one in DataCon.mkDataCon
- Add more comments
- Add a little assertion checking in TyCon
Type-family tests now work.
simonpj@microsoft.com [Fri, 27 Apr 2007 15:41:31 +0000 (15:41 +0000)]
Fix egregious typo in TcUnify
Tom S found this bug by inspection; we've never seen it
fail in the wild, but it was obviosly Utterly Wrong
simonpj@microsoft.com [Wed, 25 Apr 2007 16:13:06 +0000 (16:13 +0000)]
Typo in comments
simonpj@microsoft.com [Wed, 25 Apr 2007 16:12:44 +0000 (16:12 +0000)]
Fix misleading debug trace
simonpj@microsoft.com [Wed, 25 Apr 2007 14:15:30 +0000 (14:15 +0000)]
Improve hashing of expressions for CSE (reduces warnings about extendCSEnv)
Simon Marlow [Wed, 2 May 2007 08:29:02 +0000 (08:29 +0000)]
remove unused primitives.xml
Tim Chevalier [Wed, 2 May 2007 01:19:56 +0000 (01:19 +0000)]
Fix grammar error in docs (as per Trac 1319)
andy@galois.com [Tue, 1 May 2007 15:57:29 +0000 (15:57 +0000)]
Stopping tick boxes for being removed round calls to error.
Ian Lynagh [Tue, 1 May 2007 14:25:43 +0000 (14:25 +0000)]
-fwarn-monomorphism-restriction is now off by default
Pepe Iborra [Tue, 1 May 2007 10:11:05 +0000 (10:11 +0000)]
Add new skolem tyvars to the InteractiveContext after type reconstruction
This was being done already for each binding added by :print,
but :sprint does not add any new binding, so we take care of it
separately
Simon Marlow [Tue, 1 May 2007 08:22:24 +0000 (08:22 +0000)]
document the current behaviour of -Wall, see #1292
Simon Marlow [Mon, 30 Apr 2007 15:06:45 +0000 (15:06 +0000)]
don't forget to enable ^C after a :cont or :step
Simon Marlow [Mon, 30 Apr 2007 10:57:22 +0000 (10:57 +0000)]
tidyup comments and fix a few warnings
andy@galois.com [Mon, 30 Apr 2007 22:59:15 +0000 (22:59 +0000)]
Changing internal data structures used by Hpc
- .tix files are now a list of MixModule, which contain a hash of the contents of the .mix file.
- .mix files now have (the same) hash number.
This changes allow different binaries that use the same module compiled in the same way
to share coverage information.
Pepe Iborra [Mon, 30 Apr 2007 18:45:22 +0000 (18:45 +0000)]
Remove skolem tyvars from the InteractiveContext once they have been instantiated by :print
Pepe Iborra [Mon, 30 Apr 2007 17:12:16 +0000 (17:12 +0000)]
Restore tidying up of tyvars in :print
It wasn't a good idea to disable it
Ian Lynagh [Mon, 30 Apr 2007 15:17:37 +0000 (15:17 +0000)]
Make GHCi's banner fit in a standard 80-column terminal
Ian Lynagh [Mon, 30 Apr 2007 11:35:19 +0000 (11:35 +0000)]
Make boot handle getting the libraries
Ian Lynagh [Mon, 30 Apr 2007 11:15:40 +0000 (11:15 +0000)]
Handle unbuildable packages differently
Now we require that configure fails, and use our own signalling rather
than Cabal's buildable field.
Ian Lynagh [Mon, 30 Apr 2007 10:25:53 +0000 (10:25 +0000)]
Set rts/gmp/configure executable when booting
Ian Lynagh [Mon, 30 Apr 2007 10:16:12 +0000 (10:16 +0000)]
Look for -q in the darcs flags as well as the darcs-all flags
Ian Lynagh [Sun, 29 Apr 2007 17:27:34 +0000 (17:27 +0000)]
Put the darcs-all command parsing into main() so it can use @_
Ian Lynagh [Sun, 29 Apr 2007 14:00:04 +0000 (14:00 +0000)]
Make darcs-all a perl script
This fixes a problem where patches altering the darcs-all script break
on Windows as the file is open. The script is now also slightly nicer,
on balance.
Ian Lynagh [Sun, 29 Apr 2007 12:06:25 +0000 (12:06 +0000)]
Don't enable the monomorphism warning by default
Simon Marlow [Fri, 27 Apr 2007 15:39:48 +0000 (15:39 +0000)]
outside of runStmt, if a breakpoint is hit then just print a message
Simon Marlow [Fri, 27 Apr 2007 15:38:52 +0000 (15:38 +0000)]
give the statements under evaluation in the ":show context" output
Simon Marlow [Fri, 27 Apr 2007 14:45:54 +0000 (14:45 +0000)]
break by function: make sure we get the correct file
Sometimes parts of a source file come from different places due to
preprocessing, and the lines can overlap.
Simon Marlow [Fri, 27 Apr 2007 14:20:36 +0000 (14:20 +0000)]
Breakpoints: don't attempt to bind variables with unboxed types
Simon Marlow [Fri, 27 Apr 2007 14:20:13 +0000 (14:20 +0000)]
We shouldn't let-bind expressions with unlifted type
Now I can single step through Happy-generated parsers
Simon Marlow [Fri, 27 Apr 2007 12:26:17 +0000 (12:26 +0000)]
add missing @ (see bug #1302)
Simon Marlow [Fri, 27 Apr 2007 12:12:03 +0000 (12:12 +0000)]
don't forget to clean the .bat files
See bug #1295
Simon Marlow [Fri, 27 Apr 2007 12:01:13 +0000 (12:01 +0000)]
Basic heap profile support without -prof
Now that constructor info tables contain the name of the constructor,
we can generate useful heap profiles without requiring the whole
program and libraries to be compiled with -prof. So now, "+RTS -hT"
generates a heap profile for any program, dividing the profile by
constructor. It wouldn't be hard to add support for grouping
constructors by module, or to restrict the profile to certain
constructors/modules/packages.
This means that for the first time we can get heap profiles for GHCi,
which was previously impossible because the byte-code
interpreter and linker don't work with -prof.
Simon Marlow [Fri, 27 Apr 2007 11:56:35 +0000 (11:56 +0000)]
add the constructor name field to the info table for RTS constructors
Simon Marlow [Thu, 26 Apr 2007 21:31:00 +0000 (21:31 +0000)]
restore the correct Unicode ellipsis character
It looks like this was accidentally replaced with '?' in the patch
"HsSyn clean up for indexed types". (see bug #1294)
Tim Chevalier [Thu, 26 Apr 2007 19:18:57 +0000 (19:18 +0000)]
Avoid segfault when ticky file argument is stderr
If you compiled a program with -ticky and ran it with:
./foo +RTS -rstderr -RTS
the result would be a segfault. This was because the RTS interprets stderr to
mean "use debugBelch to print out messages," and sets the ticky file pointer
to NULL as a result, but PrintTickyInfo (the function in Ticky.c that prints
out the ticky report) wasn't checking for NULL.
I changed PrintTickyInfo to check whether the ticky file pointer is NULL and
output to stderr if so.
Also removed an unused import from CodeOutput.lhs.
Pepe Iborra [Thu, 26 Apr 2007 16:35:40 +0000 (16:35 +0000)]
Dont tidy up tyvars after :print type reconstruction
I introduced a bug yesterday when I changed the way tidying up was performed.
As a result of tidying, cvObtainTerm could be returning types
with regular tyvars inside, which never should.
But actually, it's better if we do not do the tidying up, in order to
keep the tyvar names from the environment.
New names will be introduced only when an existential is found, which
is not so common. In this case the user will see a funny name.
Is that really an issue?
Simon Marlow [Thu, 26 Apr 2007 15:16:15 +0000 (15:16 +0000)]
fix scoping issues with mdo (test dynbrk004)
Pepe Iborra [Thu, 26 Apr 2007 10:30:51 +0000 (10:30 +0000)]
Formatting and minor changes in the ghci debugger section
Pepe Iborra [Thu, 26 Apr 2007 10:30:14 +0000 (10:30 +0000)]
Update an example on the ghci debugger section
Pepe Iborra [Thu, 26 Apr 2007 10:18:53 +0000 (10:18 +0000)]
We don't have -fdebugging anymore, and fine tuning is not really necessary now
Pepe Iborra [Thu, 26 Apr 2007 09:37:19 +0000 (09:37 +0000)]
New section on debugging lambdas in the ghci user guide
Pepe Iborra [Thu, 26 Apr 2007 09:23:42 +0000 (09:23 +0000)]
Unbreak the users_guide
Pepe Iborra [Thu, 26 Apr 2007 09:11:09 +0000 (09:11 +0000)]
:force is not unsupported anymore
Simon Marlow [Thu, 26 Apr 2007 10:11:27 +0000 (10:11 +0000)]
Attach free variables rather than in-scope variables to breakpoints
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.
Simon Marlow [Thu, 26 Apr 2007 08:39:02 +0000 (08:39 +0000)]
getRdrNamesInScope: return interactively-bound names too
so completion can now complete names of local bindings
Simon Marlow [Thu, 26 Apr 2007 08:37:13 +0000 (08:37 +0000)]
unused import
Simon Marlow [Thu, 26 Apr 2007 08:36:57 +0000 (08:36 +0000)]
Give a better error message when we try to print a value of unknown type
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
Pepe Iborra [Wed, 25 Apr 2007 19:40:48 +0000 (19:40 +0000)]
Drop newtypes before computing the refinement substitution after :print type reconstruction
Pepe Iborra [Wed, 25 Apr 2007 17:02:10 +0000 (17:02 +0000)]
fix :print reconstructing too many types in environment bindings
For more details, see test print019
Pepe Iborra [Wed, 25 Apr 2007 16:21:20 +0000 (16:21 +0000)]
Fix some corner cases in :print after the recent changes
Pepe Iborra [Wed, 25 Apr 2007 09:58:29 +0000 (09:58 +0000)]
Update the users_guide regarding list notation in :print
Simon Marlow [Wed, 25 Apr 2007 15:42:35 +0000 (15:42 +0000)]
Tidy types of free vars at a breakpoint
Also share the code that extends the InteractiveContext between
tcRnStmt and GHC.extendEnvironment.
Simon Marlow [Wed, 25 Apr 2007 14:52:07 +0000 (14:52 +0000)]
the Unknown types aren't required now
Simon Marlow [Wed, 25 Apr 2007 14:50:25 +0000 (14:50 +0000)]
remember the type of _result
Simon Marlow [Wed, 25 Apr 2007 14:29:45 +0000 (14:29 +0000)]
force APs, AP_STACKs and ThunkSelectors in :force
Simon Marlow [Wed, 25 Apr 2007 14:29:14 +0000 (14:29 +0000)]
use Any as the HValue type, this should be a bit safer than forall a.a
Simon Marlow [Wed, 25 Apr 2007 13:24:55 +0000 (13:24 +0000)]
unused exports
Simon Marlow [Wed, 25 Apr 2007 13:24:33 +0000 (13:24 +0000)]
unused import
Simon Marlow [Wed, 25 Apr 2007 13:17:26 +0000 (13:17 +0000)]
refactor: move pprintClosureCommand out of the GHCi monad
Strictly speaking most of pprintClosureCommand should be exported by
the GHC API, but this is a step in the right direction.
Simon Marlow [Wed, 25 Apr 2007 13:03:32 +0000 (13:03 +0000)]
Keep track of free type variables in the interactive bindings
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).
Pepe Iborra [Tue, 24 Apr 2007 17:04:46 +0000 (17:04 +0000)]
Some tyvars were being introduced in the environment via the thunk bindings '_ti' in :print
Pepe Iborra [Tue, 24 Apr 2007 11:19:26 +0000 (11:19 +0000)]
When a type is refined after :print, propagate the substitution to all the interactive environment
Simon Marlow [Tue, 24 Apr 2007 14:18:47 +0000 (14:18 +0000)]
convert type variables to TcTyVars, otherwise the typechecker gets confused
Simon Marlow [Tue, 24 Apr 2007 14:18:06 +0000 (14:18 +0000)]
DebuggerTys doesn't exist any more
Simon Marlow [Tue, 24 Apr 2007 11:32:02 +0000 (11:32 +0000)]
Breakpoints: get the names of the free variables right
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.
Pepe Iborra [Tue, 24 Apr 2007 10:23:13 +0000 (10:23 +0000)]
We no longer instantiate tyvars to Unknown types in the :print mechanism
Instead, we keep the original tyvars.
The plan is to exploit type relationships among closures to recover more types.
Simon Marlow [Tue, 24 Apr 2007 11:14:18 +0000 (11:14 +0000)]
remove unused imports
Simon Marlow [Tue, 24 Apr 2007 10:31:25 +0000 (10:31 +0000)]
add comments
Ian Lynagh [Wed, 25 Apr 2007 12:46:20 +0000 (12:46 +0000)]
Tweak darcs-all script
If you got darcs by SSH without specifying a username then the script
would break.
Ian Lynagh [Wed, 25 Apr 2007 11:10:39 +0000 (11:10 +0000)]
Only haddock a package if it is buildable; spotted by Claus Reinke
Manuel M T Chakravarty [Wed, 25 Apr 2007 09:16:46 +0000 (09:16 +0000)]
Generating synonym instance representation tycons
- 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.
simonpj@microsoft.com [Wed, 25 Apr 2007 10:18:32 +0000 (10:18 +0000)]
Add -fwarn-monomorphism-restriction (on by default) to warn when the MR is used
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.
simonpj@microsoft.com [Wed, 25 Apr 2007 07:49:24 +0000 (07:49 +0000)]
Retain inline-pragma information on unfoldings in interface files
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.
simonpj@microsoft.com [Wed, 25 Apr 2007 07:48:42 +0000 (07:48 +0000)]
Fix comments about data constructors
simonpj@microsoft.com [Wed, 25 Apr 2007 07:47:19 +0000 (07:47 +0000)]
Give the inferred type when warning of a missing type-signature (Trac #1256)
simonpj@microsoft.com [Tue, 24 Apr 2007 13:30:11 +0000 (13:30 +0000)]
Make ticky work, at least partly, on 64-bit machines
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.
simonpj@microsoft.com [Tue, 24 Apr 2007 13:29:18 +0000 (13:29 +0000)]
Add WAY_debug_t_NAME and WAY_debug_t_HC_OPTS
simonpj@microsoft.com [Tue, 24 Apr 2007 12:43:34 +0000 (12:43 +0000)]
Fix bug in boxySplitTyConApp
Merge to STABLE branch
This bug was discovered by Nicolas Frisby. It's an egregious missing guard
in boxySplitTyConApp.
Test is tcfail180
Simon Marlow [Mon, 23 Apr 2007 13:05:45 +0000 (13:05 +0000)]
revert previous fix until I can find out why it was wrong
should fix recent GHCi problems in the HEAD
simonpj@microsoft.com [Sun, 22 Apr 2007 21:35:03 +0000 (21:35 +0000)]
Fixes to datacon wrappers for indexed data types
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'.
simonpj@microsoft.com [Sun, 22 Apr 2007 21:32:23 +0000 (21:32 +0000)]
Part 2 of: Fix corner case of useless constraint in SPECIALISE pragma
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.
simonpj@microsoft.com [Sun, 22 Apr 2007 21:29:11 +0000 (21:29 +0000)]
Fix corner case of useless constraint in SPECIALISE pragma
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.
simonpj@microsoft.com [Sun, 22 Apr 2007 21:19:37 +0000 (21:19 +0000)]
Warning police
simonpj@microsoft.com [Sun, 22 Apr 2007 21:14:42 +0000 (21:14 +0000)]
Put the default value for -dppr-user-length in the manual
MERGE TO STABLE
Incidentally, this flag should probably be renamed -dppr-user-depth
simonpj@microsoft.com [Sun, 22 Apr 2007 21:10:49 +0000 (21:10 +0000)]
Improve depth-cutoff for printing HsSyn in error messages
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.
simonpj@microsoft.com [Sun, 22 Apr 2007 21:06:14 +0000 (21:06 +0000)]
Comments only (concerning rewrite rules)
simonpj@microsoft.com [Fri, 20 Apr 2007 21:10:23 +0000 (21:10 +0000)]
Fix the GHC.Base.inline builtin rule
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.
Pepe Iborra [Fri, 20 Apr 2007 17:02:06 +0000 (17:02 +0000)]
Haskell list syntax for the :print command
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
Pepe Iborra [Fri, 20 Apr 2007 16:18:28 +0000 (16:18 +0000)]
Outputable.cparen
Pepe Iborra [Fri, 20 Apr 2007 16:15:31 +0000 (16:15 +0000)]
wibbles
Simon Marlow [Fri, 20 Apr 2007 14:53:54 +0000 (14:53 +0000)]
breakpoints: fix the in-scope set for 'where' clauses
Simon Marlow [Fri, 20 Apr 2007 10:55:48 +0000 (10:55 +0000)]
remove unused imports
Simon Marlow [Fri, 20 Apr 2007 10:35:23 +0000 (10:35 +0000)]
remove a ToDo
Simon Marlow [Fri, 20 Apr 2007 10:35:16 +0000 (10:35 +0000)]
new commnad :abandon, discards the current computation (used to be :break stop)
Simon Marlow [Fri, 20 Apr 2007 10:25:36 +0000 (10:25 +0000)]
split off :ctags and :etags support into a separate file
Simon Marlow [Fri, 20 Apr 2007 10:25:11 +0000 (10:25 +0000)]
export SrcSpan & utils from GHC
Simon Marlow [Thu, 19 Apr 2007 15:20:13 +0000 (15:20 +0000)]
The prompt now shows the current breakpoint
when stopped at a breakpoint we now get:
[Test3.hs:2:17-30] *Main>
when there is a stack of breakpoints, we get:
... [Test3.hs:2:17-30] *Main>
showing just the topmost one. Better suggestions are welcome, but
this seems not too bad to me.
Simon Marlow [Thu, 19 Apr 2007 14:40:05 +0000 (14:40 +0000)]
fix padding calculation in listAround
Simon Marlow [Thu, 19 Apr 2007 14:39:54 +0000 (14:39 +0000)]
improve the heuristics to pick the best breakpoint on a given line
Simon Marlow [Thu, 19 Apr 2007 14:23:58 +0000 (14:23 +0000)]
More debugger improvements
":list" shows the code around the current breakpoint. Also it
highlights the current expression in bold (the bold/unbold codes are
hardwired to the ANSI codes right now, I'll provide a way to change
them later).
":set stop <cmd>" causes <cmd> to be run each time we stop at a
breakpoint. In particular, ":set stop :list" is particularly useful.