X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FhsSyn%2FHsImpExp.lhs;fp=ghc%2Fcompiler%2FhsSyn%2FHsImpExp.lhs;h=0000000000000000000000000000000000000000;hb=0065d5ab628975892cea1ec7303f968c3338cbe1;hp=220afb7499c6b72bb6d6a8f4d7222e10de39f5e0;hpb=28a464a75e14cece5db40f2765a29348273ff2d2;p=ghc-hetmet.git diff --git a/ghc/compiler/hsSyn/HsImpExp.lhs b/ghc/compiler/hsSyn/HsImpExp.lhs deleted file mode 100644 index 220afb7..0000000 --- a/ghc/compiler/hsSyn/HsImpExp.lhs +++ /dev/null @@ -1,125 +0,0 @@ -% -% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998 -% -\section[HsImpExp]{Abstract syntax: imports, exports, interfaces} - -\begin{code} -module HsImpExp where - -#include "HsVersions.h" - -import Module ( Module ) -import Outputable -import FastString -import SrcLoc ( Located(..) ) -import Char ( isAlpha ) -\end{code} - -%************************************************************************ -%* * -\subsection{Import and export declaration lists} -%* * -%************************************************************************ - -One per \tr{import} declaration in a module. -\begin{code} -type LImportDecl name = Located (ImportDecl name) - -data ImportDecl name - = ImportDecl (Located Module) -- module name - Bool -- True <=> {-# SOURCE #-} import - Bool -- True => qualified - (Maybe Module) -- as Module - (Maybe (Bool, [LIE name])) -- (True => hiding, names) -\end{code} - -\begin{code} -instance (Outputable name) => Outputable (ImportDecl name) where - ppr (ImportDecl mod from qual as spec) - = hang (hsep [ptext SLIT("import"), ppr_imp from, - pp_qual qual, ppr mod, pp_as as]) - 4 (pp_spec spec) - where - pp_qual False = empty - pp_qual True = ptext SLIT("qualified") - - pp_as Nothing = empty - pp_as (Just a) = ptext SLIT("as ") <+> ppr a - - ppr_imp True = ptext SLIT("{-# SOURCE #-}") - ppr_imp False = empty - - pp_spec Nothing = empty - pp_spec (Just (False, spec)) - = parens (interpp'SP spec) - pp_spec (Just (True, spec)) - = ptext SLIT("hiding") <+> parens (interpp'SP spec) - -ideclName (ImportDecl mod_nm _ _ _ _) = mod_nm -\end{code} - -%************************************************************************ -%* * -\subsection{Imported and exported entities} -%* * -%************************************************************************ - -\begin{code} -type LIE name = Located (IE name) - -data IE name - = IEVar name - | IEThingAbs name -- Class/Type (can't tell) - | IEThingAll name -- Class/Type plus all methods/constructors - | IEThingWith name [name] -- Class/Type plus some methods/constructors - | IEModuleContents Module -- (Export Only) -\end{code} - -\begin{code} -ieName :: IE name -> name -ieName (IEVar n) = n -ieName (IEThingAbs n) = n -ieName (IEThingWith n _) = n -ieName (IEThingAll n) = n - -ieNames :: IE a -> [a] -ieNames (IEVar n ) = [n] -ieNames (IEThingAbs n ) = [n] -ieNames (IEThingAll n ) = [n] -ieNames (IEThingWith n ns) = n:ns -ieNames (IEModuleContents _ ) = [] -\end{code} - -\begin{code} -instance (Outputable name) => Outputable (IE name) where - ppr (IEVar var) = pprHsVar var - ppr (IEThingAbs thing) = ppr thing - ppr (IEThingAll thing) = hcat [ppr thing, text "(..)"] - ppr (IEThingWith thing withs) - = ppr thing <> parens (fsep (punctuate comma (map pprHsVar withs))) - ppr (IEModuleContents mod) - = ptext SLIT("module") <+> ppr mod -\end{code} - -\begin{code} -pprHsVar :: Outputable name => name -> SDoc -pprHsVar v | isOperator ppr_v = parens ppr_v - | otherwise = ppr_v - where - ppr_v = ppr v - -isOperator :: SDoc -> Bool -isOperator ppr_v - = case showSDocUnqual ppr_v of - ('(':s) -> False -- (), (,) etc - ('[':s) -> False -- [] - ('$':c:s) -> not (isAlpha c) -- Don't treat $d as an operator - (':':c:s) -> not (isAlpha c) -- Don't treat :T as an operator - ('_':s) -> False -- Not an operator - (c:s) -> not (isAlpha c) -- Starts with non-alpha - other -> False - -- We use (showSDoc (ppr v)), rather than isSymOcc (getOccName v) simply so - -- that we don't need NamedThing in the context of all these functions. - -- Gruesome, but simple. -\end{code} -