[project @ 2003-07-16 15:27:36 by sof]
[ghc-hetmet.git] / ghc / compiler / types / Class.lhs
index 3ecb8f8..3a37d16 100644 (file)
@@ -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}