bndrRuleAndUnfoldingVars ::Var -> VarSet
-- A 'let' can bind a type variable, and idRuleVars assumes
-- it's seeing an Id. This function tests first.
-bndrRuleAndUnfoldingVars v | isTyVar v = emptyVarSet
+bndrRuleAndUnfoldingVars v | isTyCoVar v = emptyVarSet
| otherwise = idRuleAndUnfoldingVars v
idRuleAndUnfoldingVars :: Id -> VarSet
idUnfoldingVars id
= case realIdUnfolding id of
CoreUnfolding { uf_tmpl = rhs, uf_src = src }
- | isInlineRuleSource src
- -> exprFreeVars rhs
- DFunUnfolding _ args -> exprsFreeVars args
- _ -> emptyVarSet
+ | isStableSource src
+ -> exprFreeVars rhs
+ DFunUnfolding _ _ args -> exprsFreeVars args
+ _ -> emptyVarSet
\end{code}