I think this fixed the bleadperl issue
Stevan Little [Sun, 8 Apr 2007 03:53:11 +0000 (03:53 +0000)]
Changes
README
lib/Class/MOP.pm
lib/Class/MOP/Class.pm
lib/Class/MOP/Package.pm
t/003_methods.t

diff --git a/Changes b/Changes
index c44e5c4..2ecf56f 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,11 @@
 Revision history for Perl extension Class-MOP.
 
+0.38
+    ~~ More documentation updates ~~
+    * Class::MOP::Package
+      - we now deal with stub methods properly
+        - added tests for this
+
 0.37 Sat. March 10, 2007
     ~~ Many, many documentation updates ~~
     
diff --git a/README b/README
index ad3f01d..bdbb05e 100644 (file)
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-Class::MOP version 0.37
+Class::MOP version 0.38
 ===========================
 
 See the individual module documentation for more information
index 3e61675..485f797 100644 (file)
@@ -13,7 +13,7 @@ use Class::MOP::Method;
 
 use Class::MOP::Immutable;
 
-our $VERSION   = '0.37';
+our $VERSION   = '0.38';
 our $AUTHORITY = 'cpan:STEVAN';
 
 {
index aaf904f..cbd80de 100644 (file)
@@ -13,7 +13,7 @@ use Scalar::Util 'blessed', 'reftype', 'weaken';
 use Sub::Name    'subname';
 use B            'svref_2object';
 
-our $VERSION   = '0.21';
+our $VERSION   = '0.22';
 our $AUTHORITY = 'cpan:STEVAN';
 
 use base 'Class::MOP::Module';
@@ -864,6 +864,10 @@ This will create an anonymous class, it works much like C<create> but
 it does not need a C<$package_name>. Instead it will create a suitably 
 unique package name for you to stash things into.
 
+On very important distinction is that anon classes are destroyed once 
+the metaclass they are attached to goes out of scope. In the DESTROY 
+method, the created package will be removed from the symbol table. 
+
 =item B<initialize ($package_name, %options)>
 
 This initializes and returns returns a B<Class::MOP::Class> object 
index 15ccfd6..62c9e15 100644 (file)
@@ -7,7 +7,7 @@ use warnings;
 use Scalar::Util 'blessed';
 use Carp         'confess';
 
-our $VERSION   = '0.05';
+our $VERSION   = '0.06';
 our $AUTHORITY = 'cpan:STEVAN';
 
 use base 'Class::MOP::Object';
@@ -195,6 +195,8 @@ sub list_all_package_symbols {
     my $namespace = $self->namespace;
     return grep { 
         defined(*{$namespace->{$_}}{$type_filter}) 
+    } grep {
+        ref(\$namespace->{$_}) eq 'GLOB'   
     } keys %{$namespace};
 }
 
index 91399cf..fa64c49 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 64;
+use Test::More tests => 66;
 use Test::Exception;
 
 use Scalar::Util qw/reftype/;
@@ -21,6 +21,9 @@ BEGIN {
     # import a sub
     use Scalar::Util 'blessed'; 
     
+    sub pie;
+    sub cake ();
+
     use constant FOO_CONSTANT => 'Foo-CONSTANT';
     
     # define a sub in package
@@ -56,6 +59,9 @@ BEGIN {
 
 my $Foo = Class::MOP::Class->initialize('Foo');
 
+ok(!$Foo->has_method('pie'), '... got the method stub pie');
+ok(!$Foo->has_method('cake'), '... got the constant method stub cake');
+
 my $foo = sub { 'Foo::foo' };
 
 ok(!UNIVERSAL::isa($foo, 'Class::MOP::Method'), '... our method is not yet blessed');