summaryrefslogtreecommitdiff
path: root/compiler/GHC/Core/FVs.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Core/FVs.hs')
-rw-r--r--compiler/GHC/Core/FVs.hs9
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler/GHC/Core/FVs.hs b/compiler/GHC/Core/FVs.hs
index 1fbf119172..17097bc0ef 100644
--- a/compiler/GHC/Core/FVs.hs
+++ b/compiler/GHC/Core/FVs.hs
@@ -625,7 +625,14 @@ dVarTypeTyCoVars :: Var -> DTyCoVarSet
dVarTypeTyCoVars var = fvDVarSet $ varTypeTyCoFVs var
varTypeTyCoFVs :: Var -> FV
-varTypeTyCoFVs var = tyCoFVsOfType (varType var)
+-- Find the free variables of a binder.
+-- In the case of ids, don't forget the multiplicity field!
+varTypeTyCoFVs var
+ = tyCoFVsOfType (varType var) `unionFV` mult_fvs
+ where
+ mult_fvs = case varMultMaybe var of
+ Just mult -> tyCoFVsOfType mult
+ Nothing -> emptyFV
idFreeVars :: Id -> VarSet
idFreeVars id = ASSERT( isId id) fvVarSet $ idFVs id