comparison src/corify.sml @ 1347:b106ca8200b1

postBody type
author Adam Chlipala <adam@chlipala.net>
date Sat, 18 Dec 2010 10:56:31 -0500
parents 6c2e565adca6
children 913d9c2f55c9
comparison
equal deleted inserted replaced
1346:faad7d01b200 1347:b106ca8200b1
1009 val (e, tf) = ListUtil.foldri (fn (i, t, (e, tf)) => 1009 val (e, tf) = ListUtil.foldri (fn (i, t, (e, tf)) =>
1010 ((L.EAbs ("x" ^ Int.toString i, 1010 ((L.EAbs ("x" ^ Int.toString i,
1011 t, tf, e), loc), 1011 t, tf, e), loc),
1012 (L.TFun (t, tf), loc))) 1012 (L.TFun (t, tf), loc)))
1013 ((L.EApp (ef, ea), loc), ranT) args 1013 ((L.EApp (ef, ea), loc), ranT) args
1014
1015 val expKind = if List.exists (fn t =>
1016 case corifyCon st t of
1017 (L'.CFfi ("Basis", "postBody"), _) => true
1018 | _ => false) args then
1019 L'.Extern L'.ReadCookieWrite
1020 else
1021 L'.Link
1014 in 1022 in
1015 ((L.DVal ("wrap_" ^ s, 0, tf, e), loc) :: wds, 1023 ((L.DVal ("wrap_" ^ s, 0, tf, e), loc) :: wds,
1016 (fn st => 1024 (fn st =>
1017 case #1 (corifyExp st (L.EModProj (en, [], "wrap_" ^ s), loc)) of 1025 case #1 (corifyExp st (L.EModProj (en, [], "wrap_" ^ s), loc)) of
1018 L'.ENamed n => (L'.DExport (L'.Link, n, false), loc) 1026 L'.ENamed n => (L'.DExport (expKind, n, false), loc)
1019 | _ => raise Fail "Corify: Value to export didn't corify properly") 1027 | _ => raise Fail "Corify: Value to export didn't corify properly")
1020 :: eds) 1028 :: eds)
1021 end 1029 end
1022 end 1030 end
1023 | _ => (wds, eds) 1031 | _ => (wds, eds)