diff 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
line wrap: on
line diff
--- a/src/corify.sml	Thu Dec 16 18:40:49 2010 -0500
+++ b/src/corify.sml	Sat Dec 18 10:56:31 2010 -0500
@@ -1011,11 +1011,19 @@
                                                                                          t, tf, e), loc),
                                                                                 (L.TFun (t, tf), loc)))
                                                            ((L.EApp (ef, ea), loc), ranT) args
+
+                                             val expKind = if List.exists (fn t =>
+                                                                              case corifyCon st t of
+                                                                                  (L'.CFfi ("Basis", "postBody"), _) => true
+                                                                                | _ => false) args then
+                                                               L'.Extern L'.ReadCookieWrite
+                                                           else
+                                                               L'.Link
                                          in
                                              ((L.DVal ("wrap_" ^ s, 0, tf, e), loc) :: wds,
                                               (fn st =>
                                                   case #1 (corifyExp st (L.EModProj (en, [], "wrap_" ^ s), loc)) of
-                                                      L'.ENamed n => (L'.DExport (L'.Link, n, false), loc)
+                                                      L'.ENamed n => (L'.DExport (expKind, n, false), loc)
                                                     | _ => raise Fail "Corify: Value to export didn't corify properly")
                                               :: eds)
                                          end