Skip Menu |
Report information
Id: 131281
Status: new
Priority: 0/
Queue: perl6

Owner: Nobody
Requestors: bri [at] abrij.org
Cc:
AdminCc:

Severity: (no value)
Tag: (no value)
Platform: (no value)
Patch Status: (no value)
VM: (no value)



Subject: next on last iteration of loop injects Mu into return value and fouls termination test
Download (untitled) / with headers
text/plain 851b
There are some misbehaviors when a next clause is encountered on what would be the last iteration of a loop construct. An extra Mu is injected into the return value for that iteration, and the termination test may be bypassed. skids: m: my $b; (loop ($b = 4; $b; $b--) { next if $b == 1; $_ }).note (02:05:08 PM) camelia: rakudo-moar 6bb1b5: OUTPUT: «((Any) (Any) (Any) (Mu) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (A…» m: my $b; (loop ($b = 4; $b > 0; $b--) { next if $b == 1; $b }).note # version without escaping the termination condition (02:13:17 PM) camelia: rakudo-moar 6bb1b5: OUTPUT: «(4 3 2 (Mu))␤» (02:13:25 PM) skids: still have that Mu.
Download (untitled) / with headers
text/plain 1.3k
On Tue, 09 May 2017 11:17:23 -0700, bri@abrij.org wrote: Show quoted text
> > There are some misbehaviors when a next clause is encountered on what > would be the last iteration of a loop construct. An extra Mu is > injected into the return value for that iteration, and the termination > test may be bypassed. > > skids: m: my $b; (loop ($b = 4; $b; $b--) { next if $b == 1; $_ > }).note > (02:05:08 PM) camelia: rakudo-moar 6bb1b5: OUTPUT: «((Any) (Any) (Any) > (Mu) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) > (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) > (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) > (Any) (Any) (Any) (Any) (Any) (A…» > > m: my $b; (loop ($b = 4; $b > 0; $b--) { next if $b == 1; $b }).note # > version without escaping the termination condition > (02:13:17 PM) camelia: rakudo-moar 6bb1b5: OUTPUT: «(4 3 2 (Mu))␤» > (02:13:25 PM) skids: still have that Mu.
Also seems to affect other loop constructs. skids: Ooh. also affect while. (02:19:21 PM) skids: m: my $b =4; (while ($b--) { next if $b == 0; $b }).note (02:19:22 PM) camelia: rakudo-moar 6bb1b5: OUTPUT: «(3 2 1 (Mu) -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -6…»


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org