Commit | Line | Data |
aa08864c |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
7ff56534 |
5 | use Test::More tests => 2; |
6 | |
aa08864c |
7 | |
aa08864c |
8 | |
9 | { |
10 | package Bar::Meta::Attribute; |
11 | use Moose; |
12 | |
13 | extends 'Moose::Meta::Attribute'; |
14 | |
15 | has 'my_legal_option' => ( |
16 | isa => 'CodeRef', |
17 | is => 'rw', |
18 | ); |
19 | |
20 | around legal_options_for_inheritance => sub { |
21 | return (shift->(@_), qw/my_legal_option/); |
22 | }; |
23 | |
24 | package Bar; |
25 | use Moose; |
26 | |
27 | has 'bar' => ( |
28 | metaclass => 'Bar::Meta::Attribute', |
ccd4cff9 |
29 | my_legal_option => sub { 'Bar' }, |
30 | is => 'bare', |
aa08864c |
31 | ); |
32 | |
33 | package Bar::B; |
34 | use Moose; |
35 | |
36 | extends 'Bar'; |
37 | |
38 | has '+bar' => ( |
39 | my_legal_option => sub { 'Bar::B' } |
40 | ); |
41 | } |
42 | |
43 | my $bar_attr = Bar::B->meta->get_attribute('bar'); |
44 | my ($legal_option) = grep { |
45 | $_ eq 'my_legal_option' |
46 | } $bar_attr->legal_options_for_inheritance; |
47 | is($legal_option, 'my_legal_option', |
1808c2da |
48 | 'added my_legal_option as legal option for inheritance' ); |
49 | is($bar_attr->my_legal_option->(), 'Bar::B', 'overloaded my_legal_option'); |