[commit: ghc] wip/spj-wibbles: Small refactor (ba3b196)

git at git.haskell.org git at git.haskell.org
Thu Jan 10 22:36:50 UTC 2019


Repository : ssh://git@git.haskell.org/ghc

On branch  : wip/spj-wibbles
Link       : http://ghc.haskell.org/trac/ghc/changeset/ba3b196fbcb16b2bf96a847419567053e9492bdc/ghc

>---------------------------------------------------------------

commit ba3b196fbcb16b2bf96a847419567053e9492bdc
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date:   Thu Jan 10 12:08:47 2019 +0000

    Small refactor
    
    ...to use the same error message rather than duplicating it


>---------------------------------------------------------------

ba3b196fbcb16b2bf96a847419567053e9492bdc
 compiler/typecheck/TcInstDcls.hs | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/compiler/typecheck/TcInstDcls.hs b/compiler/typecheck/TcInstDcls.hs
index ba33fe2..fccf8b7 100644
--- a/compiler/typecheck/TcInstDcls.hs
+++ b/compiler/typecheck/TcInstDcls.hs
@@ -21,7 +21,7 @@ import TcBinds
 import TcTyClsDecls
 import TcTyDecls ( addTyConsToGblEnv )
 import TcClassDcl( tcClassDecl2, tcATDefault,
-                   HsSigFun, mkHsSigFun,
+                   HsSigFun, mkHsSigFun, badMethodErr,
                    findMethodBind, instantiateMethod )
 import TcSigs
 import TcRnMonad
@@ -1539,13 +1539,11 @@ tcMethods dfun_id clas tyvars dfun_ev_vars inst_tys
     -- Check if any method bindings do not correspond to the class.
     -- See Note [Mismatched class methods and associated type families].
     checkMethBindMembership
-      = let bind_nms         = map unLoc $ collectMethodBinders binds
-            cls_meth_nms     = map (idName . fst) op_items
-            mismatched_meths = bind_nms `minusList` cls_meth_nms
-        in forM_ mismatched_meths $ \mismatched_meth ->
-             addErrTc $ hsep
-             [ text "Class", quotes (ppr (className clas))
-             , text "does not have a method", quotes (ppr mismatched_meth)]
+      = mapM_ (addErrTc . badMethodErr clas) mismatched_meths
+      where
+        bind_nms         = map unLoc $ collectMethodBinders binds
+        cls_meth_nms     = map (idName . fst) op_items
+        mismatched_meths = bind_nms `minusList` cls_meth_nms
 
 {-
 Note [Mismatched class methods and associated type families]



More information about the ghc-commits mailing list