X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Ftypes%2FClass.lhs;h=3a37d161769fbab914191b5144d96dd5feefefdd;hb=f6176af636474f38e976dabdc8b86cbb169d99cf;hp=3ecb8f88698769f2562796e1976a2c9da17de730;hpb=788faebb40b51d37e73ed94dfc99460d39a1a811;p=ghc-hetmet.git diff --git a/ghc/compiler/types/Class.lhs b/ghc/compiler/types/Class.lhs index 3ecb8f8..3a37d16 100644 --- a/ghc/compiler/types/Class.lhs +++ b/ghc/compiler/types/Class.lhs @@ -10,7 +10,8 @@ module Class ( mkClass, classTyVars, classArity, classKey, className, classSelIds, classTyCon, - classBigSig, classExtraBigSig, classTvsFds, classSCTheta + classBigSig, classExtraBigSig, classTvsFds, classSCTheta, + classHasFDs ) where #include "HsVersions.h" @@ -23,6 +24,7 @@ import Name ( NamedThing(..), Name ) import BasicTypes ( Arity ) import Unique ( Unique, Uniquable(..) ) import Outputable +import Util ( notNull ) \end{code} %************************************************************************ @@ -55,12 +57,13 @@ data Class type FunDep a = ([a],[a]) -- e.g. class C a b c | a b -> c, a c -> b where ... -- Here fun-deps are [([a,b],[c]), ([a,c],[b])] -type ClassOpItem = (Id, DefMeth Id) +type ClassOpItem = (Id, DefMeth Name) -- Selector function; contains unfolding -- Default-method info data DefMeth id = NoDefMeth -- No default method | DefMeth id -- A polymorphic default method (named id) + -- (Only instantiated to RdrName and Name, never Id) | GenDefMeth -- A generic default method deriving Eq \end{code} @@ -113,6 +116,9 @@ classExtraBigSig (Class {classTyVars = tyvars, classFunDeps = fundeps, classSCTheta = sc_theta, classSCSels = sc_sels, classOpStuff = op_stuff}) = (tyvars, fundeps, sc_theta, sc_sels, op_stuff) + +classHasFDs :: Class -> Bool +classHasFDs (Class {classFunDeps = fundeps}) = notNull fundeps \end{code}