#include "HsVersions.h"
-import CmdLineOpts ( DynFlag(..), DynFlags )
+import CmdLineOpts ( DynFlag(..), DynFlags, dopt )
import HsSyn ( HsBinds(..), MonoBinds(..), HsDecl(..), HsExpr(..),
Stmt(..), InPat(..), HsMatchContext(..), RuleDecl(..),
isIfaceRuleDecl, nullBinds, andMonoBindList, mkSimpleMatch
import BasicTypes ( EP(..), Fixity, RecFlag(..) )
import SrcLoc ( noSrcLoc )
import Outputable
+import IO ( stdout )
import HscTypes ( PersistentCompilerState(..), HomeSymbolTable,
PackageTypeEnv, ModIface(..),
ModDetails(..), DFunId,
typecheckModule dflags pcs hst mod_iface unqual (syn_map, decls)
= do { maybe_tc_result <- typecheck dflags syn_map pcs hst unqual $
tcModule pcs hst get_fixity this_mod decls
- ; printTcDump dflags maybe_tc_result
+ ; printTcDump dflags unqual maybe_tc_result
; return maybe_tc_result }
where
this_mod = mi_module mod_iface
%************************************************************************
\begin{code}
-printTcDump dflags Nothing = return ()
-printTcDump dflags (Just (_, results))
- = do dumpIfSet_dyn_or dflags [Opt_D_dump_types, Opt_D_dump_tc]
- "Interface" (dump_tc_iface results)
+printTcDump dflags unqual Nothing = return ()
+printTcDump dflags unqual (Just (_, results))
+ = do if dopt Opt_D_dump_types dflags || dopt Opt_D_dump_tc dflags then
+ printForUser stdout unqual (dump_tc_iface dflags results)
+ else return ()
dumpIfSet_dyn dflags Opt_D_dump_tc
"Typechecked" (ppr (tc_binds results))
= dumpIfSet_dyn_or dflags [Opt_D_dump_types, Opt_D_dump_tc]
"Interface" (pprModDetails details)
-dump_tc_iface results
+dump_tc_iface dflags results
= vcat [pprModDetails (ModDetails {md_types = tc_env results,
md_insts = tc_insts results,
md_rules = [], md_binds = []}) ,
ppr_rules (tc_rules results),
- ppr_gen_tycons [tc | ATyCon tc <- nameEnvElts (tc_env results)]
+ if dopt Opt_Generics dflags then
+ ppr_gen_tycons [tc | ATyCon tc <- nameEnvElts (tc_env results)]
+ else
+ empty
]
ppr_rules [] = empty