\begin{code}
module Desugar ( deSugar, deSugarExpr ) where
-#include "HsVersions.h"
-
import DynFlags
import StaticFlags
import HscTypes
import SrcLoc
import Maybes
import FastString
-import Pretty ( Doc )
import Coverage
+
import Data.IORef
\end{code}
tcg_fix_env = fix_env,
tcg_inst_env = inst_env,
tcg_fam_inst_env = fam_inst_env,
- tcg_deprecs = deprecs,
+ tcg_warns = warns,
tcg_binds = binds,
tcg_fords = fords,
tcg_rules = rules,
mg_dir_imps = imp_mods imports,
mg_rdr_env = rdr_env,
mg_fix_env = fix_env,
- mg_deprecs = deprecs,
+ mg_warns = warns,
mg_types = type_env,
mg_insts = insts,
mg_fam_insts = fam_insts,
| not opt_SccProfilingOn -- No profiling
= NoSccs
| opt_AutoSccsOnAllToplevs -- Add auto-scc on all top-level things
- = AddSccs mod (\_ -> True)
+ = AddSccs mod (\id -> not $ isDerivedOccName $ getOccName id)
+ -- See #1641. This is pretty yucky, but I can't see a better way
+ -- to identify compiler-generated Ids, and at least this should
+ -- catch them all.
| opt_AutoSccsOnExportedToplevs -- Only on exported things
= AddSccs mod (\id -> idName id `elemNameSet` exports)
| otherwise
= NoSccs
-
deSugarExpr :: HscEnv
-> Module -> GlobalRdrEnv -> TypeEnv
-> LHsExpr Id
is_exported | target == HscInterpreted = isExternalName
| otherwise = (`elemNameSet` exports)
-ppr_ds_rules :: [CoreRule] -> PprStyle -> Doc
+ppr_ds_rules :: [CoreRule] -> SDoc
ppr_ds_rules [] = empty
ppr_ds_rules rules
= text "" $$ text "-------------- DESUGARED RULES -----------------" $$
; return (Just rule)
} } }
where
- msg = hang (ptext SLIT("RULE left-hand side too complicated to desugar; ignored"))
+ msg = hang (ptext (sLit "RULE left-hand side too complicated to desugar; ignored"))
2 (ppr lhs)
\end{code}