summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2013-12-02 16:49:22 +0000
committerSimon Peyton Jones <simonpj@microsoft.com>2013-12-04 13:41:05 +0000
commite1221541ec1587c8bb6a637afd09490566dbdd0e (patch)
treea5c81ae3bf3a354a78d2fec72c84d61ae5b6128a /compiler
parent356bc56cc03f94a773cfcc04e02c5fbe8caac75f (diff)
downloadhaskell-e1221541ec1587c8bb6a637afd09490566dbdd0e.tar.gz
Comments only
Diffstat (limited to 'compiler')
-rw-r--r--compiler/typecheck/TcSMonad.lhs19
1 files changed, 9 insertions, 10 deletions
diff --git a/compiler/typecheck/TcSMonad.lhs b/compiler/typecheck/TcSMonad.lhs
index ba462489e4..78ecea18ac 100644
--- a/compiler/typecheck/TcSMonad.lhs
+++ b/compiler/typecheck/TcSMonad.lhs
@@ -1651,22 +1651,21 @@ xCtFlavor (CtDerived { ctev_loc = loc }) ptys _xev
; return (catMaybes ders) }
-----------------------------
-rewriteCtFlavor :: CtEvidence
+rewriteCtFlavor :: CtEvidence -- old evidence
-> TcPredType -- new predicate
- -> TcCoercion -- new ~ old
+ -> TcCoercion -- Of type :: new predicate ~ <type of old evidence>
-> TcS (Maybe CtEvidence)
--- Returns Just new_fl iff either (i) 'co' is reflexivity
+-- Returns Just new_ev iff either (i) 'co' is reflexivity
-- or (ii) 'co' is not reflexivity, and 'new_pred' not cached
--- In either case, there is nothing new to do with new_fl
+-- In either case, there is nothing new to do with new_ev
{-
- rewriteCtFlavor old_fl new_pred co
+ rewriteCtFlavor old_ev new_pred co
Main purpose: create new evidence for new_pred;
unless new_pred is cached already
-* Returns a new_fl : new_pred, with same wanted/given/derived flag as old_fl
-* If old_fl was wanted, create a binding for old_fl, in terms of new_fl
-* If old_fl was given, AND not cached, create a binding for new_fl, in terms of old_fl
-* Returns Nothing if new_fl is already cached
-
+* Returns a new_ev : new_pred, with same wanted/given/derived flag as old_ev
+* If old_ev was wanted, create a binding for old_ev, in terms of new_ev
+* If old_ev was given, AND not cached, create a binding for new_ev, in terms of old_ev
+* Returns Nothing if new_ev is already cached
Old evidence New predicate is Return new evidence
flavour of same flavor