Use takeUniqFromSupply in IfaceEnv This is a little nicer than having to explicitly split supplies and throw half of them away.
Remove (most of) the FiniteMap wrapper We still have insertList, insertListWith, deleteList which aren't in Data.Map, and foldRightWithKey which works around the fold(r)WithKey addition and deprecation.
Remove LazyUniqFM; fixes trac #3880
Remove the lock around NameCache for readBinIface. Turns out using atomic update instead of a full-blown lock was easier than I thought. It should also be safe in the case where we concurrently read the same interface file. Whichever thread loses the race will simply find that all of the names are already defined and will have no effect on the name cache.
Make access to NameCache atomic. Sometimes needs a lock. 'readBinIface' updates the name cache in a way that is hard to use with atomicModifyIORef, so this patch introduces a lock for this case. All other updates use atomicModifyIORef. Having a single lock is quite pessimistic, so it remains to be seen whether this will become a problem. In principle we only need to make sure that we do not load the same file concurrently (or that it's idempotent). In practice we also need to ensure that concurrent reads do not cancel each other out (since the new NameCache may be based on an outdated version).
Remove unused imports
Fix Trac #2937: deserialising assoicated type definitions The deserialiser (TcIface) for associated type definitions wasn't taking into account that the class decl brings into scope some type variables that scope over the data/type family declaration. Easy to fix: the new function is TcIface.bindIfaceTyVars_AT
Expunge ThFake, cure Trac #2632 This patch fixes a dirty hack (the fake ThFake module), which in turn was causing Trac #2632. The new scheme is that the top-level binders in a TH [d| ... |] decl splice get Internal names. That breaks a previous invariant that things like TyCons always have External names, but these TyCons are never long-lived; they live only long enough to typecheck the TH quotation; the result is discarded. So it seems cool. Nevertheless -- Template Haskell folk: please test your code. The testsuite is OK but it's conceivable that I've broken something in TH. Let's see.
Add ASSERTs to all calls of nameModule nameModule fails on an InternalName. These ASSERTS tell you which call failed.
Follow the tuple datatype movements
Comment only in IfaceENv
Make IfaceEnv warning-free
Convert more UniqFM's back to LazyUniqFM's These fix these failures: break008(ghci) break009(ghci) break026(ghci) ghci.prog009(ghci) ghci025(ghci) print007(ghci) prog001(ghci) prog002(ghci) prog003(ghci) at least some of which have this symptom: Exception: expectJust prune
Monadify iface/IfaceEnv: use do, return and standard monad functions
Fix CodingStyle#Warnings URLs
Use OPTIONS rather than OPTIONS_GHC for pragmas 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.
Add {-# OPTIONS_GHC -w #-} and some blurb to all compiler modules
Adding tick boxes to the interface syntax; fixes #1510
Store a SrcSpan instead of a SrcLoc inside a Name This has been a long-standing ToDo.
Comment out debug traces