Equality constraint solver is now externally pure
[ghc-hetmet.git] / compiler / coreSyn / CoreFVs.lhs
index d2d1383..e2eb3a2 100644 (file)
@@ -25,7 +25,7 @@ module CoreFVs (
        exprFreeNames, exprsFreeNames,
 
         -- * Free variables of Rules, Vars and Ids
-       idRuleVars, idFreeVars, varTypeTyVars, 
+       idRuleVars, idFreeVars, varTypeTyVars, varTypeTcTyVars, 
        ruleRhsFreeVars, rulesFreeVars,
        ruleLhsFreeNames, ruleLhsFreeIds, 
 
@@ -370,6 +370,13 @@ varTypeTyVars var
   | isLocalId var || isCoVar var = tyVarsOfType (idType var)
   | otherwise = emptyVarSet    -- Global Ids and non-coercion TyVars
 
+varTypeTcTyVars :: Var -> TyVarSet
+-- Find the type variables free in the type of the variable
+-- Remember, coercion variables can mention type variables...
+varTypeTcTyVars var
+  | isLocalId var || isCoVar var = tcTyVarsOfType (idType var)
+  | otherwise = emptyVarSet    -- Global Ids and non-coercion TyVars
+
 idFreeVars :: Id -> VarSet
 idFreeVars id = ASSERT( isId id) idRuleVars id `unionVarSet` varTypeTyVars id