import CoreUtils
import Rules
import CoreArity ( exprArity, exprBotStrictness_maybe )
-import Class ( classSelIds )
+import Class ( classAllSelIds )
import VarEnv
import VarSet
import Var
| isEnumerationTyCon tc -- For an enumeration, exposing the constructors
= True -- won't lead to the need for further exposure
-- (This includes data types with no constructors.)
- | isOpenTyCon tc -- Open type family
+ | isFamilyTyCon tc -- Open type family
= True
| otherwise -- Newtype, datatype
= map get_defn (concatMap implicit_ids (typeEnvElts type_env))
where
implicit_ids (ATyCon tc) = mapCatMaybes dataConWrapId_maybe (tyConDataCons tc)
- implicit_ids (AClass cls) = classSelIds cls
+ implicit_ids (AClass cls) = classAllSelIds cls
implicit_ids _ = []
get_defn :: Id -> CoreBind
= expose_all -- 'expose_all' says to expose all
-- unfoldings willy-nilly
- || isInlineRuleSource unf_source -- Always expose things whose
+ || isStableSource unf_source -- Always expose things whose
-- source is an inline rule
|| not (bottoming_fn -- No need to inline bottom functions
= DFunUnfolding ar con (map (tidyExpr tidy_env) ids)
tidyUnfolding tidy_env tidy_rhs strict_sig
unf@(CoreUnfolding { uf_tmpl = unf_rhs, uf_src = src })
- | isInlineRuleSource src
+ | isStableSource src
= unf { uf_tmpl = tidyExpr tidy_env unf_rhs, -- Preserves OccInfo
uf_src = tidyInl tidy_env src }
| otherwise