- explicitlyImported (LocalDef _ _) = True
- -- Report unused defns of local vars
- explicitlyImported (NonLocalDef (UserImport _ _ expl) _) = expl
- -- Report unused explicit imports
- explicitlyImported other = False
- -- Don't report others
-
-rnStats :: [RenamedHsDecl] -> RnMG ()
-rnStats imp_decls
+ filename = moduleNameUserString mod_name ++ ".imports"
+ ppr_mod_ie (mod_name, ies)
+ | mod_name == pRELUDE_Name
+ = empty
+ | otherwise
+ = ptext SLIT("import") <+> ppr mod_name <>
+ parens (fsep (punctuate comma (map ppr ies)))
+
+ to_ies (mod, avail_env) = mapRn to_ie (availEnvElts avail_env) `thenRn` \ ies ->
+ returnRn (moduleName mod, ies)
+
+ to_ie :: AvailInfo -> RnMG (IE Name)
+ to_ie (Avail n) = returnRn (IEVar n)
+ to_ie (AvailTC n [m]) = ASSERT( n==m )
+ returnRn (IEThingAbs n)
+ to_ie (AvailTC n ns) = getInterfaceExports (moduleName (nameModule n))
+ ImportBySystem `thenRn` \ (_, avails) ->
+ case [ms | AvailTC m ms <- avails, m == n] of
+ [ms] | all (`elem` ns) ms -> returnRn (IEThingAll n)
+ | otherwise -> returnRn (IEThingWith n (filter (/= n) ns))
+ other -> pprTrace "to_ie" (ppr n <+> ppr (nameModule n) <+> ppr other) $
+ returnRn (IEVar n)
+
+warnDeprec :: (Name, DeprecTxt) -> RnM d ()
+warnDeprec (name, txt)
+ = pushSrcLocRn (getSrcLoc name) $
+ addWarnRn $
+ sep [ text (occNameFlavour (nameOccName name)) <+> ppr name <+>
+ text "is deprecated:", nest 4 (ppr txt) ]
+
+
+rnDump :: [RenamedHsDecl] -- Renamed imported decls
+ -> [RenamedHsDecl] -- Renamed local decls
+ -> RnMG (IO ())
+rnDump imp_decls decls