Major pass through type checker:(1) prioritizing equalities, (2) improved Derived...
[ghc-hetmet.git] / compiler / typecheck / TcMType.lhs
index 950d733..f3485a2 100644 (file)
@@ -28,14 +28,13 @@ module TcMType (
   newWantedCoVar, writeWantedCoVar, readWantedCoVar, 
   newIP, newDict, newSelfDict, isSelfDict,
 
-  newWantedEvVar, newWantedEvVars, 
-  newKindConstraint,
+  newWantedEvVar, newWantedEvVars,
   newTcEvBinds, addTcEvBind,
 
   --------------------------------
   -- Instantiation
   tcInstTyVar, tcInstTyVars, tcInstSigTyVars,
-  tcInstType, tcInstSigType,
+  tcInstType, tcInstSigType, instMetaTyVar,
   tcInstSkolTyVars, tcInstSkolTyVar, tcInstSkolType, 
   tcSkolSigType, tcSkolSigTyVars, 
 
@@ -175,15 +174,6 @@ newName occ
        ; return (mkInternalName uniq occ loc) }
 
 -----------------
-newKindConstraint :: Type -> Kind -> TcM (CoVar, Type)
--- Create a new wanted CoVar that constrains the type
--- to have the specified kind
-newKindConstraint ty kind
-  = do { ty_k <- newFlexiTyVarTy kind
-       ; co_var <- newWantedCoVar ty ty_k
-       ; return (co_var, ty_k) }
-
------------------
 newSelfDict :: Class -> [TcType] -> TcM DictId
 -- Make a dictionary for "self". It behaves just like a normal DictId
 -- except that it responds True to isSelfDict
@@ -305,6 +295,7 @@ newMetaTyVar meta_info kind
        ; let name = mkSysTvName uniq fs 
              fs = case meta_info of
                        TauTv   -> fsLit "t"
+                       TcsTv   -> fsLit "u"
                        SigTv _ -> fsLit "a"
        ; return (mkTcTyVar name kind (MetaTv meta_info ref)) }