diff src/mono_util.sml @ 729:7c6b6c3c7b79

Some client-side error handling
author Adam Chlipala <adamc@hcoop.net>
date Thu, 16 Apr 2009 13:47:20 -0400
parents 4c5796512edc
children 796e42c93c48
line wrap: on
line diff
--- a/src/mono_util.sml	Thu Apr 16 13:00:40 2009 -0400
+++ b/src/mono_util.sml	Thu Apr 16 13:47:20 2009 -0400
@@ -325,15 +325,19 @@
                                 fn t' =>
                                    (EUnurlify (e', t'), loc)))
               | EJavaScript (m, e, NONE) =>
-                S.map2 (mfe ctx e,
-                     fn e' =>
-                        (EJavaScript (m, e', NONE), loc))
+                S.bind2 (mfmode ctx m,
+                         fn m' =>
+                            S.map2 (mfe ctx e,
+                                 fn e' =>
+                                    (EJavaScript (m', e', NONE), loc)))
               | EJavaScript (m, e, SOME e2) =>
-                S.bind2 (mfe ctx e,
-                     fn e' =>
-                        S.map2 (mfe ctx e2,
-                             fn e2' =>
-                                (EJavaScript (m, e', SOME e2'), loc)))
+                S.bind2 (mfmode ctx m,
+                         fn m' =>
+                            S.bind2 (mfe ctx e,
+                                  fn e' =>
+                                     S.map2 (mfe ctx e2,
+                                          fn e2' =>
+                                             (EJavaScript (m, e', SOME e2'), loc))))
 
               | ESignalReturn e =>
                 S.map2 (mfe ctx e,
@@ -372,6 +376,14 @@
                          S.map2 (mfe ctx ek,
                                fn ek' =>
                                   (ESleep (s', ek'), loc)))
+
+        and mfmode ctx mode =
+            case mode of
+                Attribute => S.return2 mode
+              | Script => S.return2 mode
+              | Source t =>
+                S.map2 (mft t,
+                     fn t' => Source t')
     in
         mfe
     end