On Mon Nov 22 16:06:07 2010, masak wrote:
> <masak> rakudo: sub foo($a, %h?) { bar($a, %h) }; sub bar($a, %h?) {
> say "alive!" }; foo(42)
> <p6eval> rakudo : OUTPUT«Method 'HOW' not found for invocant of class
> 'Hash'␤  in 'bar' at line 1 [...]
> <masak> rakudo: sub foo($a, %h?) { say %h.WHAT }; foo(42)
> <p6eval> rakudo : OUTPUT«Method 'WHAT' not found for invocant of class
> 'Hash'␤  in 'foo' at line 22:/tmp/qK5WsYzzEI␤  in main program body at
> line 22:/tmp/qK5WsYzzEI␤»
> * masak submits rakudobug
> <colomon> masak++
> <masak> bug brought to you courtesy of a November being brought back
> from the Mostly Dead.
> 
> Further experimenting reveals that the %h coming in through &foo
> claims to be a Hash, but it has no methods at all, so you can't do
> anything with it, not even pass it to &bar.

<masak> ah, here's a workaround:
<masak> rakudo: sub foo($a, %h = {}) { bar($a, %h) }; sub bar($a, %h?) { say 
"alive!" }; foo(42)
<p6eval> rakudo : OUTPUT«alive!␤»
<masak> of course.
* masak adds that to the ticket

Reply via email to