Weaken anonymous roles in the metaclass lookup table so that they can eventually...
[gitmo/Moose.git] / t / 030_roles / 036_free_anonymous_roles.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More tests => 2;
5 use Moose ();
6 use Scalar::Util 'weaken';
7
8 my $weak;
9 do {
10     my $anon_class;
11
12     do {
13         my $role = Moose::Meta::Role->create_anon_role;
14         weaken($weak = $role);
15
16         $anon_class = Moose::Meta::Class->create_anon_class(
17             roles => [ $role->name ],
18         );
19     };
20
21     ok($weak, "we still have the role metaclass because the anonymous class that consumed it is still alive");
22
23 };
24
25 ok(!$weak, "the role metaclass is freed after its last reference (from a consuming anonymous class) is freed");
26