Hello,
In the latest SVN pugs version (r854 on http://svn.perl.org/perl6/pugs), the following sub returns 24, not 42: sub foo { while (1) { return 42; } return 24; }
It seems the return statement jumps to the end of the while, instead of returning from the sub.
Here is a test for this behaviour:
is(eval('sub foo { while (1) { return 24; } return 42; } foo()'), 24, 'return in while');