On Mon Oct 27 21:55:46 2014, pmichaud wrote: > This is a reminder/placeholder ticket for a bug I found tonight while > researching GLR-related topics. A "for" loop executed in sink context > isn't executing its block in sink context. From #perl6: > > 04:50 <pmichaud> m: class Sinker { method sink() { say "Blub" } }; > my $i = 0; while $i < 5 { $i++; Sinker.new(); }; 1 > 04:50 <camelia> rakudo-moar 315ec6: OUTPUT«BlubBlubBlubBlubBlub» > 04:50 <pmichaud> m: class Sinker { method sink() { say "Blub" } }; > for ^5 { Sinker.new(); }; 1 > 04:50 <camelia> rakudo-moar 315ec6: ( no output ) > > Earlier in the conversation: > > 00:38 <pmichaud> ...which one is "correct"? (post-GLR) > 00:41 <pmichaud> i.e., does a loop executed in sink context execute > its body in sink context? > 03:16 <TimToady> pmichaud: why would a loop in sink context ever want > a value from its loop body? > 03:16 <TimToady> I'm a bit surprised the 2nd one isn't sunk already > 03:21 <TimToady> well, not really, given what I know about internals > :) > 04:39 <pmichaud> TimToady: I'm not surprised the second one isn't sunk > already; sink context in Rakudo is (still) somewhat inconsistently > handled. > 04:40 <pmichaud> Implementors sometimes remembered to throw away the > values, but forgot to tell the values they were being thrown away. > 04:41 <pmichaud> anyway, I'll be looking at fixing that shortly > > The bug will likely be taken care of as part of the GLR; this ticket > is to remind us that we need a test for it. :) > > Pm
behavior updated, consistent currently in nom and glr. 15:11 < [Coke]> m: class Sinker { method sink() { say "Blub" } }; my $i = 0; while $i < 5 { $i++; Sinker.new(); }; 1 15:11 <+camelia> rakudo-moar 6a1879: OUTPUT«WARNINGS:Useless use of constant integer 1 in sink context (line 1)BlubBlubBlubBlubBlub» 15:11 < GLRelia> rakudo-moar a977dc: OUTPUT«WARNINGS:Useless use of constant integer 1 in sink context (line 1)BlubBlubBlubBlubBlub» 15:11 < [Coke]> m: class Sinker { method sink() { say "Blub" } }; for ^5 { Sinker.new(); }; 1 15:11 <+camelia> rakudo-moar 6a1879: OUTPUT«WARNINGS:Useless use of constant integer 1 in sink context (line 1)» 15:11 < GLRelia> rakudo-moar a977dc: OUTPUT«WARNINGS:Useless use of constant integer 1 in sink context (line 1)» -- Will "Coke" Coleda