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]
>
>

Reply via email to