diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 1999-06-01 15:55:55 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1999-06-01 15:55:55 +0000 |
commit | 58a40671cc13fcd5c38641be59cb1e7f87a5e905 (patch) | |
tree | b6d23c1e76d37acc587a38f4df22b2d2570cef5a | |
parent | aac3bd0d3f3346ed211dd14976002014858cc553 (diff) | |
download | perl-58a40671cc13fcd5c38641be59cb1e7f87a5e905.tar.gz |
change#3447 didn't do enough to exempt Foo->bar(qw/.../) from
strict 'subs'
p4raw-link: @3447 on //depot/perl: 7a52d87a7fbc7848e6b3e9e96db52d4070212cca
p4raw-id: //depot/perl@3514
-rw-r--r-- | op.c | 5 | ||||
-rw-r--r-- | t/pragma/strict-subs | 22 |
2 files changed, 27 insertions, 0 deletions
@@ -5381,6 +5381,11 @@ ck_subr(OP *o) else if (cvop->op_type == OP_METHOD) { if (o2->op_type == OP_CONST) o2->op_private &= ~OPpCONST_STRICT; + else if (o2->op_type == OP_LIST) { + OP *o = ((UNOP*)o2)->op_first->op_sibling; + if (o && o->op_type == OP_CONST) + o->op_private &= ~OPpCONST_STRICT; + } } o->op_private |= (PL_hints & HINT_STRICT_REFS); if (PERLDB_SUB && PL_curstash != PL_debstash) diff --git a/t/pragma/strict-subs b/t/pragma/strict-subs index 61ec286eb6..deeb381473 100644 --- a/t/pragma/strict-subs +++ b/t/pragma/strict-subs @@ -277,3 +277,25 @@ my $a = Fred ; EXPECT Bareword "Fred" not allowed while "strict subs" in use at - line 8. Execution of - aborted due to compilation errors. +######## + +# see if Foo->Bar(...) etc work under strictures +use strict; +package Foo; sub Bar { print "@_\n" } +Foo->Bar('a',1); +Bar Foo ('b',2); +Foo->Bar(qw/c 3/); +Bar Foo (qw/d 4/); +Foo::->Bar('A',1); +Bar Foo:: ('B',2); +Foo::->Bar(qw/C 3/); +Bar Foo:: (qw/D 4/); +EXPECT +Foo a 1 +Foo b 2 +Foo c 3 +Foo d 4 +Foo A 1 +Foo B 2 +Foo C 3 +Foo D 4 |