X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FcoreSyn%2FCoreFVs.lhs;h=2fae6ac426c376c8c2134b2ff1985c2218f87767;hb=bdee32f9a91a9bb2403a469494674c909d1bdb76;hp=fb6017eabff03ab1357d933643f4fa518ee4916d;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git diff --git a/compiler/coreSyn/CoreFVs.lhs b/compiler/coreSyn/CoreFVs.lhs index fb6017e..2fae6ac 100644 --- a/compiler/coreSyn/CoreFVs.lhs +++ b/compiler/coreSyn/CoreFVs.lhs @@ -5,8 +5,9 @@ Taken quite directly from the Peyton Jones/Lester paper. \begin{code} module CoreFVs ( - exprFreeVars, -- CoreExpr -> VarSet -- Find all locally-defined free Ids or tyvars + exprFreeVars, -- CoreExpr -> VarSet -- Find all locally-defined free Ids or tyvars exprsFreeVars, -- [CoreExpr] -> VarSet + bindFreeVars, -- CoreBind -> VarSet exprSomeFreeVars, exprsSomeFreeVars, exprFreeNames, exprsFreeNames, @@ -59,6 +60,12 @@ exprFreeVars = exprSomeFreeVars isLocalVar exprsFreeVars :: [CoreExpr] -> VarSet exprsFreeVars = foldr (unionVarSet . exprFreeVars) emptyVarSet +bindFreeVars :: CoreBind -> VarSet +bindFreeVars (NonRec b r) = exprFreeVars r +bindFreeVars (Rec prs) = addBndrs (map fst prs) + (foldr (union . rhs_fvs) noVars prs) + isLocalVar emptyVarSet + exprSomeFreeVars :: InterestingVarFun -- Says which Vars are interesting -> CoreExpr -> VarSet