import HsTypes ( hsTyVarName, replaceTyVarName )
import HscTypes ( Provenance(..), pprNameProvenance, hasBetterProv,
ImportReason(..), GlobalRdrEnv, AvailEnv,
- AvailInfo, GenAvailInfo(..), RdrAvailInfo )
+ AvailInfo, Avails, GenAvailInfo(..), RdrAvailInfo )
import RnMonad
import Name ( Name, NamedThing(..),
getSrcLoc,
availNames (Avail n) = [n]
availNames (AvailTC n ns) = ns
+-------------------------------------
addSysAvails :: AvailInfo -> [Name] -> AvailInfo
addSysAvails avail [] = avail
addSysAvails (AvailTC n ns) sys = AvailTC n (sys ++ ns)
+-------------------------------------
rdrAvailInfo :: AvailInfo -> RdrAvailInfo
-- Used when building the avails we are going to put in an interface file
-- We sort the components to reduce needless wobbling of interfaces
rdrAvailInfo (Avail n) = Avail (nameOccName n)
rdrAvailInfo (AvailTC n ns) = AvailTC (nameOccName n) (sortLt (<) (map nameOccName ns))
+-------------------------------------
filterAvail :: RdrNameIE -- Wanted
-> AvailInfo -- Available
-> Maybe AvailInfo -- Resulting available;
filterAvail ie avail = Nothing
+-------------------------------------
+sortAvails :: Avails -> Avails
+sortAvails avails = sortLt lt avails
+ where
+ a1 `lt` a2 = mod1 < mod2 ||
+ (mod1 == mod2 && occ1 < occ2)
+ where
+ name1 = availName a1
+ name2 = availName a2
+ mod1 = nameModule name1
+ mod2 = nameModule name2
+ occ1 = nameOccName name1
+ occ2 = nameOccName name2
+
+-------------------------------------
pprAvail :: AvailInfo -> SDoc
pprAvail (AvailTC n ns) = ppr n <> case filter (/= n) ns of
[] -> empty
%************************************************************************
\begin{code}
-warnUnusedModules :: [Module] -> RnM d ()
+warnUnusedModules :: [ModuleName] -> RnM d ()
warnUnusedModules mods
= doptRn Opt_WarnUnusedImports `thenRn` \ warn ->
if warn then mapRn_ (addWarnRn . unused_mod) mods
unused_mod m = vcat [ptext SLIT("Module") <+> quotes (ppr m) <+>
text "is imported, but nothing from it is used",
parens (ptext SLIT("except perhaps to re-export instances visible in") <+>
- quotes (ppr (moduleName m)))]
+ quotes (ppr m))]
warnUnusedImports :: [(Name,Provenance)] -> RnM d ()
warnUnusedImports names