summaryrefslogtreecommitdiff
path: root/op.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2011-11-21 13:02:47 -0800
committerFather Chrysostomos <sprout@cpan.org>2011-11-21 13:02:47 -0800
commitefcf35c4ce9be7ae046664523cf99dac85257e4a (patch)
tree18f909afe9e245232f87255669fc76a8314c9af7 /op.c
parentf965e9d4a373e14022c83f58715a948ea40a9b4a (diff)
downloadperl-efcf35c4ce9be7ae046664523cf99dac85257e4a.tar.gz
Make constant sub redef warnings obey scope
In perldiag, this is listed as (S), which means that outside of any use/no warnings scope it always warns, regardless of $^W. But this warning was ignoring use/no warnings, too. There were actually tests for this oddity, but I think those were added by mistake, or this was just not thought through. I cannot see how this is not a bug.
Diffstat (limited to 'op.c')
-rw-r--r--op.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/op.c b/op.c
index 97407ad81a..257e2214d3 100644
--- a/op.c
+++ b/op.c
@@ -6592,6 +6592,7 @@ Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
strEQ(hvname, "autouse"))
))
|| (CvCONST(cv)
+ && ckWARN_d(WARN_REDEFINE)
&& (!const_sv || sv_cmp(cv_const_sv(cv), const_sv))))
{
const line_t oldline = CopLINE(PL_curcop);