X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Ftypecheck%2FTcPat.lhs;h=5592b80f472bf3b4cb61ced0676a86d84f1551a9;hb=3e42637302a69f094201bf2d7bbb778aa5dfece1;hp=bef5ec742b1f2de5178060ffa764038cc526347b;hpb=269210b04b1428ae5270f15024ab9af23c7497fc;p=ghc-hetmet.git diff --git a/compiler/typecheck/TcPat.lhs b/compiler/typecheck/TcPat.lhs index bef5ec7..5592b80 100644 --- a/compiler/typecheck/TcPat.lhs +++ b/compiler/typecheck/TcPat.lhs @@ -30,7 +30,6 @@ import VarSet import TcUnify import TcHsType import TysWiredIn -import Type import Coercion import StaticFlags import TyCon @@ -41,10 +40,9 @@ import DynFlags ( DynFlag( Opt_GADTs ) ) import SrcLoc import ErrUtils import Util -import Maybes import Outputable import FastString -import Monad +import Control.Monad \end{code} @@ -181,7 +179,7 @@ tcPatBndr :: PatState -> Name -> BoxySigmaType -> TcM TcId tcPatBndr (PS { pat_ctxt = LetPat lookup_sig }) bndr_name pat_ty | Just mono_ty <- lookup_sig bndr_name = do { mono_name <- newLocalName bndr_name - ; boxyUnify mono_ty pat_ty + ; _ <- boxyUnify mono_ty pat_ty ; return (Id.mkLocalId mono_name mono_ty) } | otherwise @@ -238,7 +236,7 @@ unBoxArgType ty pp_this return ty' else do -- OpenTypeKind, so constrain it { ty2 <- newFlexiTyVarTy argTypeKind - ; unifyType ty' ty2 + ; _ <- unifyType ty' ty2 ; return ty' }} where msg = pp_this <+> ptext (sLit "cannot be bound to an unboxed tuple") @@ -373,7 +371,7 @@ tc_pat pstate lpat@(LazyPat pat) pat_ty thing_inside -- Check that the pattern has a lifted type ; pat_tv <- newBoxyTyVar liftedTypeKind - ; boxyUnify pat_ty (mkTyVarTy pat_tv) + ; _ <- boxyUnify pat_ty (mkTyVarTy pat_tv) ; return (LazyPat pat', [], res) } @@ -435,7 +433,11 @@ tc_pat pstate (SigPatIn pat sig_ty) pat_ty thing_inside failWithTc (badSigPat pat_ty) ; (pat', tvs, res) <- tcExtendTyVarEnv2 tv_binds $ tc_lpat pat inner_ty pstate thing_inside - ; return (SigPatOut pat' inner_ty, tvs, res) } + ; return (SigPatOut pat' inner_ty, tvs, res) } + +-- Use this when we add pattern coercions back in +-- return (mkCoPatCoI (mkSymCoI coi) (SigPatOut pat' inner_ty) pat_ty +-- , tvs, res) } tc_pat _ pat@(TypePat _) _ _ = failWithTc (badTypePat pat) @@ -630,7 +632,7 @@ tcConPat pstate con_span data_con tycon pat_ty arg_pats thing_inside unwrap_ty res_pat -- Add the stupid theta - ; addDataConStupidTheta data_con ctxt_res_tys + ; setSrcSpan con_span $ addDataConStupidTheta data_con ctxt_res_tys ; ex_tvs' <- tcInstSkolTyVars skol_info ex_tvs -- Get location from monad, not from ex_tvs