use Scalar::Util 'blessed';
use B 'svref_2object';
-our $VERSION = '0.06';
+our $VERSION = '0.07';
our $AUTHORITY = 'cpan:STEVAN';
use Moose::Meta::Class;
}
}
else {
- $other->add_attribute(
- $attribute_name,
- $self->get_attribute($attribute_name)
- );
+ # NOTE:
+ # this is kinda ugly ...
+ if ($other->isa('Moose::Meta::Class')) {
+ $other->_process_attribute(
+ $attribute_name,
+ %{$self->get_attribute($attribute_name)}
+ );
+ }
+ else {
+ $other->add_attribute(
+ $attribute_name,
+ $self->get_attribute($attribute_name)
+ );
+ }
}
}
}
--- /dev/null
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 4;
+use Test::Exception;
+
+BEGIN {
+ use_ok('Moose');
+}
+
+{
+ package My::Custom::Meta::Attr;
+ use Moose;
+
+ extends 'Moose::Meta::Attribute';
+}
+
+{
+ package My::Fancy::Role;
+ use Moose::Role;
+
+ has 'bling_bling' => (
+ metaclass => 'My::Custom::Meta::Attr',
+ is => 'rw',
+ isa => 'Str',
+ );
+}
+
+{
+ package My::Class;
+ use Moose;
+
+ with 'My::Fancy::Role';
+}
+
+my $c = My::Class->new;
+isa_ok($c, 'My::Class');
+
+ok($c->meta->has_attribute('bling_bling'), '... got the attribute');
+
+isa_ok($c->meta->get_attribute('bling_bling'), 'My::Custom::Meta::Attr');
+
+