Make Mouse::Util::load_class return the argument class name, which can remove several...
[gitmo/Mouse.git] / lib / Mouse / Meta / Class.pm
index bb4a62c..84c36d5 100644 (file)
@@ -81,8 +81,8 @@ sub superclasses {
 sub _reconcile_with_superclass_meta {
     my($self, $super_meta) = @_;
 
+    # find incompatible traits
     my @incompatibles;
-
     foreach my $metaclass_type(@MetaClassTypes){
         my $super_c = $super_meta->$metaclass_type();
         my $self_c  = $self->$metaclass_type();
@@ -93,9 +93,8 @@ sub _reconcile_with_superclass_meta {
     }
 
     my @roles;
-
-    foreach my $role($self->meta->calculate_all_roles){
-        if(!$super_meta->meta->does_role($role->name)){
+    foreach my $role($super_meta->meta->calculate_all_roles){
+        if(!$self->meta->does_role($role->name)){
             push @roles, $role->name;
         }
     }
@@ -245,18 +244,18 @@ sub make_immutable {
 
     $self->{is_immutable}++;
 
+    $self->{strict_constructor} = $args{strict_constructor};
+
     if ($args{inline_constructor}) {
-        my $c = $self->constructor_class;
-        Mouse::Util::load_class($c);
         $self->add_method($args{constructor_name} =>
-            $c->_generate_constructor($self, \%args));
+            Mouse::Util::load_class($self->constructor_class)
+                ->_generate_constructor($self, \%args));
     }
 
     if ($args{inline_destructor}) {
-        my $c = $self->destructor_class;
-        Mouse::Util::load_class($c);
         $self->add_method(DESTROY =>
-            $c->_generate_destructor($self, \%args));
+            Mouse::Util::load_class($self->destructor_class)
+                ->_generate_destructor($self, \%args));
     }
 
     # Moose's make_immutable returns true allowing calling code to skip setting an explicit true value
@@ -462,7 +461,7 @@ Mouse::Meta::Class - The Mouse class metaclass
 
 =head1 VERSION
 
-This document describes Mouse version 0.48
+This document describes Mouse version 0.50_03
 
 =head1 METHODS