Hi,
I have seen similar weirdness and added a couple of tests over the
weekend, whilst simultaneously forgetting to mention it on IRC:
class Foo {
method noargs () { 42 }
method callsmethod2 { .noargs(); }
}
$val = $foo.callsmethod2()
dies. (t/oo/method/instance.t)
It appears to be something to do with whether the methods are declared
with brackets (method callsmethod2 versus method callsmethod2()).
Maybe this is related.
Cheers
Ade
Alex Gutteridge wrote:
> Hi,
>
> Just playing around with pugs 6.2.5 OO and couldn't work this out:
>
> class Bowl {
> has $.fish is rw;
> has $.water is rw;
> }
> class Fish {
> has $.bowl is rw;
> has $.eyes is rw;
> }
>
> my $bowl = Bowl.new;
> my $blinky = Fish.new;
>
> $bowl.water = 'Murky';
> $blinky.eyes = 3;
>
> $bowl.fish = $blinky;
> $blinky.bowl = $bowl;
>
> $bowl.water.say;
> $blinky.eyes.say;
>
> my $blinkys_bowl = $blinky.bowl;
> $blinkys_bowl.water.say;
>
> my $fishy = $bowl.fish;
> $fishy.eyes.say;
>
> $bowl.fish.eyes.say;
> $blinky.bowl.water.say;
>
> The output I get:
>
> Murky
> 3
> Murky
> 3
> *** No compatible subroutine found: "&eyes"
> at Desktop/testOO.pl line 27, column 1-20
>
> Am I missing something in the syntax when I try to chain the
> attribute methods? Or is this not implemented in pugs yet?
>
> Thanks for any help.
>
> Alex Gutteridge
>
> EBI
> Wellcome Trust Genome Campus
> Hinxton
> Cambs CB10 1SD
> UK
>
> Tel: 01223 492546
> Email: [EMAIL PROTECTED]
>
>