mkClass, classTyVars, classArity,
classKey, className, classSelIds, classTyCon,
- classBigSig, classExtraBigSig, classTvsFds, classSCTheta
+ classBigSig, classExtraBigSig, classTvsFds, classSCTheta,
+ classHasFDs
) where
#include "HsVersions.h"
import BasicTypes ( Arity )
import Unique ( Unique, Uniquable(..) )
import Outputable
+import Util ( notNull )
\end{code}
%************************************************************************
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}
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}