• simonpj's avatar
    [project @ 2001-03-13 14:58:25 by simonpj] · 788faebb
    simonpj authored
    ----------------
    	Nuke ClassContext
    	----------------
    
    This commit tidies up a long-standing inconsistency in GHC.
    The context of a class or instance decl used to be restricted
    to predicates of the form
    	C t1 .. tn
    with
    	type ClassContext = [(Class,[Type])]
    
    but everywhere else in the compiler we used
    
    	type ThetaType = [PredType]
    where PredType can be any sort of constraint (= predicate).
    
    The inconsistency actually led to a crash, when compiling
    	class (?x::Int) => C a where {}
    
    I've tidied all this up by nuking ClassContext altogether, and using
    PredType throughout.  Lots of modified files, but all in
    more-or-less trivial ways.
    
    I've also added a check that the context of a class or instance
    decl doesn't include a non-inheritable predicate like (?x::Int).
    
    Other things
    
     * rename constructor 'Class' from type TypeRep.Pred to 'ClassP'
       (makes it easier to grep for)
    
     * rename constructor HsPClass  => HsClassP
    		      HsPIParam => HsIParam
    788faebb
TcSimplify.lhs 51.6 KB