Norman Ramsey [Sat, 16 Sep 2006 23:27:55 +0000 (23:27 +0000)]
cover more cases; take GHC options on command line
Bit of a dog's breakfast here:
* generate tags for more cases in the syntax
* accept -package ghc and other args on command line
* scrub away old code for snaffling thru text
Norman Ramsey [Fri, 15 Sep 2006 23:50:33 +0000 (23:50 +0000)]
initial, very incomplete tags generator
The ultimate goal is to replace hasktags with
a tags generator based on GHC-as-a-library.
This file is a very incomplete first cut.
simonpj@microsoft.com [Mon, 5 Nov 2007 22:08:07 +0000 (22:08 +0000)]
Inline implication constraints
This patch fixes Trac #1643, where Lennart found that GHC was generating
code with unnecessary dictionaries. The reason was that we were getting
an implication constraint floated out of an INLINE (actually an instance
decl), and the implication constraint therefore wasn't inlined even
though it was used only once (but inside the INLINE). Thus we were
getting:
ic = \d -> <stuff>
foo = _inline_me_ (...ic...)
Then 'foo' gets inlined in lots of places, but 'ic' now looks a bit
big.
But implication constraints should *always* be inlined; they are just
artefacts of the constraint simplifier.
This patch solves the problem, by adding a WpInline form to the HsWrap
type.
simonpj@microsoft.com [Mon, 5 Nov 2007 22:07:44 +0000 (22:07 +0000)]
Comment warning about transparent newtypes
simonpj@microsoft.com [Mon, 5 Nov 2007 22:06:27 +0000 (22:06 +0000)]
Wibble to earlier case-merge fix
This fix avoids a bogus WARN in SimplEnv.substId
simonpj@microsoft.com [Mon, 5 Nov 2007 22:05:35 +0000 (22:05 +0000)]
Improve pretty-printing of Core slightly (avoid indenting let bodies)
simonpj@microsoft.com [Mon, 5 Nov 2007 16:13:14 +0000 (16:13 +0000)]
Fix an old but subtle bug in the Simplifier
I got a Core Lint failure when compiling System.Win32.Info in the
Win32 package. It was very delicate: adding or removing a function
definition elsewhere in the module (unrelated to the error) made the
error go away.
Happily, I found it. In SimplUtils.prepareDefault I was comparing an
InId with an OutId. We were getting a spurious hit, and hence doing
a bogus CaseMerge.
This bug has been lurking ever since I re-factored the way that case
expressions were simplified, about 6 months ago!
simonpj@microsoft.com [Mon, 5 Nov 2007 16:12:17 +0000 (16:12 +0000)]
Make CoreLint give a more informative error message
simonpj@microsoft.com [Mon, 5 Nov 2007 14:53:40 +0000 (14:53 +0000)]
Comments about TH staging
Aaron Tomb [Mon, 29 Oct 2007 20:26:36 +0000 (20:26 +0000)]
Fix freeHaskellFunctionPtr for Darwin/i386
Ian Lynagh [Sat, 3 Nov 2007 18:08:03 +0000 (18:08 +0000)]
MERGED: Set interfacedir (using $topdir, not $httptopdir)
Mon Oct 29 10:48:25 PDT 2007 Ian Lynagh <igloo@earth.li>
Ian Lynagh [Mon, 29 Oct 2007 16:11:30 +0000 (16:11 +0000)]
Teach ghc-pkg about $httptopdir
Ian Lynagh [Sat, 3 Nov 2007 18:02:59 +0000 (18:02 +0000)]
MERGED: installPackage needs to treat $httptopdir the same as $topdir
Sun Oct 28 06:45:34 PDT 2007 Ian Lynagh <igloo@earth.li>
Ian Lynagh [Sat, 3 Nov 2007 18:00:23 +0000 (18:00 +0000)]
MERGED: Define and use $httptopdir for the haddock docs locations
Sun Oct 28 05:35:52 PDT 2007 Ian Lynagh <igloo@earth.li>
Ian Lynagh [Sun, 28 Oct 2007 13:17:52 +0000 (13:17 +0000)]
We need to copy .buildinfo files into the bindists
Simon Marlow [Fri, 2 Nov 2007 15:59:54 +0000 (15:59 +0000)]
(>>>) now comes from GHC.Desugar
simonpj@microsoft.com [Fri, 2 Nov 2007 13:01:15 +0000 (13:01 +0000)]
Refactor error recovery slightly
Mostly this patch is refacoring, but it also avoids post-tc zonking if
the typechecker found errors. This is good because otherwise with
DEBUG you can get the "Inventing strangely-kinded TyCon" warning.
simonpj@microsoft.com [Fri, 2 Nov 2007 13:00:43 +0000 (13:00 +0000)]
Avoid Haddock bug #1821
simonpj@microsoft.com [Thu, 1 Nov 2007 18:03:02 +0000 (18:03 +0000)]
Update error message to mention -XPatternSignatures instead of -fglasgow-exts
simonpj@microsoft.com [Thu, 1 Nov 2007 17:50:22 +0000 (17:50 +0000)]
Rejig the error messages a bit; fixes a minor bug
The type checker was only reporting the first message if an equality
failed to match. This patch does a bit of refactoring and fixes the
bug, which was in the bogus use of eqInstMisMatch
in tcSimplify.report_no_instances.b
This is really a bug in 6.8 too, so this would be good to merge across
to the 6.8 branch.
David Waern [Thu, 1 Nov 2007 13:17:57 +0000 (13:17 +0000)]
Refactor Haddock options
This patch renames the DOC_OPTIONS pragma to OPTIONS_HADDOCK. It also
adds "-- # ..."-style Haddock option pragmas, for compatibility with
code that use them.
Another change is that both of these two pragmas behave like
OPTIONS_GHC, i.e. they are only allowed at the top of the module, they
are ignored everywhere else and they are stored in the dynflags. There is
no longer any Haddock options in HsSyn.
Please merge this to the 6.8.2 branch when 6.8.1 is out, if appropriate.
Simon Marlow [Wed, 31 Oct 2007 09:39:32 +0000 (09:39 +0000)]
clean ghci-inplace
Simon Marlow [Wed, 31 Oct 2007 09:39:23 +0000 (09:39 +0000)]
clean Haddock droppings
Manuel M T Chakravarty [Tue, 30 Oct 2007 13:30:03 +0000 (13:30 +0000)]
Fix warning in OSMem for darwin
simonpj@microsoft.com [Tue, 30 Oct 2007 11:38:57 +0000 (11:38 +0000)]
FIX BUILD: a glitch in the new rules and inlining stuff
Don't re-add the worker info to a binder until completeBind. It's not
needed in its own RHS, and it may be replaced, via the substitution
following postInlineUnconditionally.
(Fixes build of the stage2 compiler which fell over when Coercion.lhs
was being compiled.)
simonpj@microsoft.com [Mon, 29 Oct 2007 17:06:20 +0000 (17:06 +0000)]
Fix LiberateCase
Merge to STABLE please
Liberate case was being far too gung-ho about what to specialise. This
bug only showed up when a recursive function 'f' has a nested recursive
function 'g', where 'g' calls 'f' (as well as recursively calling 'g').
This exact situation happens in GHC/IO.writeLines.
This patch puts things right; see Note [When to specialise]. Result:
much less code bloat.
simonpj@microsoft.com [Mon, 29 Oct 2007 16:26:37 +0000 (16:26 +0000)]
Improve error-message output slightly
simonpj@microsoft.com [Mon, 29 Oct 2007 16:25:05 +0000 (16:25 +0000)]
Improve documentation of orphan instances (thanks to Adrian Hey)
Please push to stable branch
Simon
Simon Marlow [Mon, 29 Oct 2007 12:07:32 +0000 (12:07 +0000)]
fix installation of haddock.css and friends
simonpj@microsoft.com [Sat, 27 Oct 2007 15:33:30 +0000 (15:33 +0000)]
In a pattern binding, a type sig in the pattern cannot bind a type variable
In a pattern binding with a pattern type signature, such as
(Just (x::a)) = e
the pattern type signature cannot bind type variables. Hence
'a' must be in scope already for the above example to be legal.
This has been the situation for some time, but Dan changed it when
adding view patterns. This one-line change restores the old behaviour.
simonpj@microsoft.com [Mon, 29 Oct 2007 11:10:56 +0000 (11:10 +0000)]
Substantial improvement to the interaction of RULES and inlining
(Merge to 6.8 branch after testing.)
There were a number of delicate interactions between RULEs and inlining
in GHC 6.6. I've wanted to fix this for a long time, and some perf
problems in the 6.8 release candidate finally forced me over the edge!
The issues are documented extensively in OccurAnal, Note [Loop breaking
and RULES], and I won't duplicate them here. (Many of the extra lines in
OccurAnal are comments!)
This patch resolves Trac bugs #1709, #1794, #1763, I believe.
simonpj@microsoft.com [Fri, 26 Oct 2007 15:02:24 +0000 (15:02 +0000)]
Add newline in debug print
simonpj@microsoft.com [Wed, 24 Oct 2007 13:48:28 +0000 (13:48 +0000)]
Explicit pattern match in default case of addTickLHsBind
simonpj@microsoft.com [Wed, 24 Oct 2007 13:47:50 +0000 (13:47 +0000)]
Generalise the types of mk_FunBind, mk_easy_FunBind, mkVarBind
Ian Lynagh [Sat, 27 Oct 2007 21:05:26 +0000 (21:05 +0000)]
Fix the build with GHC < 6.4 (foldl1' didn't exist)
Ian Lynagh [Sat, 27 Oct 2007 21:05:26 +0000 (21:05 +0000)]
Fix the build with GHC < 6.4 (foldl1' didn't exist)
Ian Lynagh [Sat, 27 Oct 2007 20:32:20 +0000 (20:32 +0000)]
MERGED: We need to install-docs when making the Windows bindist
Ian Lynagh [Sat, 27 Oct 2007 14:29:14 +0000 (14:29 +0000)]
We need to set _way=* in rts/ both when making and installing bindists
This is a hack, but it means we get libHSrts*.a etc rather than just
libHSrts.a.
Josef Svenningsson [Sun, 7 Oct 2007 21:38:58 +0000 (21:38 +0000)]
Fix a whole heap of speling errrs in the docs
Ian Lynagh [Sat, 27 Oct 2007 12:21:55 +0000 (12:21 +0000)]
Only build/install the man page if XSLTPROC is defined
Simon Marlow [Fri, 26 Oct 2007 12:24:56 +0000 (12:24 +0000)]
install the Cabal docs, and make them show up in a binary distribution
Simon Marlow [Fri, 26 Oct 2007 11:10:54 +0000 (11:10 +0000)]
cp => $(CP)
Simon Marlow [Fri, 26 Oct 2007 11:09:19 +0000 (11:09 +0000)]
get rid of the html subdirectory under share/doc/ghc/users_guide
simonpj@microsoft.com [Sat, 27 Oct 2007 15:54:59 +0000 (15:54 +0000)]
Make 'improvement' work properly in TcSimplify
(Please merge this, and the preceding
handful from me to the 6.8 branch.)
This patch fixes a serious problem in the type checker, whereby
TcSimplify was going into a loop because it thought improvement
had taken place, but actually the unificataion was actually deferred.
We thereby fix Trac #1781, #1783, #1795, and #1797!
In fixing this I found what a mess TcSimplify.reduceContext is!
We need to fix this.
The main idea is to replace the "improvement flag" in Avails with
a simpler and more direct test: have any of the mutable type variables
in the (zonked) 'given' or 'irred' constraints been filled in?
This test uses the new function TcMType.isFilledMetaTyVar; the test
itself is towards the end of reduceContext.
I fixed a variety of other infelicities too, and left some ToDos.
simonpj@microsoft.com [Sat, 27 Oct 2007 15:54:33 +0000 (15:54 +0000)]
An implication constraint can abstract over EqInsts
simonpj@microsoft.com [Sat, 27 Oct 2007 15:49:03 +0000 (15:49 +0000)]
In an AbsBinds, the 'dicts' can include EqInsts
An AbsBinds abstrats over evidence, and the evidence can be both
Dicts (class constraints, implicit parameters) and EqInsts (equality
constraints). So we need to
- use varType rather than idType
- use instToVar rather than instToId
- use zonkDictBndr rather than zonkIdBndr in zonking
It actually all worked before, but gave warnings.
simonpj@microsoft.com [Sat, 27 Oct 2007 15:47:02 +0000 (15:47 +0000)]
More notes
simonpj@microsoft.com [Sat, 27 Oct 2007 15:46:42 +0000 (15:46 +0000)]
Comments only
simonpj@microsoft.com [Sat, 27 Oct 2007 15:45:51 +0000 (15:45 +0000)]
Add anyM to IOEnv
simonpj@microsoft.com [Sat, 27 Oct 2007 10:02:20 +0000 (10:02 +0000)]
Add a note to NOTES
Tim Chevalier [Sat, 27 Oct 2007 10:05:30 +0000 (10:05 +0000)]
Make compileToCore return the module name and type environment along with bindings
compileToCore returned just a list of CoreBind, which isn't enough,
since to do anything with the resulting Core code, you probably also
want the type declarations. I left compileToCore as it is, but added a
function compileToCoreModule that returns a complete Core module (with
module name, type environment, and bindings). I'm not sure that
returning the type environment is the best way to represent the type
declarations for the given module, but I don't want to reinvent the
External Core wheel for this.
Simon Marlow [Thu, 25 Oct 2007 13:58:16 +0000 (13:58 +0000)]
binary-dist: Makefile-vars needs HADDOCK_DOCS=YES
Simon Marlow [Thu, 25 Oct 2007 15:22:45 +0000 (15:22 +0000)]
fix the links in the library documentation index
Simon Marlow [Thu, 25 Oct 2007 08:42:22 +0000 (08:42 +0000)]
default to installing runhaskell and hsc2hs again, but provide knobs to turn them off
andy@unsafeperformio.com [Thu, 25 Oct 2007 05:03:41 +0000 (05:03 +0000)]
Adding hpc documentation about sum and map, push to STABLE.
andy@unsafeperformio.com [Thu, 25 Oct 2007 04:54:56 +0000 (04:54 +0000)]
Fixing typo in runtime documentation for hpc, push to stable
Ian Lynagh [Wed, 24 Oct 2007 11:45:49 +0000 (11:45 +0000)]
Correct a comment
Ian Lynagh [Wed, 24 Oct 2007 12:06:33 +0000 (12:06 +0000)]
Fix ghc package in bindists; it wasn't adding the depenedency on readline
Ian Lynagh [Wed, 24 Oct 2007 11:42:19 +0000 (11:42 +0000)]
Fix installing the ghc package .hi files in a bindist
Ian Lynagh [Wed, 24 Oct 2007 11:29:14 +0000 (11:29 +0000)]
Build the manpage when building, not when installing
Ian Lynagh [Wed, 24 Oct 2007 00:41:55 +0000 (00:41 +0000)]
Hack to make sure we get all the RTS ways in bindists
Ian Lynagh [Tue, 23 Oct 2007 23:46:24 +0000 (23:46 +0000)]
Fix installing the documentation in the bindists
Ian Lynagh [Wed, 24 Oct 2007 14:28:28 +0000 (14:28 +0000)]
-ftype-families -> -XTypeFamilies
Simon Marlow [Wed, 24 Oct 2007 09:54:20 +0000 (09:54 +0000)]
FIX #1791: fail with out-of-heap when allocating more than the max heap size in one go
Normally the out-of-heap check is performed post-GC, but there are
cases where we can detect earlier that we definitely have exhausted
the heap size limit.
Simon Marlow [Tue, 23 Oct 2007 13:13:51 +0000 (13:13 +0000)]
Fix more warnings
Simon Marlow [Tue, 23 Oct 2007 08:22:33 +0000 (08:22 +0000)]
FIX BUILD (on 32-bit platforms): hs_hpc_module() type mismatch
Simon Marlow [Mon, 22 Oct 2007 13:33:37 +0000 (13:33 +0000)]
patch from #1782; fixes check-packages target on Solaris
Simon Marlow [Thu, 18 Oct 2007 12:52:20 +0000 (12:52 +0000)]
add PIC relocations for x86_64, and use a simpler hack in place of x86_64_high_symbol()
This is Wolfgang Thaller's patch sent to cvs-ghc recently, with extra
commentary by me. It turns out that this patch is not just a cleanup,
it is also necessary for GHCi to work on x86_64 with shared libraries,
because previously lookupSymbol() was creating jump-table entries for
all symbols looked up that resolved outside 2Gb, whereas Wolfgang's
version only generates jump-table entries for 32-bit symbol references
in object code that we load.
Simon Marlow [Wed, 17 Oct 2007 15:28:20 +0000 (15:28 +0000)]
fix creation of ghc-inplace for non-std ways
Simon Marlow [Tue, 16 Oct 2007 15:18:29 +0000 (15:18 +0000)]
remove an incorrect assertion
Simon Marlow [Fri, 19 Oct 2007 13:32:43 +0000 (13:32 +0000)]
second attempt to fix C compiler warnings with -fhpc
The hs_hpc_module() prototype in RtsExternal.h didn't match its usage:
we were passing StgWord-sized parameters but the prototype used C
ints. I think it accidentally worked because we only ever passed
constants that got promoted. The constants unfortunately were
sometimes negative, which caused the C compiler to emit warnings.
I suspect PprC.pprHexVal may be wrong to emit negative constants in
the generated C, but I'm not completely sure. Anyway, it's easy to
fix this in CgHpc, which is what I've done.
Manuel M T Chakravarty [Fri, 19 Oct 2007 11:56:53 +0000 (11:56 +0000)]
Zonk quantified tyvars with skolems
We used to zonk quantified type variables to regular TyVars. However, this
leads to problems. Consider this program from the regression test suite:
eval :: Int -> String -> String -> String
eval 0 root actual = evalRHS 0 root actual
evalRHS :: Int -> a
evalRHS 0 root actual = eval 0 root actual
It leads to the deferral of an equality
(String -> String -> String) ~ a
which is propagated up to the toplevel (see TcSimplify.tcSimplifyInferCheck).
In the meantime `a' is zonked and quantified to form `evalRHS's signature.
This has the *side effect* of also zonking the `a' in the deferred equality
(which at this point is being handed around wrapped in an implication
constraint).
Finally, the equality (with the zonked `a') will be handed back to the
simplifier by TcRnDriver.tcRnSrcDecls calling TcSimplify.tcSimplifyTop.
If we zonk `a' with a regular type variable, we will have this regular type
variable now floating around in the simplifier, which in many places assumes to
only see proper TcTyVars.
We can avoid this problem by zonking with a skolem. The skolem is rigid
(which we requirefor a quantified variable), but is still a TcTyVar that the
simplifier knows how to deal with.
Manuel M T Chakravarty [Thu, 18 Oct 2007 13:10:40 +0000 (13:10 +0000)]
Fix typo that prevented zonking of rhs of EqInsts
MERGE TO STABLE
Simon Marlow [Fri, 19 Oct 2007 11:57:51 +0000 (11:57 +0000)]
implement #1468, :browse on its own uses the currently-loaded module
Simon Marlow [Fri, 19 Oct 2007 11:02:23 +0000 (11:02 +0000)]
FIX #1784: EM_AMD64 and EM_X86_64 might both be defined to the same value
Duncan Coutts [Thu, 18 Oct 2007 22:21:28 +0000 (22:21 +0000)]
Tell Cabal what it's version number is while bootstrapping it
This means that it'll work with all the packages that specify a cabal-version
Simon Marlow [Thu, 18 Oct 2007 13:49:51 +0000 (13:49 +0000)]
FIX #1450: asynchronous exceptions are now printed by +RTS -xc
Simon Marlow [Thu, 18 Oct 2007 11:06:21 +0000 (11:06 +0000)]
fix -fbreak-on-exception for unregsterised
Simon Marlow [Thu, 18 Oct 2007 10:53:40 +0000 (10:53 +0000)]
fix :print when !tablesNextToCode
Simon Marlow [Thu, 18 Oct 2007 10:19:29 +0000 (10:19 +0000)]
fix breakpoints in unregisterised mode
Simon Marlow [Thu, 18 Oct 2007 09:55:03 +0000 (09:55 +0000)]
Change some ints to unsigned ints
Fixes some gratuitous warnings when compiling via C with -fhpc
Simon Marlow [Thu, 18 Oct 2007 09:54:17 +0000 (09:54 +0000)]
fix warnings when compiling via C
Simon Marlow [Thu, 18 Oct 2007 09:44:15 +0000 (09:44 +0000)]
rollback "accounting wibble: we were missing an alloc_blocks .. "
I misread the code, now added a comment to explain why it isn't necessary
Simon Marlow [Wed, 17 Oct 2007 12:56:57 +0000 (12:56 +0000)]
recordMutable: test for gen>0 before calling recordMutableCap
For some reason the C-- version of recordMutable wasn't verifying that
the object was in an old generation before attempting to add it to the
mutable list, and this broke maessen_hashtab. This version of
recordMutable is only used in unsafeThaw#.
Simon Marlow [Wed, 17 Oct 2007 14:40:07 +0000 (14:40 +0000)]
re-instate missing parts of "put the @N suffix on stdcall foreign calls in .cmm code"
These changes were apparently lost during "massive changes to add a
'zipper' representation of C-"
Manuel M T Chakravarty [Thu, 18 Oct 2007 06:03:36 +0000 (06:03 +0000)]
Don't barf on error message with non-tc tyvars
MERGE TO STABLE
Manuel M T Chakravarty [Thu, 18 Oct 2007 04:43:52 +0000 (04:43 +0000)]
Fix deferring on tyvars in TcUnify.subFunTys
Manuel M T Chakravarty [Wed, 17 Oct 2007 11:43:26 +0000 (11:43 +0000)]
TcUnify.subFunTys must take type families into account
* A bug reported by Andrew Appleyard revealed that subFunTys did take
neither type families nor equalities into account. In a fairly obscure
case there was also a coercion ignored.
Simon Marlow [Wed, 17 Oct 2007 13:41:45 +0000 (13:41 +0000)]
Refactoring: extract platform-specific code from sm/MBlock.c
Also common-up some duplicate bits in the platform-specific code
Simon Marlow [Wed, 17 Oct 2007 12:18:55 +0000 (12:18 +0000)]
fix an error message (barf -> sysErrorBelch)
Simon Marlow [Wed, 17 Oct 2007 12:16:45 +0000 (12:16 +0000)]
fix warning on Windows
Simon Marlow [Wed, 17 Oct 2007 10:09:08 +0000 (10:09 +0000)]
Don't clean gmp when validating (speeds up validation on Windows)
Simon Marlow [Tue, 25 Sep 2007 12:11:39 +0000 (12:11 +0000)]
document float2Int# and double2Int#
simonpj@microsoft.com [Wed, 17 Oct 2007 12:02:12 +0000 (12:02 +0000)]
Update HsExpr.hi-boot-6 for view pattern changes
simonpj@microsoft.com [Tue, 16 Oct 2007 13:18:40 +0000 (13:18 +0000)]
Fix #1709: do not expose the worker for a loop-breaker
The massive 'Uni' program produced a situation in which a function that
had a worker/wrapper split was chosen as a loop breaker. If the worker
is exposed in the interface file, then an importing module may go into
an inlining loop: see comments on TidyPgm.tidyWorker.
This patch fixes the inlining bug. The code that gives rise to this
bizarre case is still not good (it's a bunch of implication constraints
and we are choosing a bad loop breaker) but the first thing is to fix the
bug.
It's rather hard to produce a test case!
Please merge to the 6.8 branch.
simonpj@microsoft.com [Tue, 16 Oct 2007 12:47:10 +0000 (12:47 +0000)]
Fix #1662: do not simplify constraints for vanilla pattern matches
See Note [Arrows and patterns] in TcPat.
This fixes Trac 1662. Test is arrows/should_compile/arrowpat.hs
Please merge
simonpj@microsoft.com [Tue, 16 Oct 2007 12:46:06 +0000 (12:46 +0000)]
Eliminate over-zealous warning in CoreToStg
simonpj@microsoft.com [Tue, 16 Oct 2007 12:45:35 +0000 (12:45 +0000)]
Show inlined function in the header of 'Inlining done' message
simonpj@microsoft.com [Tue, 16 Oct 2007 12:44:50 +0000 (12:44 +0000)]
Show program size in the simplifier-bailing-out message
Dan Licata [Wed, 10 Oct 2007 15:02:54 +0000 (15:02 +0000)]
View patterns, record wildcards, and record puns
This patch implements three new features:
* view patterns (syntax: expression -> pat in a pattern)
* working versions of record wildcards and record puns
See the manual for detailed descriptions.
Other minor observable changes:
* There is a check prohibiting local fixity declarations
when the variable being fixed is not defined in the same let
* The warn-unused-binds option now reports warnings for do and mdo stmts
Implementation notes:
* The pattern renamer is now in its own module, RnPat, and the
implementation is now in a CPS style so that the correct context is
delivered to pattern expressions.
* These features required a fairly major upheaval to the renamer.
Whereas the old version used to collect up all the bindings from a let
(or top-level, or recursive do statement, ...) and put them into scope
before renaming anything, the new version does the collection as it
renames. This allows us to do the right thing with record wildcard
patterns (which need to be expanded to see what names should be
collected), and it allows us to implement the desired semantics for view
patterns in lets. This change had a bunch of domino effects brought on
by fiddling with the top-level renaming.
* Prior to this patch, there was a tricky bug in mkRecordSelId in HEAD,
which did not maintain the invariant necessary for loadDecl. See note
[Tricky iface loop] for details.