develooper Front page | perl.perl6.compiler | Postings from February 2018

[perl #130748] [BUG] weird error when accessing an attribute from a"where" of another attribute

Thread Previous
From:
Zoffix Znet via RT
Date:
February 9, 2018 17:32
Subject:
[perl #130748] [BUG] weird error when accessing an attribute from a"where" of another attribute
Message ID:
rt-4.0.24-30529-1518197525-1048.130748-80-0@perl.org
On Wed, 08 Feb 2017 17:04:56 -0800, fernandocorrea@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


Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About