- mod_avail_env = unitFM qual_mod avails
-
- add_name name_env avail = foldlRn add_one name_env (availNames avail)
-
- add_one :: NameEnv -> Name -> RnMG NameEnv
- add_one env name = add_to_env addOneToNameEnvRn env occ_name name
- where
- occ_name = nameOccName name
-
- add_to_env add_fn env occ thing | qual_imp && unqual_imp = both
- | qual_imp = qual_only
- | unqual_imp = unqual_only
- where
- unqual_only = add_fn env (Unqual occ) thing
- qual_only = add_fn env (Qual qual_mod occ) thing
- both = unqual_only `thenRn` \ env' ->
- add_fn env' (Qual qual_mod occ) thing
+ add_avail env avail = foldl add_name env (availNames avail)
+ add_name env name = env2
+ where
+ env1 | qual_imp = addOneToNameEnv env (Qual qual_mod occ) name
+ | otherwise = env
+ env2 | unqual_imp = addOneToNameEnv env1 (Unqual occ) name
+ | otherwise = env1
+ occ = nameOccName name
+
+ del_avail env avail = foldl delOneFromNameEnv env rdr_names
+ where
+ rdr_names = map (Unqual . nameOccName) (availNames avail)