Skip to content
  • Simon Peyton Jones's avatar
    Several fixes to 'deriving' including Trac #2378 · 9319fbaf
    Simon Peyton Jones authored
    This patch collects several related things together.
    
    * Refactor TcDeriv so that the InstInfo and the method bindings are renamed
      together.  This was messy before, and is cleaner now.  Fixes a bug caused 
      by interaction between the "auxiliary bindings" (which were given 
      Original names before), and stand-alone deriving (which meant that those
      Original names came from a different module). Now the names are purely
      local an ordinary.
    
      To do this, InstInfo is parameterised like much else HsSyn stuff.
    
    * Improve the location info in a dfun, which in turn improves location 
      info for error messages, e.g. overlapping instances
    
    * Make sure that newtype-deriving isn't used for Typeable1 and friends.
      (Typeable was rightly taken care of, but not Typeable1,2, etc.)
    
    * Check for data types in deriving Data, so that you can't do, say,
     	deriving instance Data (IO a)
    
    * Decorate the derived binding with location info from the *instance* 
      rather than from the *tycon*.  Again, this really only matters with
      standalone deriving, but it makes a huge difference there.
    
    I think that's it.  Quite a few error messages change slightly.
    
    If we release 6.8.4, this should go in if possible.
    9319fbaf