module InstEnv (
DFunId, ClsInstEnv, InstEnv,
- emptyInstEnv, extendInstEnv,
+ emptyInstEnv, extendInstEnv, pprInstEnv,
lookupInstEnv, InstLookupResult(..),
classInstEnv, simpleDFunClassTyCon
) where
import Class ( Class )
import Var ( Id )
-import VarSet ( TyVarSet, unionVarSet, mkVarSet )
+import VarSet ( TyVarSet, unionVarSet, mkVarSet, varSetElems )
import VarEnv ( TyVarSubstEnv )
import Maybes ( MaybeErr(..), returnMaB, failMaB, thenMaB, maybeToBool )
import Name ( getSrcLoc )
import TyCon ( TyCon )
import Outputable
import Unify ( matchTys, unifyTyListsX )
-import UniqFM ( UniqFM, lookupWithDefaultUFM, addToUFM, emptyUFM )
+import UniqFM ( UniqFM, lookupWithDefaultUFM, addToUFM, emptyUFM, eltsUFM )
import Id ( idType )
import ErrUtils ( Message )
import CmdLineOpts
where
(_,_,clas,[ty]) = splitDFunTy (idType dfun)
tycon = tyConAppTyCon ty
+
+pprInstEnv :: InstEnv -> SDoc
+pprInstEnv env
+ = vcat [ brackets (pprWithCommas ppr (varSetElems tyvars)) <+>
+ brackets (pprWithCommas ppr tys) <+> ppr dfun
+ | cls_inst_env <- eltsUFM env
+ , (tyvars, tys, dfun) <- cls_inst_env
+ ]
\end{code}
%************************************************************************