diff options
author | Adam Chlipala <adam@chlipala.net> | 2018-05-19 16:06:11 -0400 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2018-05-19 16:06:11 -0400 |
commit | 30edae2956d346e7df7ca27fcc77432e45cea99e (patch) | |
tree | 87a6be348abf6e6cffc5ded23c4dbea4df1aab61 | |
parent | e1ae0ce918c234cbb0b5a6ee72e0443bd04d4127 (diff) |
More defensive unurlification of enumerations (closes #117)
-rw-r--r-- | src/cjr_print.sml | 5 | ||||
-rw-r--r-- | tests/unurlify2.ur | 16 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/cjr_print.sml b/src/cjr_print.sml index 1fdb45d9..43265fb8 100644 --- a/src/cjr_print.sml +++ b/src/cjr_print.sml @@ -659,7 +659,10 @@ fun unurlify fromClient env (t, loc) = doEm rest, string ")"] in - doEm xncs + box [string "(request[0] == '/' ? ++request : request,", + newline, + doEm xncs, + string ")"] end | TDatatype (Option, i, xncs) => diff --git a/tests/unurlify2.ur b/tests/unurlify2.ur new file mode 100644 index 00000000..2e82928d --- /dev/null +++ b/tests/unurlify2.ur @@ -0,0 +1,16 @@ +datatype bugged = Nothing | Something of int +datatype myDt = One | Two +type myRecord = {Bugged: bugged + , MyDt : myDt} + +fun rpcTarget (t: myRecord) = return () + +val good = {Bugged = Something 4, MyDt = One} +val bad = {Bugged = Nothing, MyDt = One} + +fun main () : transaction page = return <xml> + <body> + <button onclick={fn _ => rpc (rpcTarget good)}>rpc with good</button> + <button onclick={fn _ => rpc (rpcTarget bad)}>rpc with bad</button> + </body> +</xml> |