Fix a test
[gitmo/Mouse.git] / lib / Mouse / Meta / Method / Destructor.pm
CommitLineData
bbf64e76 1package Mouse::Meta::Method::Destructor;
2use strict;
3use warnings;
4
5sub generate_destructor_method_inline {
6 my ($class, $meta) = @_;
7
8 my $demolishall = do {
9 if ($meta->name->can('DEMOLISH')) {
10 my @code = ();
7ca5c5fb 11 for my $class ($meta->linearized_isa) {
12 no strict 'refs';
13 if (*{$class . '::DEMOLISH'}{CODE}) {
14 push @code, "${class}::DEMOLISH(\$self);";
bbf64e76 15 }
16 }
17 join "\n", @code;
18 } else {
0a0814d6 19 return sub { }; # no demolish =)
bbf64e76 20 }
21 };
22
23 my $code = <<"...";
24 sub {
25 my \$self = shift;
26 $demolishall;
27 }
28...
bbf64e76 29
30 local $@;
31 my $res = eval $code;
32 die $@ if $@;
8da68341 33 return $res;
bbf64e76 34}
35
361;