diff options
author | Rick Delaney <rick@consumercontact.com> | 2007-10-30 13:19:40 -0700 |
---|---|---|
committer | Steve Peters <steve@fisharerojo.org> | 2008-02-13 18:39:50 +0000 |
commit | 781e3f050073176aa21ffc243184a1cb57f4ec92 (patch) | |
tree | 17bc74c72eb39bef0f518ff182db7c0e0f0549f0 | |
parent | cae86ea86570588a52f7ce8a0a01b6eb824103df (diff) | |
download | perl-781e3f050073176aa21ffc243184a1cb57f4ec92.tar.gz |
[perl #47047] Use of inherited AUTOLOAD for non-method is deprecated
From: Rick Delaney (via RT) <perlbug-followup@perl.org>
Message-ID: <rt-3.6.HEAD-24634-1193800780-55.47047-75-0@perl.org>
p4raw-id: //depot/perl@33302
-rw-r--r-- | pp_hot.c | 10 | ||||
-rw-r--r-- | t/lib/warnings/gv | 2 |
2 files changed, 10 insertions, 2 deletions
@@ -2735,9 +2735,14 @@ PP(pp_entersub) } /* should call AUTOLOAD now? */ else { -try_autoload: +try_autoload: + { + const bool is_method = cLISTOP->op_last && + (cLISTOP->op_last->op_type == OP_METHOD_NAMED || + cLISTOP->op_last->op_type == OP_METHOD); + if ((autogv = gv_autoload4(GvSTASH(gv), GvNAME(gv), GvNAMELEN(gv), - FALSE))) + is_method))) { cv = GvCV(autogv); } @@ -2747,6 +2752,7 @@ try_autoload: gv_efullname3(sub_name, gv, NULL); DIE(aTHX_ "Undefined subroutine &%"SVf" called", SVfARG(sub_name)); } + } } if (!cv) DIE(aTHX_ "Not a CODE reference"); diff --git a/t/lib/warnings/gv b/t/lib/warnings/gv index 42565f2325..6086655383 100644 --- a/t/lib/warnings/gv +++ b/t/lib/warnings/gv @@ -39,6 +39,8 @@ sub Other::AUTOLOAD { 1 } sub Other::fred {} @ISA = qw(Other) ; use warnings 'deprecated' ; fred() ; +my $x = \&barney; +(bless[])->barney; EXPECT Use of inherited AUTOLOAD for non-method main::fred() is deprecated at - line 5. ######## |