On Sun May 27 20:48:46 2012, coke wrote:
> On Sun Jul 24 07:11:16 2011, masak wrote:
> > <masak> rakudo: role R { method foo { self.bar(42) }; method bar($x)
> {
> > say "OH HAI" } }; class C does R { method foo { self.R::foo } };
> > C.new.foo
> > <p6eval> rakudo 922500: OUTPUT«OH HAI␤»
> > <masak> rakudo: role R { method bar($x) {}; method foo {
> self.bar(42)
> > } }; class C does R { method foo { self.R::foo } }; C.new.foo
> > <p6eval> rakudo 922500: OUTPUT«Not enough positional parameters
> > passed; got 1 but expected 2␤ in 'bar' at line 22:/tmp/N060_2D3In␤
> in
> > 'C::foo' at line 22:/tmp/N060_2D3In␤  in main program body at line
> > 22:/tmp/N060_2D3In␤»
> > * masak submits rakudobug
> > <masak> only the order of the method declarations in the role
> differs.
> > <masak> rakudo: role R { method bar($x) { say "OH HAI" }; method foo
> {
> > self.bar(42) } }; R.new.foo
> > <p6eval> rakudo 922500: OUTPUT«OH HAI␤»
> > <masak> and it seems that, somehow, the role method delegation is
> > necessary to trigger it.
> 
> The second variant no longer errors. If you put a say $x in the bar
> method, it's printed out.

<masak> r: role R { method bar($x) { say $x }; method foo { self.bar(42) 
} }; class C does R { method foo { self.R::foo } }; C.new.foo
<p6eval> rakudo 0eea68: OUTPUT«42␤»

Confirmed.

> Closable?

When it has tests, yes. Marking testneeded.

Reply via email to