From: simonpj Date: Thu, 11 Aug 2005 08:22:11 +0000 (+0000) Subject: [project @ 2005-08-11 08:22:11 by simonpj] X-Git-Tag: Initial_conversion_from_CVS_complete~249 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=75069956eb32249e33977fbcaf224ace1cfd91e6;p=ghc-hetmet.git [project @ 2005-08-11 08:22:11 by simonpj] Fix bogon in reporting of duplicate sigs; make mod68 work again --- diff --git a/ghc/compiler/rename/RnBinds.lhs b/ghc/compiler/rename/RnBinds.lhs index 1b46454..3c8b4d8 100644 --- a/ghc/compiler/rename/RnBinds.lhs +++ b/ghc/compiler/rename/RnBinds.lhs @@ -300,6 +300,8 @@ rnValBinds trim (ValBindsIn mbinds sigs) ; let (binds', bind_dus) = depAnalBinds binds_w_dus + -- We do the check-sigs after renaming the bindings, + -- so that we have convenient access to the binders ; check_sigs (okBindSig (duDefs bind_dus)) sigs' ; return (ValBindsOut binds' sigs', @@ -309,8 +311,8 @@ rnValBinds trim (ValBindsIn mbinds sigs) --------------------- depAnalBinds :: Bag (LHsBind Name, [Name], Uses) -> ([(RecFlag, LHsBinds Name)], DefUses) --- Dependency analysis; this is important so that unused-binding --- reporting is accurate +-- Dependency analysis; this is important so that +-- unused-binding reporting is accurate depAnalBinds binds_w_dus = (map get_binds sccs, map get_du sccs) where @@ -499,11 +501,10 @@ check_sigs :: (LSig Name -> Bool) -> [LSig Name] -> RnM () check_sigs ok_sig sigs -- Check for (a) duplicate signatures -- (b) signatures for things not in this group - = do { mappM_ unknownSigErr sigs' - ; mappM_ dupSigDeclErr (findDupsEq eqHsSig sigs') } + = do { mappM_ unknownSigErr (filter bad sigs) + ; mappM_ dupSigDeclErr (findDupsEq eqHsSig sigs) } where -- Don't complain about an unbound name again - sigs' = filter bad sigs bad sig = not (ok_sig sig) && case sigName sig of Just n | isUnboundName n -> False