X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FAttribute.pm;h=0ee84009722a20eb38b08727e4943ae5a437af73;hp=1946c960fb0f03a068d6948f632fb098892ad88c;hb=8cf51b82d94aad02f81dc853be874e9a49a82c31;hpb=ad087d1140e1f90a85f2f47cc05bd648fb4ea38e diff --git a/lib/Mouse/Meta/Attribute.pm b/lib/Mouse/Meta/Attribute.pm index 1946c96..0ee8400 100644 --- a/lib/Mouse/Meta/Attribute.pm +++ b/lib/Mouse/Meta/Attribute.pm @@ -208,7 +208,7 @@ sub _create_args { # DEPRECATED } sub interpolate_class{ - my($class, $name, $args) = @_; + my($class, $args) = @_; if(my $metaclass = delete $args->{metaclass}){ $class = Mouse::Util::resolve_metaclass_alias( Attribute => $metaclass ); @@ -230,7 +230,6 @@ sub interpolate_class{ } if (@traits) { - warn "traits [@traits] for $class\n"; $class = Mouse::Meta::Class->create_anon_class( superclasses => [ $class ], roles => \@traits, @@ -321,10 +320,12 @@ sub _canonicalize_handles { } sub clone_and_inherit_options{ - my $self = shift; - my $name = shift; + my($self, %args) = @_; + + my($attribute_class, @traits) = ref($self)->interpolate_class(\%args); - return ref($self)->new($name, %{$self}, (@_ == 1) ? %{$_[0]} : @_); + $args{traits} = \@traits if @traits; + return $attribute_class->new($self->name, %{$self}, %args); } sub clone_parent { # DEPRECATED