1 package Mouse::Meta::Method::Destructor;
2 use Mouse::Util qw(:meta); # enables strict and warnings
4 sub _generate_destructor{
5 my (undef, $metaclass) = @_;
8 for my $class ($metaclass->linearized_isa) {
9 if (Mouse::Util::get_code_ref($class, 'DEMOLISH')) {
10 $demolishall .= sprintf "%s::DEMOLISH(\$self, \$Mouse::Util::in_global_destruction);\n",
15 my $name = $metaclass->name;
16 my $source = sprintf(<<'EOT', __LINE__, __FILE__, $name, $demolishall);
21 return $self->Mouse::Object::DESTROY()
22 if ref($self) ne __PACKAGE__;
33 die $e if $e; # rethrow
52 Mouse::Meta::Method::Destructor - A Mouse method generator for destructors
56 This document describes Mouse version 0.73
60 L<Moose::Meta::Method::Destructor>