- let (result, ds_warns) =
- initDs us global_val_env mod_name
- (dsProgram mod_name all_binds rules fo_decls)
- (ds_binds, ds_rules, _, _, _) = result
+ ; let (ds_result, ds_warns) = initDs dflags us lookup mod_name
+ (dsProgram mod_name all_binds rules fo_decls)
+
+ (ds_binds, ds_rules, foreign_stuff) = ds_result
+
+{-
+ addCoreBinds ls =
+ case core_binds of
+ [] -> ls
+ cs -> (Rec cs) : ls
+-}
+ mod_details = ModDetails { md_types = type_env,
+ md_insts = insts,
+ md_rules = ds_rules,
+ md_binds = ds_binds }
+
+ -- Display any warnings
+ ; doIfSet (not (isEmptyBag ds_warns))
+ (printErrs unqual (pprBagOfWarnings ds_warns))
+
+ -- Lint result if necessary
+ ; endPass dflags "Desugar" Opt_D_dump_ds ds_binds
+
+ -- Dump output
+ ; doIfSet (dopt Opt_D_dump_ds dflags)
+ (printDump (ppr_ds_rules ds_rules))
+
+ ; return (mod_details, foreign_stuff)
+ }