On Wed, 14 Jun 2017 20:15:10 GMT, jkeenan wrote: > On Wed, 14 Jun 2017 04:40:46 GMT, > andreas.koenig.7os6VVqR@franz.ak.mind.de wrote: > > bisect > > ------ > > commit 64278e8ca74bf6743c65ced4c5002cdb054b2357 > > Author: Abigail <abigail@abigail.be> > > Date: Tue Jun 6 23:16:30 2017 +0200 > > > > Fatalize inheriting AUTOLOAD for non-methods. > > > > diagnostics > > ----------- > > t/001_basic.t (Wstat: 256 Tests: 4 Failed: 1) > > Failed test: 4 > > Non-zero exit status: 1 > > > > For context, let's include one more line in the commit message for the > breaking commit: > > ##### > commit 64278e8ca74bf6743c65ced4c5002cdb054b2357 > Author: Abigail <abigail@abigail.be> > AuthorDate: Tue Jun 6 23:16:30 2017 +0200 > Commit: Abigail <abigail@abigail.be> > CommitDate: Tue Jun 6 23:17:22 2017 +0200 > > Fatalize inheriting AUTOLOAD for non-methods. > > This was deprecated in 5.004. > ##### > > So, this is something we're likely to see many times in this annual > development cycle: code that breaks because we're fatalizing a > behavior we've tolerated for twenty years (+ 1 month). > > Here's the output I get when I try to install L against blead using > cpanm: > > ##### > $ ~/testing/blead/bin/prove -I~/testing/blead/lib -vb t/001_basic.t > t/001_basic.t .. > ok 1 > ok 2 > ok 3 > not ok 4 > > # Failed test at t/001_basic.t line 26. > # 'Use of inherited AUTOLOAD for non-method > main::hoge() is no longer allowed at t/001_basic.t line 24. > # ' > # doesn't match '(?^:Undefined subroutine &main::hoge called)' > 1..4 > # Looks like you failed 1 test of 4. > ##### > > This module's documentation contains the note: > > ##### > This modules is dangerous, then don't use this module in other perl > modules, scripts or product code. This should be used only in one > liner. > ##### > > Duly forewarned, we look at the code in L.pm. Here's the relevant > part: > > ##### > use Carp (); > use Module::Load (); > > { > package > UNIVERSAL; > > our $AUTOLOAD; > sub AUTOLOAD { > return if $AUTOLOAD =~ /::DESTROY$/; > if (my ($module, $method) = ($AUTOLOAD =~ /^(.*)::(.*?)$/)) { > if ($module eq 'main') { > Carp::croak(qq{Undefined subroutine &main::$method > called}); > } > > Module::Load::load($module); > > my $func = $module->can($method) > or Carp::croak qq{Can't locate object method "$method" via package > "$module"}; > > $func->(@_); > } else { > die "WTF? $AUTOLOAD"; > } > } > } > ##### > > Given that we want to fatalize previously deprecated behavior, I > believe this is a case where blead correctly breaks CPAN. I believe > that a bug should be reported in L's bug tracker. > > Agreed? > > Thank you very much. Slaven reported the problem in: https://rt.cpan.org/Public/Bug/Display.html?id=122217 The author corrected the problem in: https://github.com/Songmu/p5-L/issues/2 -- James E Keenan (jkeenan@cpan.org) --- via perlbug: queue: perl5 status: open https://rt.perl.org/Ticket/Display.html?id=131571Thread Previous