diff options
author | Dave Mitchell <davem@fdisolutions.com> | 2004-03-14 17:01:34 +0000 |
---|---|---|
committer | Dave Mitchell <davem@fdisolutions.com> | 2004-03-14 17:01:34 +0000 |
commit | af5acbb47cec8f9dd3c4a2594507c21a7f1ce63b (patch) | |
tree | e4cac932e91c1a4047ab665bccda4e8828f3d825 | |
parent | dfd914092bc0efff7a5ad67a7b5cadfabbc009a6 (diff) | |
download | perl-af5acbb47cec8f9dd3c4a2594507c21a7f1ce63b.tar.gz |
[perl #27628] strict 'subs' didn't warn on bareword array index
p4raw-id: //depot/perl@22499
-rw-r--r-- | op.c | 4 | ||||
-rw-r--r-- | t/lib/strict/subs | 13 |
2 files changed, 16 insertions, 1 deletions
@@ -6405,7 +6405,7 @@ Perl_peep(pTHX_ register OP *o) o->op_next : o->op_next->op_next; IV i; if (pop && pop->op_type == OP_CONST && - (PL_op = pop->op_next) && + ((PL_op = pop->op_next)) && pop->op_next->op_type == OP_AELEM && !(pop->op_next->op_private & (OPpLVAL_INTRO|OPpLVAL_DEFER|OPpDEREF|OPpMAYBE_LVSUB)) && @@ -6414,6 +6414,8 @@ Perl_peep(pTHX_ register OP *o) i >= 0) { GV *gv; + if (cSVOPx(pop)->op_private & OPpCONST_STRICT) + no_bareword_allowed(pop); if (o->op_type == OP_GV) op_null(o->op_next); op_null(pop->op_next); diff --git a/t/lib/strict/subs b/t/lib/strict/subs index 4f0e6215f7..20a8afa80e 100644 --- a/t/lib/strict/subs +++ b/t/lib/strict/subs @@ -380,3 +380,16 @@ qr/(?{my $x=foo})/; EXPECT Bareword "foo" not allowed while "strict subs" in use at (re_eval 1) line 1. Compilation failed in regexp at - line 3. +######## +# [perl #27628] strict 'subs' didn't warn on bareword array index +use strict 'subs'; +my $x=$a[FOO]; +EXPECT +Bareword "FOO" not allowed while "strict subs" in use at - line 3. +Execution of - aborted due to compilation errors. +######## +use strict 'subs'; +my @a;my $x=$a[FOO]; +EXPECT +Bareword "FOO" not allowed while "strict subs" in use at - line 2. +Execution of - aborted due to compilation errors. |