diff options
-rw-r--r-- | lib/ur/basis.urs | 2 | ||||
-rw-r--r-- | src/monoize.sml | 6 | ||||
-rw-r--r-- | tests/jserror.ur | 2 |
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> |