"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/Perl6/Actions.nqp" between
rakudo-2020.09.tar.gz and rakudo-2020.10.tar.gz

About: Rakudo is a compiler for the Raku Pogramming Language (formerly known as Perl 6).

Actions.nqp  (rakudo-2020.09):Actions.nqp  (rakudo-2020.10)
skipping to change at line 4027 skipping to change at line 4027
QAST::Var.new( :name('CURRENT_DISPATCH_CAPTURE'), :scope('lexica l'), :decl('var') ), QAST::Var.new( :name('CURRENT_DISPATCH_CAPTURE'), :scope('lexica l'), :decl('var') ),
QAST::Op.new( :op('savecapture') ) QAST::Op.new( :op('savecapture') )
)); ));
$block[0].push(QAST::Op.new( $block[0].push(QAST::Op.new(
:op('bind'), :op('bind'),
QAST::Var.new( :name('&*CURRENT_DISPATCHER'), :scope('lexical'), :decl('var') ), QAST::Var.new( :name('&*CURRENT_DISPATCHER'), :scope('lexical'), :decl('var') ),
QAST::Op.new( :op('getcodeobj'), QAST::Op.new( :op('curcode') ) ) QAST::Op.new( :op('getcodeobj'), QAST::Op.new( :op('curcode') ) )
)); ));
} }
# Set name. # Set name if we have one
if $<deflongname> { if $<deflongname> {
$block.name(~$<deflongname>.ast); my $name := ~$<deflongname>.ast;
$block.name($name);
# Check for 'is rw' parameters if MAIN
if $name eq 'MAIN' {
for $signature.params.FLATTENABLE_LIST -> $param {
$/.worry("'is rw' on parameters of 'sub MAIN' usually cannot
be satisfied.\nDid you mean 'is copy'?")
if $param.rw;
}
}
} }
# Finish code object, associating it with the routine body. # Finish code object, associating it with the routine body.
my $code := $*DECLARAND; my $code := $*DECLARAND;
$*W.attach_signature($code, $signature); $*W.attach_signature($code, $signature);
$*W.finish_code_object($code, $block, $*MULTINESS eq 'proto', :yada(is_y ada($/))); $*W.finish_code_object($code, $block, $*MULTINESS eq 'proto', :yada(is_y ada($/)));
# attach return type # attach return type
if $*OFTYPE { if $*OFTYPE {
my $sig := $code.signature; my $sig := $code.signature;
skipping to change at line 7084 skipping to change at line 7093
my $push-target := $target; my $push-target := $target;
$/.typed_panic: 'X::Syntax::Adverb', what => $/.typed_panic: 'X::Syntax::Adverb', what =>
nqp::can($target, 'name') && $target.name nqp::can($target, 'name') && $target.name
?? $target.name !! ~$/[0] ?? $target.name !! ~$/[0]
unless nqp::istype($target, QAST::Op) unless nqp::istype($target, QAST::Op)
&& ($target.op eq 'call' || $target.op eq 'callmethod') && ($target.op eq 'call' || $target.op eq 'callmethod')
|| $target.has_ann('fake_infix_adverb_target') || $target.has_ann('fake_infix_adverb_target')
&& ($push-target := $target.ann: 'fake_infix_adverb_target'); && ($push-target := $target.ann: 'fake_infix_adverb_target');
my $cpast := $<colonpair>.ast; my $cpast := $<colonpair>.ast;
$/.typed_panic: 'X::Syntax::Adverb', what => ~$/
unless try $cpast[1];
$cpast[2].named(compile_time_value_str($cpast[1], 'LHS of pair', $/)); $cpast[2].named(compile_time_value_str($cpast[1], 'LHS of pair', $/));
$push-target.push(WANTED($cpast[2],'EXPR/POSTFIX')); $push-target.push(WANTED($cpast[2],'EXPR/POSTFIX'));
if nqp::istype($past, QAST::Op) && $past.op eq 'hllize' { if nqp::istype($past, QAST::Op) && $past.op eq 'hllize' {
$past[0] := WANTED($target,'EXPR/POSTFIX'); $past[0] := WANTED($target,'EXPR/POSTFIX');
} }
else { else {
$past := WANTED($target,'EXPR/POSTFIX'); $past := WANTED($target,'EXPR/POSTFIX');
} }
 End of changes. 3 change blocks. 
2 lines changed or deleted 14 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)