Fix Trac #3012: allow more free-wheeling in standalone deriving
[ghc-hetmet.git] / compiler / typecheck / TcClassDcl.lhs
index cb27a98..18d2022 100644 (file)
@@ -30,21 +30,18 @@ import TcRnMonad
 import Generics
 import Class
 import TyCon
-import Type
 import MkId
 import Id
 import Name
 import Var
 import NameEnv
 import NameSet
-import OccName
 import RdrName
 import Outputable
 import PrelNames
 import DynFlags
 import ErrUtils
 import Util
-import Unique
 import ListSetOps
 import SrcLoc
 import Maybes
@@ -224,8 +221,6 @@ tcDefMeth rigid_info clas tyvars theta this_dict binds_in sig_fn prag_fn sel_id
              meth_sig_fn  _ = sig_fn sel_name
              meth_prag_fn _ = prag_fn sel_name
 
-               -- See Note [Silly default-method bind]
-               -- (possibly out of date)
        ; (top_dm_id, bind) <- tcInstanceMethodBody rigid_info
                           clas tyvars [this_dict] theta (mkTyVarTys tyvars)
                           Nothing sel_id
@@ -368,6 +363,7 @@ gives rise to the instance declarations
        instance C 1 where
          op Unit      = ...
 
+
 \begin{code}
 mkGenericDefMethBind :: Class -> [Type] -> Id -> Name -> TcM (LHsBind Name)
 mkGenericDefMethBind clas inst_tys sel_id meth_name
@@ -453,7 +449,7 @@ get_generics decl@(ClassDecl {tcdLName = class_name, tcdMeths = def_methods})
                              group `lengthExceeds` 1]
        get_uniq (tc,_) = getUnique tc
 
-    mapM (addErrTc . dupGenericInsts) bad_groups
+    mapM_ (addErrTc . dupGenericInsts) bad_groups
 
        -- Check that there is an InstInfo for each generic type constructor
     let
@@ -537,7 +533,7 @@ mkGenericInstance clas (hs_ty, binds) = do
        dfun_id    = mkDictFunId dfun_name tyvars inst_theta clas [inst_ty]
        ispec      = mkLocalInstance dfun_id overlap_flag
 
-    return (InstInfo { iSpec = ispec, iBinds = VanillaInst binds [] })
+    return (InstInfo { iSpec = ispec, iBinds = VanillaInst binds [] False })
 \end{code}