From 32a5c61dc1df5e12aaf1f21e5928fbb261d62043 Mon Sep 17 00:00:00 2001 From: Manuel M T Chakravarty Date: Thu, 2 Oct 2008 07:46:42 +0000 Subject: [PATCH] Clean up some comments MERGE TO 6.10 --- compiler/typecheck/TcSimplify.lhs | 4 +++- compiler/typecheck/TcTyFuns.lhs | 11 +---------- compiler/types/Type.lhs | 6 ++++-- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/compiler/typecheck/TcSimplify.lhs b/compiler/typecheck/TcSimplify.lhs index 534c5d0..9b192ec 100644 --- a/compiler/typecheck/TcSimplify.lhs +++ b/compiler/typecheck/TcSimplify.lhs @@ -1883,7 +1883,9 @@ reduceContext env wanteds0 } -- Solve the *wanted* *dictionary* constraints (not implications) - -- This may expose some further equational constraints... + -- This may expose some further equational constraints in the course + -- of improvement due to functional dependencies if any of the + -- involved unifications gets deferred. ; let (wanted_implics, wanted_dicts) = partition isImplicInst wanteds' ; (avails, extra_eqs) <- getLIE (reduceList env wanted_dicts init_state) -- The getLIE is reqd because reduceList does improvement diff --git a/compiler/typecheck/TcTyFuns.lhs b/compiler/typecheck/TcTyFuns.lhs index 77d7205..2237e3f 100644 --- a/compiler/typecheck/TcTyFuns.lhs +++ b/compiler/typecheck/TcTyFuns.lhs @@ -231,9 +231,6 @@ tcReduceEqs locals wanteds We maintain normalised equalities together with the skolems introduced as intermediates during flattening of equalities as well as -!!!TODO: We probably now can do without the skolem set. It's not used during -finalisation in the current code. - \begin{code} -- |Configuration of normalised equalities used during solving. -- @@ -384,9 +381,6 @@ families. Moreover, in Forms (2) & (3), the left-hand side may not occur in the right-hand side, and the relation x > y is an arbitrary, but total order on type variables -!!!TODO: We may need to keep track of swapping for error messages (and to -re-orient on finilisation). - \begin{code} data RewriteInst = RewriteVar -- Form (2) above @@ -960,9 +954,6 @@ applySubstFam eq1@(RewriteFam {rwi_fam = fam1, rwi_args = args1}) -- rule matches => rewrite | fam1 == fam2 && tcEqTypes args1 args2 && (isWantedRewriteInst eq2 || not (isWantedRewriteInst eq1)) --- !!!TODO: tcEqTypes is insufficient as it does not look through type synonyms --- !!!Check whether anything breaks by making tcEqTypes look through synonyms. --- !!!Should be ok and we don't want three type equalities. = do { co2' <- mkRightTransEqInstCo co2 co1 (lhs, rhs) ; eq2' <- deriveEqInst eq2 lhs rhs co2' ; liftM Just $ normEqInst eq2' @@ -1240,7 +1231,7 @@ instantiateAndExtract eqs localsEmpty skolems | Just tv2 <- tcGetTyVar_maybe ty2 , isMetaTyVar tv2 , mayInst tv2 && (checkingMode || tv2 `elemVarSet` skolems) - -- !!!TODO: this is too liberal, even if tv2 is in + -- !!!FIXME: this is too liberal, even if tv2 is in -- skolems we shouldn't instantiate if tvs occurs -- in other equalities that may propagate it into the -- environment diff --git a/compiler/types/Type.lhs b/compiler/types/Type.lhs index 79a561a..07e61da 100644 --- a/compiler/types/Type.lhs +++ b/compiler/types/Type.lhs @@ -1147,14 +1147,16 @@ coreEqType t1 t2 \begin{code} tcEqType :: Type -> Type -> Bool --- ^ Type equality on source types. Does not look through @newtypes@ or 'PredType's +-- ^ Type equality on source types. Does not look through @newtypes@ or +-- 'PredType's, but it does look through type synonyms. tcEqType t1 t2 = isEqual $ cmpType t1 t2 tcEqTypes :: [Type] -> [Type] -> Bool tcEqTypes tys1 tys2 = isEqual $ cmpTypes tys1 tys2 tcCmpType :: Type -> Type -> Ordering --- ^ Type ordering on source types. Does not look through @newtypes@ or 'PredType's +-- ^ Type ordering on source types. Does not look through @newtypes@ or +-- 'PredType's, but it does look through type synonyms. tcCmpType t1 t2 = cmpType t1 t2 tcCmpTypes :: [Type] -> [Type] -> Ordering -- 1.7.10.4