diff --git a/src/parser/actions.pm b/src/parser/actions.pm index bbbe852fa6a..a2b121f502a 100644 --- a/src/parser/actions.pm +++ b/src/parser/actions.pm @@ -1225,7 +1225,7 @@ method parameter($/) { $var.named( $sigil eq '%' ); } elsif $ eq ':' { # named - $var.named(~$); + $var.named(~$[0]); if $quant ne '!' { # required (optional is default) $var.viviself(container_itype($sigil)); } @@ -1302,9 +1302,9 @@ method param_var($/) { my $sigil := ~$; my $twigil := ~$[0]; if $sigil eq '&' { $sigil := ''; } - my $name := $sigil ~ $twigil ~ ~$; + my $name := $sigil ~ $twigil ~ ~$[0]; if $twigil eq '.' { - $name := $sigil ~ '!' ~ $; + $name := $sigil ~ '!' ~ $[0]; } elsif $twigil && $twigil ne '!' { $/.panic('Invalid twigil used in signature parameter.'); diff --git a/src/parser/grammar.pg b/src/parser/grammar.pg index 00b3ee8b624..e42f6fc3dc5 100644 --- a/src/parser/grammar.pg +++ b/src/parser/grammar.pg @@ -489,7 +489,10 @@ rule post_constraint { } token param_var { - ? [ || $=['/'] ] + ? [ + || + || $=['/'|'!'] + ]? {*} }