From 75069956eb32249e33977fbcaf224ace1cfd91e6 Mon Sep 17 00:00:00 2001 From: simonpj Date: Thu, 11 Aug 2005 08:22:11 +0000 Subject: [PATCH] [project @ 2005-08-11 08:22:11 by simonpj] Fix bogon in reporting of duplicate sigs; make mod68 work again --- ghc/compiler/rename/RnBinds.lhs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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 -- 1.7.10.4