• chak@cse.unsw.edu.au.'s avatar
    Rough matches for family instances · 2a8cdc3a
    chak@cse.unsw.edu.au. authored
    - Class and type family instances just got a lot more similar.
    - FamInst, like Instance, now has a rough match signature.  The idea is the
      same: if the rough match doesn't match, there is no need to pull in the while
      tycon describing the instance (from a lazily read iface).
    - IfaceFamInst changes in a similar way and the list of all IFaceFamInsts is
      now written into the binary iface (as for class instances), as deriving it
      from the tycon (as before) would render the whole rough matching useless.
    - As a result of this, the plumbing of class instances and type instances 
      through the various environments, ModIface, ModGuts, and ModDetails is now
      almost the same.  (The remaining difference are mostly because the dfun of a
      class instance is an Id, but type instance refer to a TyCon, not an Id.)
    *** WARNING: The interface file format changed! ***
    ***	     Rebuild from scratch.		***
TcRnMonad.lhs 33.4 KB