Checking in changes prior to tagging of version 0.40_02. Changelog diff is:
[gitmo/Mouse.git] / lib / Mouse / Meta / Class.pm
index 563a208..f7bee8a 100644 (file)
@@ -38,11 +38,16 @@ sub create_anon_class{
     return $self->create(undef, @_);
 }
 
-sub is_anon_class{
-    return exists $_[0]->{anon_serial_id};
-}
+sub is_anon_class;
+
+sub roles;
 
-sub roles { $_[0]->{roles} }
+sub calculate_all_roles {
+    my $self = shift;
+    my %seen;
+    return grep { !$seen{ $_->name }++ }
+           map  { $_->calculate_all_roles } @{ $self->roles };
+}
 
 sub superclasses {
     my $self = shift;
@@ -51,7 +56,7 @@ sub superclasses {
         foreach my $super(@_){
             Mouse::Util::load_class($super);
             my $meta = Mouse::Util::get_metaclass_by_name($super);
-            if($meta && $meta->isa('Mouse::Meta::Role')){
+            if(Mouse::Util::TypeConstraints::_is_a_metarole($meta)){
                 $self->throw_error("You cannot inherit from a Mouse Role ($super)");
             }
         }
@@ -166,7 +171,7 @@ sub get_all_attributes {
     return @attr;
 }
 
-sub linearized_isa { @{ get_linear_isa($_[0]->name) } }
+sub linearized_isa;
 
 sub new_object {
     my $self = shift;
@@ -472,6 +477,10 @@ __END__
 
 Mouse::Meta::Class - The Mouse class metaclass
 
+=head1 VERSION
+
+This document describes Mouse version 0.40_02
+
 =head1 METHODS
 
 =head2 C<< initialize(ClassName) -> Mouse::Meta::Class >>