diff options
author | Dave Mitchell <davem@fdisolutions.com> | 2004-03-04 21:39:47 +0000 |
---|---|---|
committer | Dave Mitchell <davem@fdisolutions.com> | 2004-03-04 21:39:47 +0000 |
commit | 7921d0f22732c0609e6c9d21be9aaf6e52f99e6b (patch) | |
tree | 8a6f3a8a8dcce2d297997970c51bb71e892872a3 | |
parent | f687c58382f4b95feb695ed73228b771780e828e (diff) | |
download | perl-7921d0f22732c0609e6c9d21be9aaf6e52f99e6b.tar.gz |
add deprecation warning for my $x if 0
p4raw-id: //depot/perl@22435
-rw-r--r-- | op.c | 17 | ||||
-rw-r--r-- | t/lib/warnings/op | 25 |
2 files changed, 42 insertions, 0 deletions
@@ -3369,6 +3369,23 @@ S_new_logop(pTHX_ I32 type, I32 flags, OP** firstp, OP** otherp) return other; } else { + /* check for C<my $x if 0>, or C<my($x,$y) if 0> */ + OP *o2 = other; + if ( ! (o2->op_type == OP_LIST + && (( o2 = cUNOPx(o2)->op_first)) + && o2->op_type == OP_PUSHMARK + && (( o2 = o2->op_sibling)) ) + ) + o2 = other; + if ((o2->op_type == OP_PADSV || o2->op_type == OP_PADAV + || o2->op_type == OP_PADHV) + && o2->op_private & OPpLVAL_INTRO + && ckWARN(WARN_DEPRECATED)) + { + Perl_warner(aTHX_ packWARN(WARN_DEPRECATED), + "Deprecated use of my() in false conditional"); + } + op_free(other); *otherp = Nullop; first->op_private |= OPpCONST_SHORTCIRCUIT; diff --git a/t/lib/warnings/op b/t/lib/warnings/op index 95f3fc8b56..c39a7b2fd9 100644 --- a/t/lib/warnings/op +++ b/t/lib/warnings/op @@ -1053,3 +1053,28 @@ Useless localization of defined or assignment (//=) at - line 45. Useless localization of substr at - line 48. Useless localization of match position at - line 49. Useless localization of vec at - line 50. +######## +# op.c +use warnings 'deprecated'; +my $x1 if 0; +my @x2 if 0; +my %x3 if 0; +my ($x4) if 0; +my ($x5,@x6, %x7) if 0; +0 && my $z1; +0 && my (%z2); +# these shouldn't warn +our $x if 0; +our $x unless 0; +if (0) { my $w1 } +if (my $w2) { $a=1 } +if ($a && (my $w3 = 1)) {$a = 2} + +EXPECT +Deprecated use of my() in false conditional at - line 3. +Deprecated use of my() in false conditional at - line 4. +Deprecated use of my() in false conditional at - line 5. +Deprecated use of my() in false conditional at - line 6. +Deprecated use of my() in false conditional at - line 7. +Deprecated use of my() in false conditional at - line 8. +Deprecated use of my() in false conditional at - line 9. |