diff options
-rw-r--r-- | lib/js/urweb.js | 8 | ||||
-rw-r--r-- | tests/activeBlock.ur | 10 |
2 files changed, 14 insertions, 4 deletions
diff --git a/lib/js/urweb.js b/lib/js/urweb.js index 56066d26..1beb63c3 100644 --- a/lib/js/urweb.js +++ b/lib/js/urweb.js @@ -1297,7 +1297,7 @@ function redirect(s) { function rc(prefix, uri, parse, k, needsSig) { if (!maySuspend) - er("May not 'rpc' in 'code' for <active>"); + er("May not 'rpc' in main thread of 'code' for <active>"); uri = cat(prefix, uri); uri = flattenLocal(uri); @@ -1478,7 +1478,7 @@ function listener() { function rv(chn, parse, k) { if (!maySuspend) - er("May not 'recv' in 'code' for <active>"); + er("May not 'recv' in main thread of 'code' for <active>"); if (chn == null) return; @@ -1508,13 +1508,13 @@ function rv(chn, parse, k) { function sl(ms, k) { if (!maySuspend) - er("May not 'sleep' in 'code' for <active>"); + er("May not 'sleep' in main thread of 'code' for <active>"); window.setTimeout(function() { k(null); }, ms); } function sp(e) { - execF(e, null); + window.setTimeout(function() { execF(e); }, 0); } diff --git a/tests/activeBlock.ur b/tests/activeBlock.ur new file mode 100644 index 00000000..5560edda --- /dev/null +++ b/tests/activeBlock.ur @@ -0,0 +1,10 @@ +fun main () : transaction page = return <xml><body> + <active code={s <- source ""; return <xml> + <dyn signal={s <- signal s; return (txt s)}/> + <button onclick={fn _ => set s "Hi!"}/> + </xml>}/> + + <active code={sleep 1; return <xml>Hi!</xml>}/> + + <active code={spawn (sleep 1; alert "Hi!"); return <xml>Success</xml>}/> +</body></xml> |