Well, the error for rakudo.parrot is gone: $ perl6-p -e 'my $i=0; while $i < 3 { LEAVE { last }; say $i++; }' 0
But there is still something wrong with the LEAVE phaser in a while statement. First, the above command has a different output on rakudo.moar and rakudo.jvm: $ perl6-m -e 'my $i=0; while $i < 3 { LEAVE { last }; say $i++; }' 0 1 2 Furthermore it looks like the statement in the LEAVE block isn't executed at all (but rakudo.parrot still breaks out of the while statement): $ perl6-p -e 'my $i=0; while $i < 3 { LEAVE { say "bye!" }; say $i++; }' 0 $ perl6-m -e 'my $i=0; while $i < 3 { LEAVE { say "bye!" }; say $i++; }' 0 1 2 Or even with 'redo': $ perl6-p -e 'my $i=0; while $i < 3 { LEAVE { redo }; say $i++; }' 0 $ perl6-m -e 'my $i=0; while $i < 3 { LEAVE { redo }; say $i++; }' 0 1 2