On Wed, 08 Feb 2017 17:04:56 -0800, fernandocor...@gmail.com wrote: > 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