on master help sign in
Succeed on programs that have no expressions
47d68d8Evan Czaplicki
compiler/Type/Constrain/Expression.hs+3−4
@@ -34,7 +34,8 @@ constrain env (L span expr) tipe =
34 case expr of
34 case expr of
35 Literal lit -> Literal.constrain env span lit tipe
35 Literal lit -> Literal.constrain env span lit tipe
36
36
37+ Var name | name == saveEnvName -> return (L span CSaveEnv)
37− Var name -> return (name <? tipe)
38+ | otherwise -> return (name <? tipe)
38
39
39 Range lo hi ->
40 Range lo hi ->
40 exists $ \x -> do
41 exists $ \x -> do
@@ -136,9 +137,7 @@ constrain env (L span expr) tipe =
136 return ("Graphics.Element.markdown" <? tipe)
137 return ("Graphics.Element.markdown" <? tipe)
137
138
138 Let defs body ->
139 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
142 (schemes, rqs, fqs, header, c2, c1) <-
141 (schemes, rqs, fqs, header, c2, c1) <-
143 Monad.foldM (constrainDef env)
142 Monad.foldM (constrainDef env)
144 ([], [], [], Map.empty, true, true)
143 ([], [], [], Map.empty, true, true)