When an attribute property is malformed (such as lazy without a default), give the...
[gitmo/Moose.git] / lib / Moose / Meta / Role.pm
index bd3e691..d7270ca 100644 (file)
@@ -314,7 +314,7 @@ sub get_method_map {
             next if ($pkg  || '') ne $role_name &&
                     ($name || '') ne '__ANON__';
         }
-
+        
         $map->{$symbol} = $method_metaclass->wrap($code);
     }
 
@@ -323,7 +323,7 @@ sub get_method_map {
 
 sub get_method { 
     my ($self, $name) = @_;
-    $self->get_method_map->{$name}
+    $self->get_method_map->{$name};
 }
 
 sub has_method {
@@ -375,13 +375,24 @@ sub apply {
 }
 
 sub combine {
-    my ($class, @roles) = @_;
+    my ($class, @role_specs) = @_;
     
     require Moose::Meta::Role::Application::RoleSummation;
-    require Moose::Meta::Role::Composite;    
+    require Moose::Meta::Role::Composite;  
+    
+    my (@roles, %role_params);
+    while (@role_specs) {
+        my ($role, $params) = @{ splice @role_specs, 0, 1 };
+        push @roles => $role->meta;
+        next unless defined $params;
+        $role_params{$role} = $params; 
+    }
     
     my $c = Moose::Meta::Role::Composite->new(roles => \@roles);
-    Moose::Meta::Role::Application::RoleSummation->new->apply($c);
+    Moose::Meta::Role::Application::RoleSummation->new(
+        role_params => \%role_params
+    )->apply($c);
+    
     return $c;
 }