Skip to content

Commit 0c7fed2

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

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
@@ -2217,6 +2217,9 @@ ARdp |OP * |newBINOP |I32 type \
22172217
|I32 flags \
22182218
|NULLOK OP *first \
22192219
|NULLOK OP *last
2220+
p |OP * |new_block_statement \
2221+
|NN OP *block \
2222+
|NULLOK OP *cont
22202223
ARdp |OP * |newCONDOP |I32 flags \
22212224
|NN OP *first \
22222225
|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)