1. 23 Jul, 2011 2 commits
    • Simon Peyton Jones's avatar
      A nice tidy-up for CvSubst and liftCoSubst · 525aca2c
      Simon Peyton Jones authored
      A "lifting substitition" takes a *type* to a *coercion*, using a
      substitution that takes a *type variable* to a *coercion*.  We were
      using a CvSubst for this purpose, which was an awkward exception: in
      every other use of CvSubst, type variables map only to types.
      
      Turned out that Coercion.liftCoSubst is quite a small function, so I
      rewrote it with a special substitution type Coercion.LiftCoSubst, just
      for that purpose.  In doing so I found that the function itself was
      bizarrely over-complicated ... a direct result of mis-using CvSubst.
      
      So this patch makes it all simpler, faster, and easier to understand.
      No bugs fixed though!
      525aca2c
    • Simon Peyton Jones's avatar
      Reject bad 'deriving' directives (fixes Trac #5287) · 49861e71
      Simon Peyton Jones authored
      The 'deriving' mechanism that infers the context for
      an instance declarations was going into a loop, as a
      result of an instance like
             instance C a b => D [a]
      where the 'b' isn't mentioned in the head.
      
      This patch identifies those cases.  I also needed to make
      TcErrors generate a suitable error message.  On the way
      I improved the reporting of "ambiguous" variables;
      for example arrowfail001 now generates a better message.
      49861e71
  2. 22 Jul, 2011 9 commits
  3. 21 Jul, 2011 11 commits
  4. 20 Jul, 2011 18 commits