Skip to content
Snippets Groups Projects
Commit 939fcd1e authored by sof's avatar sof
Browse files

[project @ 1997-11-29 20:33:18 by sof]

-fwarn-duplicate-exports: only warn about explicit duplicates
parent 91588680
No related merge requests found
...@@ -376,11 +376,13 @@ emptyAvailEnv = emptyFM ...@@ -376,11 +376,13 @@ emptyAvailEnv = emptyFM
plain duplicates or exported entity pairs that have different OccNames. plain duplicates or exported entity pairs that have different OccNames.
(c.f. 5.1.1 of Haskell 1.4 report.) (c.f. 5.1.1 of Haskell 1.4 report.)
-} -}
addAvailEnv ie env NotAvailable = returnRn env addAvailEnv :: Bool -> RdrNameIE -> AvailEnv -> AvailInfo -> RnM s d AvailEnv
addAvailEnv ie env (AvailTC _ []) = returnRn env addAvailEnv warn_dups ie env NotAvailable = returnRn env
addAvailEnv ie env avail addAvailEnv warn_dups ie env (AvailTC _ []) = returnRn env
= mapMaybeRn (addErrRn . availClashErr) () conflict `thenRn_` addAvailEnv warn_dups ie env avail
returnRn (addToFM_C add_avail env key elt) | warn_dups = mapMaybeRn (addErrRn . availClashErr) () conflict `thenRn_`
returnRn (addToFM_C add_avail env key elt)
| otherwise = returnRn (addToFM_C add_avail env key elt)
where where
key = nameOccName (availName avail) key = nameOccName (availName avail)
elt = (ie,avail,reports_on) elt = (ie,avail,reports_on)
...@@ -391,11 +393,11 @@ addAvailEnv ie env avail ...@@ -391,11 +393,11 @@ addAvailEnv ie env avail
conflict = conflictFM bad_avail env key elt conflict = conflictFM bad_avail env key elt
dup dup
| opt_WarnDuplicateExports = conflictFM dup_avail env key elt | warn_dups = conflictFM dup_avail env key elt
| otherwise = Nothing | otherwise = Nothing
addListToAvailEnv :: AvailEnv -> RdrNameIE -> [AvailInfo] -> RnM s d AvailEnv addListToAvailEnv :: AvailEnv -> RdrNameIE -> [AvailInfo] -> RnM s d AvailEnv
addListToAvailEnv env ie items = foldlRn (addAvailEnv ie) env items addListToAvailEnv env ie items = foldlRn (addAvailEnv False ie) env items
bad_avail (ie1,avail1,r1) (ie2,avail2,r2) bad_avail (ie1,avail1,r1) (ie2,avail2,r2)
= availName avail1 /= availName avail2 -- Same OccName, different Name = availName avail1 /= availName avail2 -- Same OccName, different Name
...@@ -466,7 +468,7 @@ exportsFromAvail this_mod (Just export_items) ...@@ -466,7 +468,7 @@ exportsFromAvail this_mod (Just export_items)
= failWithRn export_avail_env (exportItemErr ie export_avail) = failWithRn export_avail_env (exportItemErr ie export_avail)
| otherwise -- Phew! It's OK! | otherwise -- Phew! It's OK!
= addAvailEnv ie export_avail_env export_avail = addAvailEnv opt_WarnDuplicateExports ie export_avail_env export_avail
where where
maybe_in_scope = lookupNameEnv name_env (ieName ie) maybe_in_scope = lookupNameEnv name_env (ieName ie)
Just name = maybe_in_scope Just name = maybe_in_scope
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment