Skip Menu |
Report information
Id: 130748
Status: resolved
Priority: 0/
Queue: perl6

Owner: Nobody
Requestors: fernandocorrea [at] gmail.com
Cc:
AdminCc:

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



Date: Wed, 8 Feb 2017 23:04:34 -0200
To: rakudobug [...] perl.org
Subject: [BUG] weird error when accessing an attribute from a "where" of another attribute
From: Fernando Oliveira <fernandocorrea [...] gmail.com>
Download (untitled) / with headers
text/plain 1.5k
Download (untitled) / with headers
text/html 33.8k

Message body is not shown because it is too large.

RT-Send-CC: perl6-compiler [...] perl.org
Download (untitled) / with headers
text/plain 1.9k
On Wed, 08 Feb 2017 17:04:56 -0800, fernandocorrea@gmail.com wrote: Show quoted text
> I’m getting a "VMNull type object” error when I try to access an > attribute from the “where” of another attribute. > > https://irclog.perlgeek.de/perl6/2017-02-09#i_14068796 > > > <SmokeMachine> Fernando Corrêa de Oliveira m: class C { has Int $.a = > 42; has Str $.b where $!a }; say C.new <http://c.new/>: :b<42> # > should it die with this error? > 22:32 C<•camelia> rakudo-moar f85978: OUTPUT«Cannot look up attributes > in a VMNull type object␤ in block <unit> at <tmp> line 1␤␤» > 22:32 S<SmokeMachine> Fernando Corrêa de Oliveira m: class C { has Int > $.a = 42; has Str $.b where $!a }; say C.new <http://c.new/>: :42b > 22:32 C<•camelia> rakudo-moar f85978: OUTPUT«Type check failed in > assignment to $!b; expected <anon> but got Int (42)␤ in block <unit> > at <tmp> line 1␤␤» > 22:33 S<SmokeMachine> Fernando Corrêa de Oliveira m: class C { has Int > $.a = 42; has Str $.b where $!a }; say C.new.a > 22:33 C<•camelia> rakudo-moar f85978: OUTPUT«42␤» > 22:33 → pierrot joined ↔ pyrimidine popped in ↔ Ven nipped out > 22:47 S<SmokeMachine> Fernando Corrêa de Oliveira m: class C { has Int > $.a = 42; has Str $.b where $!a }; say C.new <http://c.new/>: :42a > :42b > 22:47 C<•camelia> rakudo-moar f85978: OUTPUT«Type check failed in > assignment to $!b; expected <anon> but got Int (42)␤ in block <unit> > at <tmp> line 1␤␤» > 22:47 S<SmokeMachine> Fernando Corrêa de Oliveira m: class C { has Int > $.a = 42; has Int $.b where $!a }; say C.new <http://c.new/>: :42a > :42b > 22:47 C<•camelia> rakudo-moar f85978: OUTPUT«Cannot look up attributes > in a VMNull type object␤ in block <unit> at <tmp> line 1␤␤»
Thank you for the report. This is now fixed. Specifically, it now throws a useful error, saying `self` is now available inside such a `where` clause. Fix: https://github.com/rakudo/rakudo/commit/1c894e418d Test: https://github.com/perl6/roast/commit/410a3982c5


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