# Exporter. It's bad enough that all classes have a import() method
# whenever UNIVERSAL.pm is loaded.
require Exporter;
+*import = \&Exporter::import;
@EXPORT_OK = qw(isa can VERSION);
-# Make sure that even though the import method is called, it doesn't do
-# anything unless its called on UNIVERSAL
-sub import {
- return unless $_[0] eq __PACKAGE__;
- goto &Exporter::import;
-}
-
1;
__END__
if (optype == OP_REQUIRE) {
char* msg = SvPVx(ERRSV, n_a);
- SV *nsv = cx->blk_eval.old_namesv;
- (void)hv_store(GvHVn(PL_incgv), SvPVX(nsv), SvCUR(nsv),
- &PL_sv_undef, 0);
DIE(aTHX_ "%sCompilation failed in require",
*msg ? msg : "Unknown error\n");
}
sv_setpv(ERRSV,"");
if (yyparse() || PL_error_count || !PL_eval_root) {
SV **newsp; /* Used by POPBLOCK. */
- PERL_CONTEXT *cx = &cxstack[cxstack_ix];
+ PERL_CONTEXT *cx;
I32 optype = 0; /* Might be reset by POPEVAL. */
STRLEN n_a;
LEAVE;
if (optype == OP_REQUIRE) {
char* msg = SvPVx(ERRSV, n_a);
- SV *nsv = cx->blk_eval.old_namesv;
- (void)hv_store(GvHVn(PL_incgv), SvPVX(nsv), SvCUR(nsv),
- &PL_sv_undef, 0);
DIE(aTHX_ "%sCompilation failed in require",
*msg ? msg : "Unknown error\n");
}
DIE(aTHX_ "Null filename used");
TAINT_PROPER("require");
if (PL_op->op_type == OP_REQUIRE &&
- (svp = hv_fetch(GvHVn(PL_incgv), name, len, 0))) {
- if (*svp != &PL_sv_undef)
- RETPUSHYES;
- else
- DIE(aTHX_ "Compilation failed in require");
- }
+ (svp = hv_fetch(GvHVn(PL_incgv), name, len, 0)) &&
+ *svp != &PL_sv_undef)
+ RETPUSHYES;
/* prepare to compile file */
my $Is_EBCDIC = (ord('A') == 193) ? 1 : 0;
my $Is_UTF8 = (${^OPEN} || "") =~ /:utf8/;
-my $total_tests = 44;
-if ($Is_EBCDIC || $Is_UTF8) { $total_tests = 41; }
+my $total_tests = 30;
+if ($Is_EBCDIC || $Is_UTF8) { $total_tests = 27; }
print "1..$total_tests\n";
sub do_require {
print "# $@\nnot " unless $@ =~ /did not return a true/;
print "ok ",$i++,"\n";
-print "not " if exists $INC{'bleah.pm'};
-print "ok ",$i++,"\n";
-
-my $flag_file = 'bleah.flg';
-# run-time error in require
-for my $expected_compile (1,0) {
- write_file($flag_file, 1);
- print "not " unless -e $flag_file;
- print "ok ",$i++,"\n";
- write_file('bleah.pm', "unlink '$flag_file' or die; \$a=0; \$b=1/\$a; 1;\n");
- print "# $@\nnot " if eval { require 'bleah.pm' };
- print "ok ",$i++,"\n";
- print "not " unless -e $flag_file xor $expected_compile;
- print "ok ",$i++,"\n";
- print "not " unless exists $INC{'bleah.pm'};
- print "ok ",$i++,"\n";
-}
-
# compile-time failure in require
do_require "1)\n";
# bison says 'parse error' instead of 'syntax error',
print "# $@\nnot " unless $@ =~ /(syntax|parse) error/mi;
print "ok ",$i++,"\n";
-# previous failure cached in %INC
-print "not " unless exists $INC{'bleah.pm'};
-print "ok ",$i++,"\n";
-write_file($flag_file, 1);
-write_file('bleah.pm', "unlink '$flag_file'; 1");
-print "# $@\nnot " if eval { require 'bleah.pm' };
-print "ok ",$i++,"\n";
-print "# $@\nnot " unless $@ =~ /Compilation failed/i;
-print "ok ",$i++,"\n";
-print "not " unless -e $flag_file;
-print "ok ",$i++,"\n";
-print "not " unless exists $INC{'bleah.pm'};
-print "ok ",$i++,"\n";
-
# successful require
do_require "1";
print "# $@\nnot " if $@;
$i++; do_require(bytes_to_utf16('n', qq(print "ok $i\\n"; 1;\n), 1)); # BE
$i++; do_require(bytes_to_utf16('v', qq(print "ok $i\\n"; 1;\n), 1)); # LE
-END {
- 1 while unlink 'bleah.pm';
- 1 while unlink 'bleah.do';
- 1 while unlink 'bleah.flg';
-}
+END { 1 while unlink 'bleah.pm'; 1 while unlink 'bleah.do'; }
# ***interaction with pod (don't put any thing after here)***
$| = 1;
}
-print "1..101\n";
+print "1..100\n";
$a = {};
bless $a, "Bob";
my $x = {}; bless $x, 'X';
test $x->isa('UNIVERSAL');
test $x->isa('UNIVERSAL');
-
-
-# Check that the "historical accident" of UNIVERSAL having an import()
-# method doesn't effect anyone else.
-eval { Some::Package->import("bar") };
-test !$@;