Change 31420 by [EMAIL PROTECTED] on 2007/06/19 12:13:20
Subject: [perl #43242] "use base" breaks code containing peculiarly
named constant
From: Martin Becker (via RT) <[EMAIL PROTECTED]>
Date: Mon, 18 Jun 2007 09:48:54 -0700
Message-ID: <[EMAIL PROTECTED]>
plus a test case
Affected files ...
... //depot/perl/lib/base.pm#35 edit
... //depot/perl/lib/base/t/base.t#5 edit
Differences ...
==== //depot/perl/lib/base.pm#35 (text) ====
Index: perl/lib/base.pm
--- perl/lib/base.pm#34~31163~ 2007-05-07 06:38:24.000000000 -0700
+++ perl/lib/base.pm 2007-06-19 05:13:20.000000000 -0700
@@ -2,7 +2,7 @@
use strict 'vars';
use vars qw($VERSION);
-$VERSION = '2.09';
+$VERSION = '2.10';
# constant.pm is slow
sub SUCCESS () { 1 }
@@ -18,7 +18,7 @@
sub has_fields {
my($base) = shift;
my $fglob = ${"$base\::"}{FIELDS};
- return( ($fglob && *$fglob{HASH}) ? 1 : 0 );
+ return( ($fglob && 'GLOB' eq ref($fglob) && *$fglob{HASH}) ? 1 : 0 );
}
sub has_version {
==== //depot/perl/lib/base/t/base.t#5 (text) ====
Index: perl/lib/base/t/base.t
--- perl/lib/base/t/base.t#4~29090~ 2006-10-23 01:51:02.000000000 -0700
+++ perl/lib/base/t/base.t 2007-06-19 05:13:20.000000000 -0700
@@ -1,7 +1,7 @@
#!/usr/bin/perl -w
use strict;
-use Test::More tests => 11;
+use Test::More tests => 12;
use_ok('base');
@@ -85,3 +85,9 @@
'Base class empty error message');
}
+
+package Schlozhauer;
+use constant FIELDS => 6;
+package Basilisco;
+eval q{ use base 'Schlozhauer' };
+::is( $@, '', 'Can coexist with a FIELDS constant' );
End of Patch.