Print the "skipping" messages at verbosity 2 again
[ghc-hetmet.git] / compiler / typecheck / TcRnDriver.lhs
index 08ea437..05777df 100644 (file)
@@ -62,6 +62,7 @@ import CoreSyn
 import ErrUtils
 import Id
 import Var
+import VarSet
 import Module
 import UniqFM
 import Name
@@ -687,12 +688,17 @@ tcTopSrcDecls boot_details
                -- We also typecheck any extra binds that came out 
                -- of the "deriving" process (deriv_binds)
         traceTc (text "Tc5") ;
-       (tc_val_binds, tcl_env) <- tcTopBinds (val_binds `plusHsValBinds` deriv_binds) ;
+       (tc_val_binds,   tcl_env) <- tcTopBinds val_binds ;
        setLclTypeEnv tcl_env   $ do {
 
+               -- Now GHC-generated derived bindings and generics
+               -- Do not generate warnings from compiler-generated code
+       (tc_deriv_binds, tcl_env) <- discardWarnings $ setOptM Opt_GlasgowExts $ 
+                                    tcTopBinds deriv_binds ;
+
                -- Second pass over class and instance declarations, 
         traceTc (text "Tc6") ;
-       (inst_binds, tcl_env) <- tcInstDecls2 tycl_decls inst_infos ;
+       (inst_binds, tcl_env)     <- setLclTypeEnv tcl_env $ tcInstDecls2 tycl_decls inst_infos ;
        showLIE (text "after instDecls2") ;
 
                -- Foreign exports
@@ -707,6 +713,7 @@ tcTopSrcDecls boot_details
         traceTc (text "Tc7a") ;
        tcg_env <- getGblEnv ;
        let { all_binds = tc_val_binds   `unionBags`
+                         tc_deriv_binds `unionBags`
                          inst_binds     `unionBags`
                          foe_binds  ;
 
@@ -884,9 +891,6 @@ tcRnStmt hsc_env ictxt rdr_stmt
                --     up to have tidy types
        global_ids = map globaliseAndTidy zonked_ids ;
     
-               -- Update the interactive context
-       type_env = ic_type_env ictxt ;
-
        bound_names = map idName global_ids ;
 
 {- ---------------------------------------------
@@ -908,15 +912,7 @@ tcRnStmt hsc_env ictxt rdr_stmt
 
 -------------------------------------------------- -}
 
-        old_bound_names = map idName (typeEnvIds (ic_type_env ictxt)) ;
-       shadowed = [ n | name <- bound_names,
-                         n <- old_bound_names,
-                         nameOccName name == nameOccName n ] ;
-
-       filtered_type_env = delListFromNameEnv type_env shadowed ;
-
-       new_type_env = extendTypeEnvWithIds filtered_type_env global_ids ;
-       new_ic = ictxt { ic_type_env = new_type_env }
+       new_ic = extendInteractiveContext ictxt global_ids emptyVarSet ;
     } ;
 
     dumpOptTcRn Opt_D_dump_tc