X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FhsSyn%2FHsSyn.lhs;h=20e339f1f5fced6444f7274aa04fe42d5f535ae0;hb=993ce43d3f3fb6bdb04cbc6d82babdd23355f7d7;hp=fb5162a73beba0877a5a7551e49b51e5839d9a9c;hpb=190f24892156953d73b55401d0467a6f1a88ce5d;p=ghc-hetmet.git diff --git a/compiler/hsSyn/HsSyn.lhs b/compiler/hsSyn/HsSyn.lhs index fb5162a..20e339f 100644 --- a/compiler/hsSyn/HsSyn.lhs +++ b/compiler/hsSyn/HsSyn.lhs @@ -1,4 +1,5 @@ % +% (c) The University of Glasgow 2006 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998 % \section{Haskell abstract syntax definition} @@ -45,6 +46,7 @@ import IfaceSyn ( IfaceBinding ) import Outputable import SrcLoc ( Located(..) ) import Module ( Module, ModuleName ) +import FastString \end{code} All we actually declare here is the top-level structure for a module. @@ -62,7 +64,6 @@ data HsModule name -- often empty, downstream. [LHsDecl name] -- Type, class, value, and interface signature decls (Maybe DeprecTxt) -- reason/explanation for deprecation of this module - (Maybe String) -- Haddock options, declared with the {-# DOCOPTIONS ... #-} pragma (HaddockModInfo name) -- Haddock module info (Maybe (HsDoc name)) -- Haddock module description @@ -97,10 +98,10 @@ instance Outputable Char where instance (OutputableBndr name) => Outputable (HsModule name) where - ppr (HsModule Nothing _ imports decls _ _ _ mbDoc) + ppr (HsModule Nothing _ imports decls _ _ mbDoc) = pp_mb mbDoc $$ pp_nonnull imports $$ pp_nonnull decls - ppr (HsModule (Just name) exports imports decls deprec opts _ mbDoc) + ppr (HsModule (Just name) exports imports decls deprec _ mbDoc) = vcat [ pp_mb mbDoc, case exports of @@ -120,9 +121,11 @@ instance (OutputableBndr name) pp_modname = ptext SLIT("module") <+> ppr name +pp_mb :: Outputable t => Maybe t -> SDoc pp_mb (Just x) = ppr x pp_mb Nothing = empty +pp_nonnull :: Outputable t => [t] -> SDoc pp_nonnull [] = empty pp_nonnull xs = vcat (map ppr xs) \end{code}