From 4633d196983239acbb38465161475181d079da72 Mon Sep 17 00:00:00 2001 From: pmichaud Date: Wed, 2 Dec 2009 07:56:25 -0600 Subject: [PATCH] Allow leading & on subroutine declarations. --- src/NQP/Actions.pm | 2 +- src/NQP/Grammar.pm | 2 +- t/nqp/11-sub.t | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/NQP/Actions.pm b/src/NQP/Actions.pm index f8ced39..926e336 100644 --- a/src/NQP/Actions.pm +++ b/src/NQP/Actions.pm @@ -389,7 +389,7 @@ method routine_def($/) { $past.blocktype('declaration'); $past.control('return_pir'); if $ { - my $name := ~$[0].ast; + my $name := ~$[0] ~ $[0].ast; $past.name($name); if $*SCOPE ne 'our' { @BLOCK[0][0].push(PAST::Var.new( :name($name), :isdecl(1), diff --git a/src/NQP/Grammar.pm b/src/NQP/Grammar.pm index 9dacad9..a2fafa8 100644 --- a/src/NQP/Grammar.pm +++ b/src/NQP/Grammar.pm @@ -271,7 +271,7 @@ token routine_declarator:sym { } token routine_declarator:sym { } rule routine_def { - ? + [ $=['&'?] ]? <.newpad> [ '(' ')' || <.panic: 'Routine declaration requires a signature'> ] diff --git a/t/nqp/11-sub.t b/t/nqp/11-sub.t index 75ffa58..0caeab3 100644 --- a/t/nqp/11-sub.t +++ b/t/nqp/11-sub.t @@ -2,7 +2,7 @@ # check subs -say('1..11'); +say('1..12'); sub one ( ) { say("ok 1 # sub def and call"); @@ -74,3 +74,11 @@ sub eleven ($arg) { say("ok 11 # parameter with a trailing comma"); } eleven( 'dummy', ); + +sub &twelve() { + say("ok 12 # subroutine name with leading &"); +} + +&twelve(); + +