X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Ftypes%2FClass.lhs;h=5e8a4d4bddd7c7a6f7a13fff43622349b04fa0d1;hb=e93b244967871dde378b9488c9abe2db3b8d667c;hp=fb7cab135edc0598ff75d14ce4b55bb293440cb4;hpb=61bc26382b93e459023c68ebce62c83bcfb8ffc2;p=ghc-hetmet.git diff --git a/compiler/types/Class.lhs b/compiler/types/Class.lhs index fb7cab1..5e8a4d4 100644 --- a/compiler/types/Class.lhs +++ b/compiler/types/Class.lhs @@ -10,13 +10,15 @@ module Class ( Class, ClassOpItem, DefMeth (..), - FunDep, pprFundeps, + FunDep, pprFundeps, pprFunDep, mkClass, classTyVars, classArity, classKey, className, classATs, classSelIds, classTyCon, classMethods, classBigSig, classExtraBigSig, classTvsFds, classSCTheta ) where +#include "Typeable.h" + import {-# SOURCE #-} TyCon ( TyCon ) import {-# SOURCE #-} TypeRep ( PredType ) @@ -24,8 +26,11 @@ import Var import Name import BasicTypes import Unique +import Util import Outputable import FastString + +import qualified Data.Data as Data \end{code} %************************************************************************ @@ -174,9 +179,18 @@ instance Outputable DefMeth where pprFundeps :: Outputable a => [FunDep a] -> SDoc pprFundeps [] = empty -pprFundeps fds = hsep (ptext (sLit "|") : punctuate comma (map ppr_fd fds)) - where - ppr_fd (us, vs) = hsep [interppSP us, ptext (sLit "->"), - interppSP vs] +pprFundeps fds = hsep (ptext (sLit "|") : punctuate comma (map pprFunDep fds)) + +pprFunDep :: Outputable a => FunDep a -> SDoc +pprFunDep (us, vs) = hsep [interppSP us, ptext (sLit "->"), interppSP vs] + +instance Data.Typeable Class where + typeOf _ = Data.mkTyConApp (Data.mkTyCon "Class") [] + +instance Data.Data Class where + -- don't traverse? + toConstr _ = abstractConstr "Class" + gunfold _ _ = error "gunfold" + dataTypeOf _ = mkNoRepType "Class" \end{code}