The bits common to TcInstDcls and TcDeriv.
\begin{code}
-{-# OPTIONS_GHC -w #-}
--- The above warning supression flag is a temporary kludge.
--- While working on this module you are encouraged to remove it and fix
--- any warnings in the module. See
--- http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions#Warnings
--- for details
-
module InstEnv (
DFunId, OverlapFlag(..),
Instance(..), pprInstance, pprInstanceHdr, pprInstances,
import BasicTypes
import UniqFM
import Id
-import SrcLoc
import Data.Maybe ( isJust, isNothing )
\end{code}
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
-- 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}
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
where
overlap_ok = case is_flag instB of
NoOverlap -> False
- other -> True
+ _ -> True
\end{code}