summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-04-16 12:43:55 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-04-16 12:43:55 -0400
commitd52fbe487bb29a4a60dcca1d36e9dadc64917517 (patch)
tree3bdf9ae5748bc5a64a10a60633119f8270744818
parent237c9393b135b40e07f97b00699fd6cf9b48dac4 (diff)
Show XML
-rw-r--r--lib/ur/basis.urs2
-rw-r--r--src/monoize.sml6
-rw-r--r--tests/jserror.ur2
3 files changed, 9 insertions, 1 deletions
diff --git a/lib/ur/basis.urs b/lib/ur/basis.urs
index 2633d48e..173324f0 100644
--- a/lib/ur/basis.urs
+++ b/lib/ur/basis.urs
@@ -554,3 +554,5 @@ val error : t ::: Type -> xbody -> t
val onError : (xbody -> transaction unit) -> transaction unit
(* Client-side only *)
+
+val show_xml : ctx ::: {Unit} -> use ::: {Type} -> bind ::: {Type} -> show (xml ctx use bind)
diff --git a/src/monoize.sml b/src/monoize.sml
index 7523f2dd..b816b287 100644
--- a/src/monoize.sml
+++ b/src/monoize.sml
@@ -900,6 +900,12 @@ fun monoExp (env, st, fm) (all as (e, loc)) =
((L'.EFfi ("Basis", "boolToString"), loc), fm)
| L.EFfi ("Basis", "show_time") =>
((L'.EFfi ("Basis", "timeToString"), loc), fm)
+ | L.ECApp ((L.ECApp ((L.ECApp ((L.EFfi ("Basis", "show_xml"), _), _),_), _), _), _) =>
+ let
+ val s = (L'.TFfi ("Basis", "string"), loc)
+ in
+ ((L'.EAbs ("s", s, s, (L'.ERel 0, loc)), loc), fm)
+ end
| L.ECApp ((L.EFfi ("Basis", "mkShow"), _), t) =>
let
val t = monoType env t
diff --git a/tests/jserror.ur b/tests/jserror.ur
index ab2c955c..eccbe344 100644
--- a/tests/jserror.ur
+++ b/tests/jserror.ur
@@ -1,3 +1,3 @@
fun main () : transaction page = return <xml>
- <body onload={onError (fn s => alert "There was an error."); error <xml>Badder</xml>}/>
+ <body onload={onError (fn s => alert ("There was an error: " ^ show s)); error <xml>Badder</xml>}/>
</xml>