import DsUtils
import DsExpr () -- Forces DsExpr to be compiled; DsBinds only
-- depends on DsExpr.hi-boot.
-import Name ( Module, moduleString )
-import Bag ( isEmptyBag )
+import Module ( Module, moduleString )
+import Bag ( isEmptyBag, unionBags )
import CmdLineOpts ( opt_SccGroup, opt_SccProfilingOn )
import CoreLint ( beginPass, endPass )
-import ErrUtils ( doIfSet )
+import ErrUtils ( doIfSet, pprBagOfWarnings )
import Outputable
import UniqSupply ( splitUniqSupply, UniqSupply )
\end{code}
deSugar us global_val_env mod_name all_binds fo_decls = do
beginPass "Desugar"
-- Do desugaring
- let (core_prs, ds_warns) = initDs us1 global_val_env module_and_group
+ let (core_prs, ds_warns1) = initDs us1 global_val_env module_and_group
(dsMonoBinds opt_SccProfilingOn all_binds [])
ds_binds' = [Rec core_prs]
((fi_binds, fe_binds, h_code, c_code), ds_warns2) =
- initDs us3 global_val_env module_and_group (dsForeigns fo_decls)
+ initDs us3 global_val_env module_and_group (dsForeigns mod_name fo_decls)
ds_binds = fi_binds ++ ds_binds' ++ fe_binds
+ ds_warns = ds_warns1 `unionBags` ds_warns2
+
-- Display any warnings
doIfSet (not (isEmptyBag ds_warns))
- (printErrs (pprDsWarnings ds_warns))
+ (printErrs (pprBagOfWarnings ds_warns))
-- Lint result if necessary
endPass "Desugar" opt_D_dump_ds ds_binds