bump version and update Changes for release
[gitmo/Moose.git] / lib / Moose / Meta / Role.pm
index 8d47ab4..f1fd0c7 100644 (file)
@@ -8,7 +8,7 @@ use metaclass;
 use Scalar::Util 'blessed';
 use Carp         'confess';
 
-our $VERSION   = '0.61';
+our $VERSION   = '0.72';
 $VERSION = eval $VERSION;
 our $AUTHORITY = 'cpan:STEVAN';
 
@@ -122,8 +122,10 @@ foreach my $action (
 sub add_attribute {
     my $self = shift;
     my $name = shift;
-    (defined $name && $name)
-        || Moose->throw_error("You must provide a name for the attribute");
+    unless ( defined $name && $name ) {
+        require Moose;
+        Moose->throw_error("You must provide a name for the attribute");
+    }
     my $attr_desc;
     if (scalar @_ == 1 && ref($_[0]) eq 'HASH') {
         $attr_desc = $_[0];
@@ -311,10 +313,10 @@ sub get_method_map {
     my $role_name        = $self->name;
     my $method_metaclass = $self->method_metaclass;
 
-    my %all_code = $self->get_all_package_symbols('CODE');
+    my $all_code = $self->get_all_package_symbols('CODE');
 
-    foreach my $symbol (keys %all_code) {
-        my $code = $all_code{$symbol};
+    foreach my $symbol (keys %{ $all_code }) {
+        my $code = $all_code->{$symbol};
 
         next if exists  $map->{$symbol} &&
                 defined $map->{$symbol} &&
@@ -476,12 +478,9 @@ sub combine {
 }
 
 sub create {
-    my ( $role, @args ) = @_;
-
-    unshift @args, 'package' if @args % 2 == 1;
+    my ( $role, $package_name, %options ) = @_;
 
-    my (%options) = @args;
-    my $package_name = $options{package};
+    $options{package} = $package_name;
 
     (ref $options{attributes} eq 'HASH')
         || confess "You must pass a HASH ref of attributes"
@@ -493,7 +492,7 @@ sub create {
 
     $role->SUPER::create(%options);
 
-    my (%initialize_options) = @args;
+    my (%initialize_options) = %options;
     delete @initialize_options{qw(
         package
         attributes
@@ -522,6 +521,9 @@ sub create {
         }
     }
 
+    Class::MOP::weaken_metaclass($meta->name)
+        if $meta->is_anon_role;
+
     return $meta;
 }
 
@@ -904,7 +906,7 @@ Stevan Little E<lt>stevan@iinteractive.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006-2008 by Infinity Interactive, Inc.
+Copyright 2006-2009 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>