On Mon Sep 20 06:51:49 2010, moritz wrote:
> 15:49 < jnthn> It may not be a bug.
> 15:49 < jnthn> rakudo: multi f ($ (Int :$value!)) { say "Int $value" };
> multi
> f( $ (Str :$value!)) { say "Str $value" }; f('a' => 3);
> f('a' =>
> 'foo')
> 15:49 <+p6eval> rakudo 523da4: OUTPUT«No applicable candidates found to
> dispatch to for 'f'. Available candidates are::(Any (Int
> :value($value)!)):(Any (Str :value($value)!)) in main
> program body at line 22:/tmp/DBB23kVew9»
> 15:50 < jnthn> OK, that looks more like one...
> 15:50 < jnthn> Thing is that it *can* match both signatures maybe if the
> parameter is optional
> 15:50 < jnthn> OTOH it should still fail the type check
> 15:50 < jnthn> So, hm
> 15:50 * moritz_ adds that to the ticket
> 15:50 < jnthn> rakudo: ('a' => 3).Capture.perl
> 15:50 <+p6eval> rakudo 523da4: ( no output )
> 15:50 < jnthn> rakudo: ('a' => 3).Capture.perl.say
> 15:50 <+p6eval> rakudo 523da4: OUTPUT«\()»
> 15:50 < jnthn> Oh.
> 15:51 < jnthn> rakudo: (1/2).Capture.perl.say
> 15:51 <+p6eval> rakudo 523da4: OUTPUT«\("numerator" => 1, "denominator"
> => 2)»
> 15:51 < jnthn> OK, pair capture coercion is FAIL
Recent IRC chat led to:
10:33 < jnthn> nom: multi f ((Int :$value, *%)) { say "Int $value" }; multi
f((Str :$value, *%)) { say "Str $value" }; f('a' => 3); f('a' =>
'foo')
10:33 <+p6eval> nom e17c13: OUTPUT«Int 3Str foo»
10:33 < jnthn> [Coke]: The code in the ticket would need to be the above to
work; note the extra *%
10:34 < [Coke]> jnthn: so, given that, we can reject the ticket? ;)
10:35 < jnthn> [Coke]: I'd consider it fixed
10:35 < [Coke]> jnthn: needs test, you think?
10:35 < jnthn> [Coke]: It gave the wrong error before, now it gives the right
one
10:36 < jnthn> [Coke]: I can blieve we need a test for the correct version of
it.
So, Closable with tests.
--
Will "Coke" Coleda