X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FcoreSyn%2FCoreFVs.lhs;h=90d76196495b8122587ea16a8390d28d3b67cd4a;hb=372a8c47e84ee0de43e9e03d5becb8276a4e148c;hp=3ff583ee2006c02f5a2c3c1ab2f43f80b1be685c;hpb=6a944ae7fe1e8e2e456c68717188463263f8978f;p=ghc-hetmet.git diff --git a/compiler/coreSyn/CoreFVs.lhs b/compiler/coreSyn/CoreFVs.lhs index 3ff583e..90d7619 100644 --- a/compiler/coreSyn/CoreFVs.lhs +++ b/compiler/coreSyn/CoreFVs.lhs @@ -395,7 +395,7 @@ idFreeVars id = ASSERT( isId id) 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 @@ -421,10 +421,11 @@ idUnfoldingVars :: Id -> VarSet -- we might get out-of-scope variables idUnfoldingVars id = case realIdUnfolding id of - CoreUnfolding { uf_tmpl = rhs, uf_guidance = InlineRule {} } - -> exprFreeVars rhs - DFunUnfolding _ args -> exprsFreeVars args - _ -> emptyVarSet + CoreUnfolding { uf_tmpl = rhs, uf_src = src } + | isStableSource src + -> exprFreeVars rhs + DFunUnfolding _ _ args -> exprsFreeVars args + _ -> emptyVarSet \end{code}