This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Improve handling of nested qr/(?[...])/
authorKarl Williamson <khw@cpan.org>
Mon, 17 Feb 2020 19:07:07 +0000 (12:07 -0700)
committerKarl Williamson <khw@cpan.org>
Thu, 20 Feb 2020 01:18:40 +0000 (18:18 -0700)
commitd8d1dede53afc4f33cf63203b0992459fe964dc3
tree4ef95497f184f170a82322bd09f7720887d38711
parent9f55257555c98b527185e6747eb633b2bdb70c0b
Improve handling of nested qr/(?[...])/

A set operations expression can contain a previously-compiled one
interpolated in.  Prior to this commit, some heuristics were employed
to verify it actually was such a thing, and not a sort of look-alike
that wasn't necessarily valid.  The heuristics actually forbade legal
ones.  I don't know of any illegal ones that were let through, but it is
certainly possible.  Also, the error/warning messages referred to the
heuristics, and were unhelpful at best.

The technique used instead in this commit is to return a regop only used
by this feature for any nested compilations.  This guarantees that the
caller can determine if the result is valid, and what that result is
without having to do any heuristics or inspecting any flags.  The
error/warning messages are changed to reflect this, and I believe are
now helpful.

This fixes the bugs in #16779
https://github.com/Perl/perl5/issues/16779#issuecomment-563987618
embed.fnc
embed.h
pod/perldelta.pod
pod/perldiag.pod
proto.h
regcomp.c
t/re/reg_mesg.t
t/re/regex_sets.t