[project @ 2000-11-15 17:07:34 by simonpj]
[ghc-hetmet.git] / ghc / compiler / deSugar / Desugar.lhs
index 70bec84..49f8939 100644 (file)
@@ -24,13 +24,14 @@ import DsForeign    ( dsForeigns )
 import DsExpr          ()      -- Forces DsExpr to be compiled; DsBinds only
                                -- depends on DsExpr.hi-boot.
 import Module          ( Module )
+import Id              ( Id )
 import VarEnv
 import VarSet
 import Bag             ( isEmptyBag )
-import CoreLint                ( beginPass, endPass )
+import CoreLint                ( showPass, endPass )
 import ErrUtils                ( doIfSet, pprBagOfWarnings )
 import Outputable
-import UniqSupply      ( UniqSupply )
+import UniqSupply      ( mkSplitUniqSupply )
 import HscTypes                ( HomeSymbolTable )
 \end{code}
 
@@ -45,37 +46,41 @@ start.
 
 \begin{code}
 deSugar :: DynFlags
-       -> Module 
-       -> UniqSupply
+       -> Module -> PrintUnqualified
        -> HomeSymbolTable
         -> TcResults
        -> IO ([CoreBind], [(Id,CoreRule)], SDoc, SDoc, [CoreBndr])
 
-deSugar dflags mod_name us hst
+deSugar dflags mod_name unqual hst
         (TcResults {tc_env   = global_val_env,
                    tc_pcs   = pcs,
                    tc_binds = all_binds,
                    tc_rules = rules,
                    tc_fords = fo_decls})
-  = do
-       beginPass dflags "Desugar"
+  = do { showPass dflags "Desugar"
+       ; us <- mkSplitUniqSupply 'd'
+
        -- Do desugaring
-       let (result, ds_warns) = 
-               initDs dflags us (hst,pcs,global_val_env) mod_name
-                       (dsProgram mod_name all_binds rules fo_decls)    
-           (ds_binds, ds_rules, _, _, _) = result
+       ; let (result, ds_warns) = initDs dflags us (hst,pcs,global_val_env) mod_name
+                                         (dsProgram mod_name all_binds rules fo_decls)    
+             (ds_binds, ds_rules, _, _, _) = result
+
+       -- Display any warnings
+        ; doIfSet (not (isEmptyBag ds_warns))
+                 (printErrs unqual (pprBagOfWarnings ds_warns))
 
-        -- Display any warnings
-        doIfSet (not (isEmptyBag ds_warns))
-               (printErrs (pprBagOfWarnings ds_warns))
+       -- Lint result if necessary
+        ; let do_dump_ds = dopt Opt_D_dump_ds dflags
+        ; endPass dflags "Desugar" do_dump_ds ds_binds
 
-        -- Lint result if necessary
-        let do_dump_ds = dopt Opt_D_dump_ds dflags
-        endPass dflags "Desugar" do_dump_ds ds_binds
+       -- Dump output
+       ; doIfSet do_dump_ds (printDump (ppr_ds_rules ds_rules))
 
-       doIfSet do_dump_ds (printDump (ppr_ds_rules ds_rules))
+        ; return result
+       }
 
-        return result
+-- deSugarExpr dflags unqual hst tc_expr
+--  = do       {
 
 dsProgram mod_name all_binds rules fo_decls
   = dsMonoBinds auto_scc all_binds []  `thenDs` \ core_prs ->