diff --git a/src/parser/actions.pm b/src/parser/actions.pm index fb2ddb701c2..3f92bddf12b 100644 --- a/src/parser/actions.pm +++ b/src/parser/actions.pm @@ -400,6 +400,14 @@ method use_statement($/) { $tags.pasttype('call'); } + ## Handle versioning + my $ver; + if $ { + $ver := PAST::Op.new( :pasttype('call'), :name('hash') ); + for $ { + $ver.push( $_.ast ); + } + } ## Create a loadinit node so the use module is loaded ## when this module is loaded... our @?BLOCK; @@ -413,6 +421,10 @@ method use_statement($/) { $tags.named('tags'); $use_call.push($tags); } + if $ver { + $ver.named('ver'); + $use_call.push($ver); + } @?BLOCK[0].loadinit().push($use_call); ## ...and load it immediately to get its BEGIN semantics and diff --git a/src/parser/grammar.pg b/src/parser/grammar.pg index 996c89e16bb..e8164b117b5 100644 --- a/src/parser/grammar.pg +++ b/src/parser/grammar.pg @@ -342,7 +342,7 @@ rule for_statement { } rule use_statement { - $=[use] + $=[use] * ? {*} }