Fix Trac #3540: malformed types
[ghc-hetmet.git] / compiler / typecheck / TcPat.lhs
index bef5ec7..8c73fa9 100644 (file)
@@ -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) }
 
@@ -630,7 +628,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