On Fri, 20 May 2016 15:32:02 -0700, sml...@gmail.com wrote:
> The .gist call in the following code hangs indefinitely:
> 
> my @a = 1..Inf;  foo @a;  sub foo(*@_) { say @_.gist };
> 
> It shouldn't hang, because checking the argument for laziness returns
> True, and indexing it does not hang either:
> 
> my @a = 1..Inf;  foo @a;  sub foo(*@_) { say @_.is-lazy };  # True
> my @a = 1..Inf;  foo @a;  sub foo(*@_) { say @_[42] };      # 43
> 
> And now, this is where it gets really weird: When calling `.is-lazy`
> or `.[]` on the parameter *first*, then a *subsequent* .gist on it no
> longer hangs:
> 
> my @a = 1..Inf;  foo @a;  sub foo(*@_) { say @_.is-lazy; say @_.gist
> };  # True␤[...]
> my @a = 1..Inf;  foo @a;  sub foo(*@_) { say @_[1];      say @_.gist
> };  # 1␤[...]
> 
> For comparison, here are some variations which also do not hang:
> 
> my @a = 1..Inf;  say @a.gist;  # [...]
> 
> my @a = 1..Inf;  foo @a;  sub foo(@_) { say @_.gist };  # [...]
> 
> my @a = 1..Inf;  foo @a;  sub foo(*@_ is raw) { say @_.gist };  # (1 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 64 65 66 67 68 69 70 71 72 73 74
> 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
> 98 99 100 ...)
> 
> 
> ---
> This is Rakudo version 2016.04-210-gc59e4dc built on MoarVM version
> 2016.05
> implementing Perl 6.c.


Thank you for the report. This is now fixed.

Fix:  https://github.com/rakudo/rakudo/commit/5e6b38789a
Test: https://github.com/perl6/roast/commit/5653ebb91b

Reply via email to