This works now on rakudo.jvm. On rakudo.moar 'foo(|%h, a => "c")' doesn't give the correct result, yet:
$ perl6-j -e 'sub foo(*%p) { say %p.perl }; foo(a => "b", a => "c")' {:a("c")}<> $ perl6-j -e 'sub foo(*%p) { say %p.perl }; my %h = a => "b"; foo(|%h, a => "c")' {:a("c")}<> $ perl6-m -e 'sub foo(*%p) { say %p.perl }; foo(a => "b", a => "c")' {:a("c")}<> $ perl6-m -e 'sub foo(*%p) { say %p.perl }; my %h = a => "b"; foo(|%h, a => "c")' {:a("b")}<> I added two tests (the second fudged 'todo' for rakudo.moar) to S06-signature/named-parameters.t with commit https://github.com/perl6/roast/commit/42df59c101