Skip to content

Commit

Permalink
Use new parameter and signature constructors to do some cleanups.
Browse files Browse the repository at this point in the history
  • Loading branch information
jnthn committed May 27, 2010
1 parent 06a4af5 commit edb448f
Showing 1 changed file with 17 additions and 28 deletions.
45 changes: 17 additions & 28 deletions src/Perl6/Actions.pm
Expand Up @@ -196,12 +196,10 @@ method pblock($/) {
$signature := Perl6::Compiler::Signature.new();
unless $block.symbol('$_') {
if $*IMPLICIT {
my $parameter := Perl6::Compiler::Parameter.new();
$parameter.var_name('$_');
$parameter.optional(1);
$parameter.is_parcel(1);
$parameter.default_from_outer(1);
$signature.add_parameter($parameter);
$signature.add_parameter(Perl6::Compiler::Parameter.new(
:var_name('$_'), :optional(1),
:is_parcel(1), :default_from_outer(1)
));
}
else {
add_implicit_var($block, '$_', 1);
Expand Down Expand Up @@ -2362,10 +2360,8 @@ method typename($/) {
PAST::Var.new( :name('$_'), :scope('lexical') )
)
);
my $sig := Perl6::Compiler::Signature.new();
my $param := Perl6::Compiler::Parameter.new();
$param.var_name('$_');
$sig.add_parameter($param);
my $sig := Perl6::Compiler::Signature.new(
Perl6::Compiler::Parameter.new(:var_name('$_')));
add_signature($past, $sig, 0);
$past := create_code_object($past, 'Block', 0, '');
}
Expand Down Expand Up @@ -2937,10 +2933,8 @@ sub make_attr_init_closure($init_value) {
);
$block[0].unshift(PAST::Var.new( :name('self'), :scope('lexical'), :isdecl(1), :viviself(sigiltype('$')) ));
$block.symbol('self', :scope('lexical'));
my $sig := Perl6::Compiler::Signature.new();
my $parameter := Perl6::Compiler::Parameter.new();
$parameter.var_name('$_');
$sig.add_parameter($parameter);
my $sig := Perl6::Compiler::Signature.new(
Perl6::Compiler::Parameter.new(:var_name('$_')));
$sig.add_invocant();
my $lazy_name := add_signature($block, $sig, 1);
create_code_object(PAST::Op.new( :pirop('newclosure PP'), $block ), 'Method', 0, $lazy_name);
Expand Down Expand Up @@ -2994,9 +2988,8 @@ sub where_blockify($expr) {
$past := create_code_object($expr<past_block>, 'Block', 0, $lazy_name);
}
else {
my $param := Perl6::Compiler::Parameter.new();
$param.var_name('$_');
my $sig := Perl6::Compiler::Signature.new($param);
my $sig := Perl6::Compiler::Signature.new(
Perl6::Compiler::Parameter.new(:var_name('$_')));
$past := make_block_from($sig, PAST::Op.new(
:pasttype('call'), :name('&infix:<~~>'),
PAST::Var.new( :name('$_'), :scope('lexical') ),
Expand Down Expand Up @@ -3044,29 +3037,25 @@ sub whatever_curry($past) {
$past.shift; $past.shift;
$past.push(PAST::Var.new( :name('$x'), :scope('lexical') ));
$past.push(PAST::Var.new( :name('$y'), :scope('lexical') ));
my $param1 := Perl6::Compiler::Parameter.new();
$param1.var_name('$x');
my $param2 := Perl6::Compiler::Parameter.new();
$param2.var_name('$y');
my $sig := Perl6::Compiler::Signature.new($param1, $param2);
my $sig := Perl6::Compiler::Signature.new(
Perl6::Compiler::Parameter.new(:var_name('$x')),
Perl6::Compiler::Parameter.new(:var_name('$y')));
$past := make_block_from($sig, $past);
}
elsif +@($past) == 2 && $past[1] ~~ PAST::Op && $past[1].returns eq 'Whatever' {
# Curry right arg.
$past.pop;
$past.push(PAST::Var.new( :name('$y'), :scope('lexical') ));
my $param := Perl6::Compiler::Parameter.new();
$param.var_name('$y');
my $sig := Perl6::Compiler::Signature.new($param);
my $sig := Perl6::Compiler::Signature.new(
Perl6::Compiler::Parameter.new(:var_name('$y')));
$past := make_block_from($sig, $past);
}
elsif (+@($past) == 1 || +@($past) == 2) && $past[0] ~~ PAST::Op && $past[0].returns eq 'Whatever' {
# Curry left (or for unary, only) arg.
$past.shift;
$past.unshift(PAST::Var.new( :name('$x'), :scope('lexical') ));
my $param := Perl6::Compiler::Parameter.new();
$param.var_name('$x');
my $sig := Perl6::Compiler::Signature.new($param);
my $sig := Perl6::Compiler::Signature.new(
Perl6::Compiler::Parameter.new(:var_name('$x')));
$past := make_block_from($sig, $past);
}
}
Expand Down

0 comments on commit edb448f

Please sign in to comment.