; tcg_env <- getGblEnv
; let gen_binds = mkGenericBinds (typeEnvTyCons (tcg_type_env tcg_env))
- -- Rename these extra bindings
- ; (rn_binds, _fvs1) <- rnTopMonoBinds (extra_binds `AndMonoBinds` gen_binds) []
+ -- Rename these extra bindings, discarding warnings about unused bindings etc
+ ; (rn_binds, _fvs1) <- discardWarnings $
+ rnTopMonoBinds (extra_binds `AndMonoBinds` gen_binds) []
; let all_binds = rn_binds `ThenBinds`
foldr ThenBinds EmptyBinds aux_binds_s
(warns, errs) <- readMutVar errs_var ;
writeMutVar errs_var (warns `unionBags` m_warns,
errs `unionBags` m_errs) }
+
+discardWarnings :: TcRn a -> TcRn a
+-- Ignore warnings inside the thing inside;
+-- used to ignore-unused-variable warnings inside derived code
+-- With -dppr-debug, the effects is switched off, so you can still see
+-- what warnings derived code would give
+discardWarnings thing_inside
+ = do { errs_var <- newMutVar emptyMessages
+ ; result <- setErrsVar errs_var thing_inside
+ ; (_warns, errs) <- readMutVar errs_var
+ ; addMessages (emptyBag, errs)
+ ; return result }
\end{code}