X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Ftypes%2FInstEnv.lhs;h=774808d4fea8b6018ad795d69cfeea4375a1d5e5;hb=8ad973aef4ff86b5a3e2aa6276d9dd8c99732eca;hp=7aaea5cff768bd204751589e519f104acf5174fa;hpb=6113955d352ba7188a7ae3b4de24c396dff86495;p=ghc-hetmet.git diff --git a/compiler/types/InstEnv.lhs b/compiler/types/InstEnv.lhs index 7aaea5c..774808d 100644 --- a/compiler/types/InstEnv.lhs +++ b/compiler/types/InstEnv.lhs @@ -27,13 +27,12 @@ import VarSet import Name import TcType import TyCon -import TcGadt import Unify import Outputable import BasicTypes import UniqFM import Id -import SrcLoc +import FastString import Data.Maybe ( isJust, isNothing ) \end{code} @@ -132,15 +131,15 @@ instance Outputable Instance where pprInstance :: Instance -> SDoc -- Prints the Instance as an instance declaration -pprInstance ispec@(Instance { is_flag = flag }) +pprInstance ispec = hang (pprInstanceHdr ispec) - 2 (ptext SLIT("--") <+> (pprDefnLoc (getSrcSpan ispec))) + 2 (ptext (sLit "--") <+> pprNameLoc (getName ispec)) -- * pprInstanceHdr is used in VStudio to populate the ClassView tree pprInstanceHdr :: Instance -> SDoc -- Prints the Instance as an instance declaration pprInstanceHdr ispec@(Instance { is_flag = flag }) - = ptext SLIT("instance") <+> ppr flag + = ptext (sLit "instance") <+> ppr flag <+> sep [pprThetaArrow theta, pprClassPred clas tys] where (_, theta, clas, tys) = instanceHead ispec @@ -184,7 +183,7 @@ instanceCantMatch :: [Maybe Name] -> [Maybe Name] -> Bool -- possibly be instantiated to actual, nor vice versa; -- False is non-committal instanceCantMatch (Just t : ts) (Just a : as) = t/=a || instanceCantMatch ts as -instanceCantMatch ts as = False -- Safe +instanceCantMatch _ _ = False -- Safe \end{code} @@ -371,7 +370,7 @@ extendInstEnv inst_env ins_item@(Instance { is_cls = cls_nm, is_tcs = mb_tcs }) add (ClsIE cur_insts cur_tyvar) _ = ClsIE (ins_item : cur_insts) (ins_tyvar || cur_tyvar) ins_tyvar = not (any isJust mb_tcs) -\end{code} +\end{code} %************************************************************************ @@ -484,9 +483,10 @@ lookupInstEnv (pkg_ie, home_ie) cls tys -- They shouldn't because we allocate separate uniques for them case tcUnifyTys bind_fn tpl_tys tys of Just _ -> find ms (item:us) rest - Nothing -> find ms us rest + Nothing -> find ms us rest --------------- +bind_fn :: TyVar -> BindFlag bind_fn tv | isTcTyVar tv && isExistentialTyVar tv = Skolem | otherwise = BindMe -- The key_tys can contain skolem constants, and we can guarantee that those @@ -532,6 +532,6 @@ insert_overlapping new_item (item:items) where overlap_ok = case is_flag instB of NoOverlap -> False - other -> True + _ -> True \end{code}