\begin{code}
module HsSyn (
- -- NB: don't reexport HsCore or HsPragmas;
+ -- NB: don't reexport HsCore
-- this module tells about "real Haskell"
module HsSyn,
module HsTypes,
Fixity, NewOrData,
- collectTopBinders, collectMonoBinders, collectLocatedMonoBinders
+ collectTopBinders, collectMonoBinders, collectLocatedMonoBinders,
+ hsModuleName, hsModuleImports
) where
#include "HsVersions.h"
import HsMatches
import HsPat
import HsTypes
-import HsCore
import BasicTypes ( Fixity, Version, NewOrData )
-- others:
+import Name ( NamedThing )
import Outputable
import SrcLoc ( SrcLoc )
import Bag
-import Module ( ModuleName, pprModuleName )
+import Module ( ModuleName )
\end{code}
All we actually declare here is the top-level structure for a module.
\end{code}
\begin{code}
-instance (Outputable name, Outputable pat)
+instance (NamedThing name, Outputable name, Outputable pat)
=> Outputable (HsModule name pat) where
ppr (HsModule name iface_version exports imports
Nothing -> pp_modname <+> rest
Just d -> vcat [ pp_modname, ppr d, rest ]
- pp_modname = ptext SLIT("module") <+> pprModuleName name
+ pp_modname = ptext SLIT("module") <+> ppr name
pp_nonnull [] = empty
pp_nonnull xs = vcat (map ppr xs)
+
+hsModuleName (HsModule mod_name _ _ _ _ _ _) = mod_name
+hsModuleImports (HsModule mod_name vers exports imports decls deprec src_loc) = imports
\end{code}