Subject: | circular::require breaks 'use base "..."' |
Date: | Tue, 6 Dec 2011 09:39:36 -0800 |
To: | bug-circular-require [...] rt.cpan.org |
From: | Chad Granum <exodist7 [...] gmail.com> |
Here is the test case:
Test.pl:
------------------------------------------
#!/usr/bin/perl
use strict;
use warnings;
use lib '.'
no circular::require;
use Test::More;
use_ok('Foo');
is( Foo->bar, "bar", "Polymorphism" );
done_testing;
------------------------------------------
Foo.pm
------------------------------------------
package Foo;
use strict;
use warnings;
use base 'Bar';
sub foo { "foo" }
1;
------------------------------------------
Bar.pm
------------------------------------------
package Bar;
use strict;
use warnings;
sub bar { "bar" }
1;
------------------------------------------
Output:
------------------------------------------
test.pl ..
not ok 1 - use Foo;
# Failed test 'use Foo;'
# at test.pl line 11.
# Tried to use 'Foo'.
# Error: Base class package "Bar" is empty.
# (Perhaps you need to 'use' the module which defines that package first.)
# at Foo.pm line 5
# BEGIN failed--compilation aborted at Foo.pm line 5.
# Compilation failed in require at
/W3Dev/data/cpan_trial_lib/circular/require.pm line 39.
# BEGIN failed--compilation aborted at (eval 18) line 2.
Can't locate object method "bar" via package "Foo" at test.pl line 13.
# Tests were run but no plan was declared and done_testing() was not seen.
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/1 subtests
Test Summary Report
-------------------
test.pl (Wstat: 65280 Tests: 1 Failed: 1)
Failed test: 1
Non-zero exit status: 255
Parse errors: No plan found in TAP output
------------------------------------------
Perl Info:
------------------------------------------
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
Platform:
osname=linux, osvers=2.4.21-47.elsmp, archname=i386-linux-thread-multi
uname='linux bumbleb 2.4.21-47.elsmp #1 smp wed jul 5 20:30:30 edt
2006 x86_64 x86_64 x86_64 gnulinux '
config_args='-d -des -Uuselargefiles -Darchname=i386-linux
-Dcc=gcc -m32 -Dprefix=/usr/local/covalent/ers-4.0.0/perl5.8
-Dusethreads'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define
usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=undef usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='gcc -m32', ccflags ='-D_REENTRANT -D_GNU_SOURCE
-DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe
-Wdeclaration-after-statement -I/usr/local/include
-DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV',
optimize='-O2',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
-fno-strict-aliasing -pipe -Wdeclaration-after-statement
-I/usr/local/include'
ccversion='', gccversion='3.2.3 20030502 (Red Hat Linux
3.2.3-56)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=4
alignbytes=4, prototype=define
Linker and Libraries:
ld='gcc -m32', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=/lib/libc-2.3.2.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version='2.3.2'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT
PERL_MALLOC_WRAP PERL_USE_SAFE_PUTENV
THREADS_HAVE_PIDS USE_ITHREADS USE_PERLIO
USE_REENTRANT_API
Built under linux
Compiled at Jun 21 2008 18:51:17
------------------------------------------