On Tue Mar 20 02:03:58 2012, masak wrote:
> <moritz> r: ENTER { say 1 }
> <p6eval> rakudo b2505b: OUTPUT«1»
> <moritz> r: KEEP { say 1 }
> <p6eval> rakudo b2505b: OUTPUT«1»
> <moritz> r: UNDO { say 1 }
> <p6eval> rakudo b2505b: ( no output )
>
> So far, so good. But:
>
> <moritz> r: UNDO { say 'undone' }; die 'foo'
> <p6eval> rakudo b2505b: ( no output )
> <moritz> that doesn't look right :/
> * masak submits rakudobug
> <masak> expected output: 'undonefoo at blablabla'
> <moritz> r: do { UNDO say "undone"; die "foo" }
> <p6eval> rakudo b2505b: OUTPUT«foo in block <anon> at
/tmp/zh8VsY8sVT:1»
> <masak> r: try { UNDO say "undone"; die "foo" }
> <p6eval> rakudo b2505b: OUTPUT«undone»
Also:
<moritz> n: do { UNDO say "undone"; die "foo" }
<p6eval> niecza v15-4-g1f35f89: OUTPUT«undoneUnhandled exception: foo
[...]
<masak> r: sub foo { UNDO say "undone"; fail }; foo; say "alive"
<p6eval> rakudo b2505b: OUTPUT«alive»