Skip to content

Commit fe52a7b

Browse files
author
Branislav Zahradník
committed
[parser] new_block_statement - deduplicate "a block is a loop that happens once"
1 parent d495d99 commit fe52a7b

File tree

8 files changed

+349
-327
lines changed

8 files changed

+349
-327
lines changed

embed.fnc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2289,6 +2289,9 @@ ARdp |OP * |newBINOP |I32 type \
22892289
|I32 flags \
22902290
|NULLOK OP *first \
22912291
|NULLOK OP *last
2292+
p |OP * |new_block_statement \
2293+
|NN OP *block \
2294+
|NULLOK OP *cont
22922295
ARdp |OP * |newCONDOP |I32 flags \
22932296
|NN OP *first \
22942297
|NULLOK OP *trueop \

embed.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,6 +1110,7 @@
11101110
# define newSVavdefelem(a,b,c) Perl_newSVavdefelem(aTHX_ a,b,c)
11111111
# define newXS_deffile(a,b) Perl_newXS_deffile(aTHX_ a,b)
11121112
# define newXS_len_flags(a,b,c,d,e,f,g) Perl_newXS_len_flags(aTHX_ a,b,c,d,e,f,g)
1113+
# define new_block_statement(a,b) Perl_new_block_statement(aTHX_ a,b)
11131114
# define nextargv(a,b) Perl_nextargv(aTHX_ a,b)
11141115
# define no_bareword_filehandle(a) Perl_no_bareword_filehandle(aTHX_ a)
11151116
# define noperl_die Perl_noperl_die

op.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4700,6 +4700,24 @@ Perl_block_end(pTHX_ I32 floor, OP *seq)
47004700
return retval;
47014701
}
47024702

4703+
/*
4704+
=for apidoc new_block_statement
4705+
4706+
Returns a C<OP *> representing block as statement.
4707+
Block is a loop that happens once.
4708+
4709+
Available since: v5.44
4710+
4711+
=cut
4712+
*/
4713+
4714+
OP*
4715+
Perl_new_block_statement (pTHX_ OP *block, OP *cont)
4716+
{
4717+
PERL_ARGS_ASSERT_NEW_BLOCK_STATEMENT;
4718+
4719+
return newWHILEOP (0, 1, NULL, NULL, block, cont, 0);
4720+
}
47034721
/*
47044722
=for apidoc_section $scope
47054723

0 commit comments

Comments
 (0)