X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Ftypecheck%2FInst.lhs;h=ed5528c274f2f62468da71b99fd8ca94890f8ef8;hp=3bfde1c830bfbbfe3301314689d8fbbd8f058384;hb=49c98d143c382a1341e1046f5ca00819a25691ba;hpb=b00b5bc04ff36a551552470060064f0b7d84ca30 diff --git a/compiler/typecheck/Inst.lhs b/compiler/typecheck/Inst.lhs index 3bfde1c..ed5528c 100644 --- a/compiler/typecheck/Inst.lhs +++ b/compiler/typecheck/Inst.lhs @@ -1,7 +1,9 @@ % +% (c) The University of Glasgow 2006 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998 % -\section[Inst]{The @Inst@ type: dictionaries or method instances} + +The @Inst@ type: dictionaries or method instances \begin{code} module Inst ( @@ -42,56 +44,35 @@ module Inst ( import {-# SOURCE #-} TcExpr( tcPolyExpr ) import {-# SOURCE #-} TcUnify( unifyType ) -import HsSyn ( HsLit(..), HsOverLit(..), HsExpr(..), LHsExpr, mkHsApp, - HsWrapper(..), (<.>), mkWpTyApps, idHsWrapper, - nlHsLit, nlHsVar ) -import TcHsSyn ( zonkId ) +import HsSyn +import TcHsSyn import TcRnMonad -import TcEnv ( tcLookupId, checkWellStaged, topIdLvl, tcMetaTy ) -import InstEnv ( DFunId, InstEnv, Instance(..), OverlapFlag(..), - lookupInstEnv, extendInstEnv, pprInstances, - instanceHead, instanceDFunId, setInstanceDFunId ) -import FunDeps ( checkFunDeps ) -import TcMType ( zonkTcType, zonkTcTypes, zonkTcPredType, zonkTcThetaType, - tcInstTyVar, tcInstSkolType - ) -import TcType ( Type, TcType, TcThetaType, TcTyVarSet, TcPredType, - BoxyRhoType, - PredType(..), SkolemInfo(..), typeKind, mkSigmaTy, - tcSplitForAllTys, applyTys, - tcSplitPhiTy, tcSplitDFunHead, - isIntTy,isFloatTy, isIntegerTy, isDoubleTy, - mkPredTy, mkTyVarTys, - tyVarsOfType, tyVarsOfTypes, tyVarsOfPred, tidyPred, - isClassPred, isTyVarClassPred, - getClassPredTys, mkPredName, - isInheritablePred, isIPPred, - tidyType, tidyTypes, tidyFreeTyVars, tcSplitSigmaTy, - pprPred, pprParendType, pprTheta - ) -import Type ( TvSubst, substTy, substTyVar, substTyWith, - notElemTvSubst, extendTvSubstList ) -import Unify ( tcMatchTys ) -import Module ( modulePackageId ) -import {- Kind parts of -} Type ( isSubKind ) -import Coercion ( isEqPred ) -import HscTypes ( ExternalPackageState(..), HscEnv(..) ) -import CoreFVs ( idFreeTyVars ) -import DataCon ( dataConWrapId ) -import Id ( Id, idName, idType, mkUserLocal, mkLocalId, isId ) -import Name ( Name, mkMethodOcc, getOccName, getSrcLoc, nameModule, - isInternalName, setNameUnique ) -import NameSet ( addOneToNameSet ) -import Literal ( inIntRange ) -import Var ( Var, TyVar, tyVarKind, setIdType, isId, mkTyVar ) -import VarEnv ( TidyEnv, emptyTidyEnv ) -import VarSet ( elemVarSet, emptyVarSet, unionVarSet, mkVarSet ) -import TysWiredIn ( floatDataCon, doubleDataCon ) -import PrelNames ( integerTyConName, fromIntegerName, fromRationalName, rationalTyConName ) -import BasicTypes( IPName(..), mapIPName, ipNameName ) -import SrcLoc ( mkSrcSpan, noLoc, unLoc, Located(..) ) -import DynFlags ( DynFlag(..), DynFlags(..), dopt ) -import Maybes ( isJust ) +import TcEnv +import InstEnv +import FunDeps +import TcMType +import TcType +import Type +import Unify +import Module +import Coercion +import HscTypes +import CoreFVs +import DataCon +import Id +import Name +import NameSet +import Literal +import Var ( Var, TyVar ) +import qualified Var +import VarEnv +import VarSet +import TysWiredIn +import PrelNames +import BasicTypes +import SrcLoc +import DynFlags +import Maybes import Outputable \end{code} @@ -111,7 +92,7 @@ instToVar :: Inst -> Var instToVar (LitInst nm _ ty _) = mkLocalId nm ty instToVar (Method id _ _ _ _) = id instToVar (Dict nm pred _) - | isEqPred pred = mkTyVar nm (mkPredTy pred) + | isEqPred pred = Var.mkTyVar nm (mkPredTy pred) | otherwise = mkLocalId nm (mkPredTy pred) instLoc (Dict _ _ loc) = loc @@ -337,12 +318,12 @@ checkKind :: TyVar -> TcType -> TcM () checkKind tv ty = do { let ty1 = ty -- ty1 <- zonkTcType ty - ; if typeKind ty1 `isSubKind` tyVarKind tv + ; if typeKind ty1 `isSubKind` Var.tyVarKind tv then return () else pprPanic "checkKind: adding kind constraint" - (vcat [ppr tv <+> ppr (tyVarKind tv), + (vcat [ppr tv <+> ppr (Var.tyVarKind tv), ppr ty <+> ppr ty1 <+> ppr (typeKind ty1)]) } -- do { tv1 <- tcInstTyVar tv