Status update: It looks like STD's opinion on this has changed: $ viv -c -e 'sub a (:$b($c)) {say $c}; a(:b<foo>)' ===SORRY!=== Subsignature not allowed after named parameter; please insert whitespace at (eval) line 1: ------> sub a (:$b⏏($c)) {say $c}; a(:b<foo>) Parse failed
Rakudo's error messages are different though: $ perl6-m -e 'sub a (:$b($c)) {say $c}; a(:b<foo>)' Too few positionals passed; expected 1 argument but got 0 in sub-signature of parameter $b in sub a at -e:1 in block <unit> at -e:1 $ perl6-p -e 'sub a (:$b($c)) {say $c}; a(:b<foo>)' Not enough positional parameters passed; got 0 but expected 1 in sub-signature of parameter $b in sub a at -e:1 in block <unit> at -e:1 $ perl6-j -e 'sub a (:$b($c)) {say $c}; a(:b<foo>)' Flattening named argument must have VMHash REPR in sub a at -e:1 in block <unit> at -e:1