X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Frename%2FRnNames.lhs;h=f1c799233cd5ca6edece0c1e5c0807bb4fcaa28e;hb=d73de65b602088d2eec20ec524a38c3f577d9b05;hp=3e440e950c30ec1214375bc9fe5e4ca317c7eab3;hpb=d05528b08dd9ef1043f4b24ecefbf0ec092048ed;p=ghc-hetmet.git diff --git a/ghc/compiler/rename/RnNames.lhs b/ghc/compiler/rename/RnNames.lhs index 3e440e9..f1c7992 100644 --- a/ghc/compiler/rename/RnNames.lhs +++ b/ghc/compiler/rename/RnNames.lhs @@ -29,7 +29,7 @@ import Module ( Module, ModuleName, moduleName, moduleNameUserString, unitModuleEnvByName, lookupModuleEnvByName, moduleEnvElts ) -import Name ( Name, nameSrcLoc, nameOccName, nameModule ) +import Name ( Name, nameSrcLoc, nameOccName, nameModule, isExternalName ) import NameSet import NameEnv import OccName ( OccName, dataName, isTcOcc ) @@ -615,9 +615,15 @@ reportUnusedNames gbl_env used_names (defined_and_used, defined_but_not_used) = partition used defined_names used gre = gre_name gre `elemNameSet` really_used_names - -- Filter out the ones only defined implicitly + -- Filter out the ones that are + -- (a) defined in this module, and + -- (b) not defined by a 'deriving' clause + -- The latter have an Internal Name, so we can filter them out easily bad_locals :: [GlobalRdrElt] - bad_locals = filter isLocalGRE defined_but_not_used + bad_locals = filter is_bad defined_but_not_used + + is_bad :: GlobalRdrElt -> Bool + is_bad gre = isLocalGRE gre && isExternalName (gre_name gre) bad_imports :: [GlobalRdrElt] bad_imports = filter bad_imp defined_but_not_used