Skip to content

Commit 602bf23

Browse files
committed
Fix compilation of parameter lists with nameds and positional slurpies.
1 parent 1fbf703 commit 602bf23

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

src/QAST/Compiler.nqp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,30 @@ class QAST::Compiler is HLL::Compiler {
379379
$decls.push_pirop('.param pmc CALL_SIG :call_sig');
380380
}
381381
else {
382+
my @pos_params;
383+
my @named_params;
384+
my $slurpy_pos;
385+
my $slurpy_named;
382386
for $block.params {
387+
if $_.slurpy && $_.named {
388+
$slurpy_named := $_;
389+
}
390+
elsif $_.slurpy {
391+
$slurpy_pos := $_;
392+
}
393+
elsif $_.named {
394+
nqp::push(@named_params, $_);
395+
}
396+
else {
397+
nqp::push(@pos_params, $_);
398+
}
399+
}
400+
my @sorted_params;
401+
nqp::push(@sorted_params, $_) for @pos_params;
402+
nqp::push(@sorted_params, $slurpy_pos) if $slurpy_pos;
403+
nqp::push(@sorted_params, $_) for @named_params;
404+
nqp::push(@sorted_params, $slurpy_named) if $slurpy_named;
405+
for @sorted_params {
383406
my @param := ['.param'];
384407

385408
my $reg_type;

0 commit comments

Comments
 (0)