diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2013-12-02 16:49:22 +0000 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2013-12-04 13:41:05 +0000 |
commit | e1221541ec1587c8bb6a637afd09490566dbdd0e (patch) | |
tree | a5c81ae3bf3a354a78d2fec72c84d61ae5b6128a /compiler | |
parent | 356bc56cc03f94a773cfcc04e02c5fbe8caac75f (diff) | |
download | haskell-e1221541ec1587c8bb6a637afd09490566dbdd0e.tar.gz |
Comments only
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/typecheck/TcSMonad.lhs | 19 |
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 |