Fix several bugs related to finding free variables
[ghc-hetmet.git] / compiler / simplCore / SetLevels.lhs
index f8ab29d..5dbaec6 100644 (file)
@@ -290,6 +290,10 @@ lvlExpr ctxt_lvl env (_, AnnNote note expr)
   = lvlExpr ctxt_lvl env expr          `thenLvl` \ expr' ->
     returnLvl (Note note expr')
 
+lvlExpr ctxt_lvl env (_, AnnCast expr co)
+  = lvlExpr ctxt_lvl env expr          `thenLvl` \ expr' ->
+    returnLvl (Cast expr' co)
+
 -- We don't split adjacent lambdas.  That is, given
 --     \x y -> (x+1,y)
 -- we don't float to give 
@@ -767,8 +771,7 @@ absVarsOf dest_lvl (_, lvl_env, _, id_env) v
                        Just (abs_vars, _) -> abs_vars
                        Nothing            -> [v]
 
-    add_tyvars v | isId v    = v : varSetElems (idFreeTyVars v)
-                | otherwise = [v]
+    add_tyvars v = v : varSetElems (varTypeTyVars v)
 
        -- We are going to lambda-abstract, so nuke any IdInfo,
        -- and add the tyvars of the Id (if necessary)