This cleans up the package subsystem a little. There are some changes to the GHC API as a result. - GHC.init and GHC.initFromArgs are no longer necessary. - GHC.newSession takes the root of the GHC tree as an argument (previously passed to GHC.init). - You *must* do GHC.setSessionDynFlags after GHC.newSession, this is what loads the package database. - Several global vars removed from SysTools - The :set command in GHCi can now cause new packages to be loaded, or can hide/ignore existing packages.
This commit does two largely-unrelated things, but they hit the same code. First, I tweaked the error messages a bit, to give better errors for impredicative polymorphism. This added the mb_fun argument to tc_sub. Second, I fixed a long-standing bug in tc_sub. In the isBoxyTyVar case of tc_sub (rule F2) I was not recursing to tc_sub as the rule suggests, but rather calling u_tys. This is plain wrong, because the first arugment might have more foralls. The solution is to recurse to tc_sub, but that in turn requires a parameter, exp_ib, which says when we are inside a box. Test is tc210.
This is a long-standing bug really (Trac #900). The poly_id passed to tcSpecPrag should be zonked, else it calls tcSubExp with a non-zonked type; but that contradicts the latter's invariant. I ended up doing a bit of refactoring too. The extra lines are comments I think; the code line count is reduced. Test is tc212.hs
To catch the case of not running darcs-all get.
… type variables in constraints for derived class instances. Fixes instance deriving for GADTs which declar H98 types, closing ticket #902.
… constructor type was Maybe, should be Maybe1.
MERGE TO 6.6 branch! Some while ago I made the type checker a tiny bit more lenient about left sections, so that (x !) would typecheck iff ((!) x) typechecks. Strictly, Haskell 98 requires that the section typechecks iff (\y. (!) x y) typechecks, and I should really have made the relaxation dependent on a flag, but I didn't. Anyway, this commit fixes the *desugarer* so that it correctly desugars the programs that the typechecker passes.