sub pp_continue { unop(@_, "continue"); }
-sub givwhen {
- my $self = shift;
- my($op, $cx, $givwhen) = @_;
-
+sub pp_leavewhen {
+ my($self, $op, $cx) = @_;
+ my $when = $self->keyword("when");
my $enterop = $op->first;
my $cond = $enterop->first;
my $cond_str = $self->deparse($cond, 1);
my $block = $self->deparse($cond->sibling, 0);
-
- return "$givwhen ($cond_str) {\n".
- "\t$block\n".
- "\b}\cK";
+ return "$when ($cond_str) {\n\t$block\n\b}\cK";
}
-sub pp_leavegiven { givwhen(@_, $_[0]->keyword("given")); }
-sub pp_leavewhen { givwhen(@_, $_[0]->keyword("when")); }
-
sub pp_exists {
my $self = shift;
my($op, $cx) = @_;
$bare = 1;
}
$body = $kid;
+ } elsif ($enter->name eq "entergiven") { # given
+ my $given = $self->keyword("given");
+ my $enterop = $op->first;
+ my $topic = $enterop->first;
+ my $topic_str = $self->deparse($topic, 1);
+ my $block = $self->deparse($topic->sibling, 0);
+ return "$given ($topic_str) {\n\t$block\n\b}\cK";
} elsif ($enter->name eq "enteriter") { # foreach
my $ary = $enter->first->sibling; # first was pushmark
my $var = $ary->sibling;
"method_redir",
"method_redir_super",
"entergiven",
- "leavegiven",
"enterwhen",
"leavewhen",
"continue",
"redirect method with known name",
"redirect super method with known name",
"given()",
- "leave given block",
"when()",
"leave when block",
"continue",
Perl_pp_method_redir,
Perl_pp_method_redir_super,
Perl_pp_entergiven,
- Perl_pp_leavegiven,
Perl_pp_enterwhen,
Perl_pp_leavewhen,
Perl_pp_continue,
Perl_ck_null, /* method_redir */
Perl_ck_null, /* method_redir_super */
Perl_ck_null, /* entergiven */
- Perl_ck_null, /* leavegiven */
Perl_ck_null, /* enterwhen */
Perl_ck_null, /* leavewhen */
Perl_ck_null, /* continue */
0x00000e40, /* method_redir */
0x00000e40, /* method_redir_super */
0x00000940, /* entergiven */
- 0x00000100, /* leavegiven */
0x00000340, /* enterwhen */
0x00000100, /* leavewhen */
0x00000000, /* continue */
0, /* method_redir */
0, /* method_redir_super */
-1, /* entergiven */
- 0, /* leavegiven */
0, /* enterwhen */
0, /* leavewhen */
-1, /* continue */
*/
EXTCONST U16 PL_op_private_bitdefs[] = {
- 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */
+ 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */
0x2ebc, 0x3fb9, /* pushmark */
0x00bd, /* wantarray, runcv */
0x0578, 0x1930, 0x406c, 0x3b28, 0x3305, /* const */
/* METHOD_REDIR */ (OPpARG1_MASK),
/* METHOD_REDIR_SUPER */ (OPpARG1_MASK),
/* ENTERGIVEN */ (0),
- /* LEAVEGIVEN */ (OPpARG1_MASK),
/* ENTERWHEN */ (OPpARG1_MASK),
/* LEAVEWHEN */ (OPpARG1_MASK),
/* CONTINUE */ (0),