This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
parts/ppptools.pl: Make sure mathoms fcns are deprecated
authorKarl Williamson <khw@cpan.org>
Thu, 8 Aug 2019 19:37:17 +0000 (13:37 -0600)
committerNicolas R <atoomic@cpan.org>
Fri, 27 Sep 2019 22:51:27 +0000 (16:51 -0600)
This makes sure that we consider functions in mathoms as being
deprecated.  The current blead regen/embed.pl already does this, but
this makes sure, should that get reverted.  A mathoms function with
an M flag indicates there is a macro by that name that avoids the
function (which must begin with 'Perl_'), and the macro isn't deprecated
unless the D flag is also present.

(cherry picked from commit 8ed3f9e76aca7a9341a8878d2d7c61a8b8717621)
Signed-off-by: Nicolas R <atoomic@cpan.org>
dist/Devel-PPPort/parts/ppptools.pl

index 13a8d0e..c73e2b0 100644 (file)
@@ -347,6 +347,20 @@ sub parse_embed
           # all other entries, so that our caller has full information, and
           # may skip things like non-public functions.
           next if $flags =~ /N/;
+
+          # M implies m for the purposes of this module.
+          $flags .= 'm' if $flags =~ /M/;
+
+          # An entry marked 'b' is in mathoms, so is effectively deprecated,
+          # as it can be removed at anytime.  But if it also has a macro to
+          # implement it, that macro stays when mathoms is removed, so the
+          # non-'Perl_' form isn't deprecated.  embed.fnc is supposed to have
+          # already set this up, but make sure.
+          if ($flags =~ /b/ && $flags !~ /m/ && $flags !~ /D/) {
+            warn "Expecting D flag for '$name', since it is b without [Mm]";
+            $flags .= 'D';
+          }
+
           if ($name =~ /^[^\W\d]\w*$/) {
             for (@args) {
               $_ = [trim_arg($_)];