In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/64016071d009e8d6ad2dc5a71b86e0e2741a7037?hp=aa9621e6ae7442f957cee30769521f3030bd582f>
- Log ----------------------------------------------------------------- commit 64016071d009e8d6ad2dc5a71b86e0e2741a7037 Author: Father Chrysostomos <[email protected]> Date: Wed Jan 21 21:37:01 2015 -0800 attributes.xs: Donât emit const warning for anons The intent was to emit the warning for any cases other than custom attributes on anonymous subs. I did that by checking to see whether we had a closure prototype, warning otherwise. But anonymous subs that are not closures are not closure prototypes. So we need to check CvANON instead. ----------------------------------------------------------------------- Summary of changes: ext/attributes/attributes.xs | 2 +- t/op/attrs.t | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ext/attributes/attributes.xs b/ext/attributes/attributes.xs index b1dd60f..9c9ec11 100644 --- a/ext/attributes/attributes.xs +++ b/ext/attributes/attributes.xs @@ -48,7 +48,7 @@ modify_SV_attributes(pTHX_ SV *sv, SV **retlist, SV **attrlist, int numattrs) if (negated) CvANONCONST_off(sv); else { - const bool warn = (!CvCLONE(sv) || CvCLONED(sv)) + const bool warn = (!CvANON(sv) || CvCLONED(sv)) && !CvANONCONST(sv); CvANONCONST_on(sv); if (warn) diff --git a/t/op/attrs.t b/t/op/attrs.t index f8515fb..b93ed74 100644 --- a/t/op/attrs.t +++ b/t/op/attrs.t @@ -407,7 +407,9 @@ is $ProtoTest::Proto, '$', 'prototypes are visible in attr handlers'; attributes->import(shift, shift, lc shift) if $_[2]; () } $_ = 32487; - my $sub = sub : Const { $_ }; + my $sub = eval '+sub : Const { $_ }'; + ::is $w, '', + 'no warning for :const applied to closure protosub via attributes.pm'; undef $_; ::is &$sub, 32487, 'applying const attr via attributes.pm'; -- Perl5 Master Repository
