I don't think this isn't a bug. This is just how signature binding works:

my ($a,$b,$c) := [10,20,v => 30]
Too few positionals passed; expected 3 arguments but got 2
  in block <unit> at -e line 1

It makes sense to me because otherwise what would this mean?

sub s(@($a,$b,:$c)) { .... }

Pair elements have to become bound to named parameters in the sub-signature.

LL

On Thu, Feb 16, 2017 at 2:43 AM David Warring <perl6-bugs-follo...@perl.org>
wrote:

# New Ticket Created by  David Warring
# Please include the string:  [perl #130787]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org/Ticket/Display.html?id=130787 >


Consider:

sub s(@ ($a, $b, $c)) {
    note [$a,$b,$c].perl;
}
s([10,20,30]);
s([10,20,v=>30]); # dies

david@X346:~$ perl6 -v
This is Rakudo version 2017.01-207-gb51a550 built on MoarVM version
2017.01-45-g2b0739d
implementing Perl 6.c.
david@X346:~$ perl6 /tmp/tst.pl
[10, 20, 30]
Too few positionals passed; expected 3 arguments but got 2 in sub-signature
  in sub s at /tmp/tst.pl line 1
  in block <unit> at /tmp/tst.pl line 5

Reply via email to