On Wed, Jun 30, 2004 at 11:42:34AM -0400, Vsevolod (Simon) Ilyushchenko wrote:
> I have tried to run Devel::Cover on my tests that use Test::Unit, and I
> am getting this after the code is run:
>
> Deep recursion on subroutine "B::Deparse::find_scope" at
> /usr/lib/perl5/5.8.1/i386-linux-thread-multi/B/Deparse.pm line 1317.
> Deep recursion on subroutine "B::Deparse::dq" at
> /usr/lib/perl5/5.8.1/i386-linux-thread-multi/B/Deparse.pm line 3550.
> Deep recursion on subroutine "B::Deparse::dq" at
> /usr/lib/perl5/5.8.1/i386-linux-thread-multi/B/Deparse.pm line 3551.
> Deep recursion on subroutine "B::Deparse::find_scope" at
> /usr/lib/perl5/5.8.1/i386-linux-thread-multi/B/Deparse.pm line 1317.
>
> However, nothing seems to be affected - the table is generated by
> 'cover'. I'd like to debug this, but not sure how to proceed.
Actually, it's not infinite recursion, just deep recursion, where deep
is defined as > 100, or is it >= 100, I can't remember offhand.
As you've noted, everything should still work - it's just a warning, and
as such it can be turned off with C<no warnings "recursion">. I was
(and still am) of the opinion that 100 is a little low nowadays, and
sent a patch to p5p a couple of weeks ago to raise the limit to 1000,
which is what parrot uses, I think.
Unfortunately, everyone else seemed satisfied with 100, or at least
no-one else spoke up in favour of the patch, and so the limit will
remain at 100.
I didn't want to have to put C<no warnings "recursion"> in Devel::Cover,
as it seems to high a level to me. Maybe it should go in B::Deparse.
But then I've also hit a similar problem using Parse::RecDescent to
parse a language, which I why I wondered about upping the limit.
But I suppose I'll turn off the warning from Devel::Cover. That seems
the most pragmatic solution at the moment.
In the meantime, please just ignore the noise. Or maybe add -X to your
command line, if you're feeling brave.
--
Paul Johnson - paul@xxxxxxxx
http://www.pjcj.net
|