diff src/corify.sml @ 1294:b4480a56cab7

Server-side 'onError'
author Adam Chlipala <adam@chlipala.net>
date Tue, 07 Sep 2010 08:28:07 -0400
parents c316ca3c9ec6
children 6c2e565adca6
line wrap: on
line diff
--- a/src/corify.sml	Sun Sep 05 14:00:57 2010 -0400
+++ b/src/corify.sml	Tue Sep 07 08:28:07 2010 -0400
@@ -1083,6 +1083,17 @@
       | L.DPolicy e1 =>
         ([(L'.DPolicy (corifyExp st e1), loc)], st)
 
+      | L.DOnError (m, ms, x) =>
+        let
+            val st = St.lookupStrById st m
+            val st = foldl St.lookupStrByName st ms
+        in
+            case St.lookupValByName st x of
+                St.ENormal n => ([(L'.DOnError n, loc)], st)
+              | _ => (ErrorMsg.errorAt loc "Wrong type of identifier for 'onError'";
+                      ([], st))
+        end
+
 and corifyStr mods ((str, _), st) =
     case str of
         L.StrConst ds =>
@@ -1141,7 +1152,8 @@
                              | L.DCookie (_, _, n', _) => Int.max (n, n')
                              | L.DStyle (_, _, n') => Int.max (n, n')
                              | L.DTask _ => n
-                             | L.DPolicy _ => n)
+                             | L.DPolicy _ => n
+                             | L.DOnError _ => n)
                        0 ds
 
 and maxNameStr (str, _) =