@@ -34,7 +34,8 @@ constrain env (L span expr) tipe =
3434 case expr of
3535 Literal lit -> Literal.constrain env span lit tipe
3636
37− Var name -> return (name <? tipe)
37+ Var name | name == saveEnvName -> return (L span CSaveEnv)
38+ | otherwise -> return (name <? tipe)
3839
3940 Range lo hi ->
4041 exists $ \x -> do
@@ -136,9 +137,7 @@ constrain env (L span expr) tipe =
136137 return ("Graphics.Element.markdown" <? tipe)
137138
138139 Let defs body ->
139− do c <- case body of
140− L _ (Var name) | name == saveEnvName -> return (L span CSaveEnv)
141− _ -> constrain env body tipe
140+ do c <- constrain env body tipe
142141 (schemes, rqs, fqs, header, c2, c1) <-
143142 Monad.foldM (constrainDef env)
144143 ([], [], [], Map.empty, true, true)