On Sun Oct 31 16:38:58 2010, util wrote:
> On Rakudo Star 2010-10, this code works as expected, outputting "42\n"
> :
>     multi sub Bar ( ) { return 42 };
>     say Bar();
> This code should give the same output (and *does* on Pugs):
>     multi sub Bar (      ) { return 42   };
>     multi sub Bar (:$baz!) { return $baz };
>     say Bar();
> Instead, Rakudo dies on this error:
>     No applicable candidates found to dispatch to for 'Bar'. Available
> candidates are:
>     :()
>     :(Any :baz($baz)!)

Fixed:

17:07 < [Coke]> rakudo: multi sub Bar ( ) { return 42 }; multi sub Bar 
(:$baz!)
                { return $baz }; say Bar();
17:07 <+p6eval> rakudo 33f1cf: OUTPUT«42␤»

Closable with tests.


> IMHO, required named parameters should default to being part of the
> longname.
> In any case, the current behavior looks like a bug.
> 
> From http://irclog.perlgeek.de/perl6/2010-10-31#i_2956591
>     < Util> perl6: say Bar(); multi sub Bar ( ) { return 42 };
>     <+p6eval> pugs, rakudo 5f5bae: OUTPUT<<42NL>>
>     < Util> perl6: say Bar(); multi sub Bar ( ) { return 42 }; multi
> sub Bar (:$baz!) { return $baz };
>     <+p6eval> rakudo 5f5bae: OUTPUT<<No applicable candidates found to
> dispatch to for 'Bar'. Available candidates 
>               are:NL:()NL:(Any :baz($baz)!)NLNL  in main program body
> at line 22:/tmp/UGNiomLxSCNL>>
>     <+p6eval> ..pugs: OUTPUT<<42NL>>
>     < Util> In Rakudo, why is the second declaration interfering?
>     < masak> looks like a bug to me.
>     < masak> ...possibly reported already.
>     < sorear> Perl 6.0 is not required to support multiple dispatch
> with named parameters
>     < masak> but I thought Rakudo did.
>     < jnthn> No
>     < jnthn> Well, it doesn't consider them other than as constraints.
>     < jnthn> e.g. if one is required it's a constraint.
>     < Util> sorear: it is more than just a named parm; it is a
> *required* named parm.
>             Shouldn't that make it part of the dispatch?
>     < masak> apparently, it's difficult to do that in practice.
>     < jnthn> Rakudo already considered required named params as
> constraints.
>     < jnthn> Otherwise a bunch of our trait_mods would never work.
>     < jnthn> It even has an optimization for the
> single-required-named-param case. :-)
>     < jnthn> Util: Can you file a ticket?
>     < jnthn> That looks like a bug to me. :S
>     < Util> Will file rakudobug. Thanks, all!
>     < jnthn> Util++
>     < jnthn> But it turns out to be a silly thinko. :-)
>     < jnthn> Somewhere in that little file, perl6multisub.pmc :-)
>     < jnthn> masak: There's another one in RT that I think is distinct
> from this but may end up related in the end.
>     < masak> jnthn: ok. I didn't find anything about required nameds.
>     < jnthn> masak: I think it was about an argless candidate.
>     < jnthn> Or at least, that's the common dominator between these
> two.
> 


-- 
Will "Coke" Coleda

Reply via email to