Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.gist hangs indefinitely on a lazy array passed to a slurpy paramater #5331

Closed
p6rt opened this issue May 20, 2016 · 5 comments
Closed

.gist hangs indefinitely on a lazy array passed to a slurpy paramater #5331

p6rt opened this issue May 20, 2016 · 5 comments

Comments

@p6rt
Copy link

p6rt commented May 20, 2016

Migrated from rt.perl.org#128201 (status was 'resolved')

Searchable as RT128201$

@p6rt
Copy link
Author

p6rt commented May 20, 2016

From @smls

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.

@p6rt
Copy link
Author

p6rt commented Jul 16, 2016

From @zoffixznet

♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁

Todo-fudged tests added in Raku/roast@1c35ad4727

🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥

@p6rt
Copy link
Author

p6rt commented Jul 16, 2016

The RT System itself - Status changed from 'new' to 'open'

@p6rt
Copy link
Author

p6rt commented May 5, 2017

From @zoffixznet

On Fri, 20 May 2016 15​:32​:02 -0700, smls75@​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​: rakudo/rakudo@5e6b38789a
Test​: Raku/roast@5653ebb91b

@p6rt p6rt closed this as completed May 5, 2017
@p6rt
Copy link
Author

p6rt commented May 5, 2017

@zoffixznet - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant