{-# OPTIONS -#include "Linker.h" #-}
-----------------------------------------------------------------------------
--- $Id: InteractiveUI.hs,v 1.191 2005/02/25 13:07:10 simonpj Exp $
+-- $Id: InteractiveUI.hs,v 1.193 2005/03/08 09:47:43 simonpj Exp $
--
-- GHC Interactive User Interface
--
import HscTypes ( GhciMode(..) )
import IfaceSyn ( IfaceDecl(..), IfaceClassOp(..), IfaceConDecls(..),
IfaceConDecl(..), IfaceType,
- IfaceInst(..), pprIfaceDeclHead, pprParendIfaceType,
+ pprIfaceDeclHead, pprParendIfaceType,
pprIfaceForAllPart, pprIfaceType )
import FunDeps ( pprFundeps )
import DriverFlags
vcat (intersperse (text "") (map (showThing exts) stuff)))) }
showThing :: Bool -> GetInfoResult -> SDoc
-showThing exts (wanted_str, (thing, fixity, src_loc, insts))
+showThing exts (wanted_str, thing, fixity, src_loc, insts)
= vcat [ showWithLoc src_loc (showDecl exts want_name thing),
show_fixity fixity,
vcat (map show_inst insts)]
| fix == defaultFixity = empty
| otherwise = ppr fix <+> text wanted_str
- show_inst (iface_inst, loc)
- = showWithLoc loc (ptext SLIT("instance") <+> ppr (ifInstHead iface_inst))
+ show_inst (inst_ty, loc)
+ = showWithLoc loc (ptext SLIT("instance") <+> ppr inst_ty)
showWithLoc :: SrcLoc -> SDoc -> SDoc
showWithLoc loc doc
showDecl exts want_name (IfaceClass {ifCtxt = context, ifName = clas, ifTyVars = tyvars,
ifFDs = fds, ifSigs = sigs})
= hang (ptext SLIT("class") <+> pprIfaceDeclHead context clas tyvars
- <+> pprFundeps fds <+> ptext SLIT("where"))
+ <+> pprFundeps fds <+> opt_where)
2 (vcat (ppr_trim show_op sigs))
where
+ opt_where | null sigs = empty
+ | otherwise = ptext SLIT("where")
show_op (IfaceClassOp op dm ty)
| want_name clas || want_name op
= Just (ppr_bndr op <+> dcolon <+> showType exts ty)