From cd74abeb527a974c9e52303de7770dc59e307e35 Mon Sep 17 00:00:00 2001 From: Simon Peyton Jones <simonpj@microsoft.com> Date: Wed, 15 Aug 2012 14:24:26 +0100 Subject: [PATCH] Fix Trac #7145, by recording uses of constructor "children" in export lists MERGED from commit 10377bba65de7463b909cc7cd5781a46620f305a --- compiler/rename/RnNames.lhs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/compiler/rename/RnNames.lhs b/compiler/rename/RnNames.lhs index 22d7554952ef..6901e624b3fa 100644 --- a/compiler/rename/RnNames.lhs +++ b/compiler/rename/RnNames.lhs @@ -1040,10 +1040,7 @@ exports_from_avail (Just rdr_items) rdr_env imports this_mod lookup_ie ie@(IEThingAll rdr) = do name <- lookupGlobalOccRn rdr let kids = findChildren kids_env name - mkKidRdrName = case isQual_maybe rdr of - Nothing -> mkRdrUnqual - Just (modName, _) -> mkRdrQual modName - addUsedRdrNames $ map (mkKidRdrName . nameOccName) kids + addUsedKids rdr kids warnDodgyExports <- woptM Opt_WarnDodgyExports when (null kids) $ if isTyConName name @@ -1066,6 +1063,7 @@ exports_from_avail (Just rdr_items) rdr_env imports this_mod then do addErr (exportItemErr ie) return (IEThingWith name [], AvailTC name [name]) else do let names = catMaybes mb_names + addUsedKids rdr names optTyFam <- xoptM Opt_TypeFamilies when (not optTyFam && any isTyConName names) $ addErr (typeItemErr ( head @@ -1085,6 +1083,14 @@ exports_from_avail (Just rdr_items) rdr_env imports this_mod lookup_doc_ie (IEDocNamed str) = return (IEDocNamed str) lookup_doc_ie _ = panic "lookup_doc_ie" -- Other cases covered earlier + -- In an export item M.T(A,B,C), we want to treat the uses of + -- A,B,C as if they were M.A, M.B, M.C + addUsedKids parent_rdr kid_names + = addUsedRdrNames $ map (mk_kid_rdr . nameOccName) kid_names + where + mk_kid_rdr = case isQual_maybe parent_rdr of + Nothing -> mkRdrUnqual + Just (modName, _) -> mkRdrQual modName isDoc :: IE RdrName -> Bool isDoc (IEDoc _) = True -- GitLab