summaryrefslogtreecommitdiff
path: root/t/bugs/application_metarole_compat.t
blob: 70d17a73562d2111ca3cbda6cb185bda19260f76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
use strict;
use warnings;
use Test::More;
use Test::Fatal;

BEGIN {
    {
        package Foo;
        use Moose::Role;
    }

    {
        package Bar::Class;
        use Moose::Role;
    }

    {
        package Bar::ToClass;
        use Moose::Role;

        after apply => sub {
            my $self = shift;
            my ($role, $class) = @_;
            Moose::Util::MetaRole::apply_metaroles(
                for => $class,
                class_metaroles => {
                    class => ['Bar::Class'],
                }
            );
        };
    }

    {
        package Bar;
        use Moose::Role;
        Moose::Util::MetaRole::apply_metaroles(
            for => __PACKAGE__,
            role_metaroles => {
                application_to_class => ['Bar::ToClass'],
            }
        );
    }
}

{
    package Parent;
    use Moose -traits => 'Foo';
}

{
    package Child;
    use Moose -traits => 'Bar';
    ::is( ::exception { extends 'Parent' }, undef );
}

done_testing;