Checking in changes prior to tagging of version 0.39. Changelog diff is:
[gitmo/Mouse.git] / lib / Mouse / Meta / Method / Destructor.pm
index 66f4709..7c12dc8 100644 (file)
@@ -13,6 +13,7 @@ sub _generate_destructor{
     my $demolishall = '';
     for my $class ($metaclass->linearized_isa) {
         no strict 'refs';
+        no warnings 'once';
         if (*{$class . '::DEMOLISH'}{CODE}) {
             $demolishall .= "${class}::DEMOLISH(\$self);\n";
         }
@@ -21,7 +22,17 @@ sub _generate_destructor{
     my $source = sprintf("#line %d %s\n", __LINE__, __FILE__) . <<"...";
     sub {
         my \$self = shift;
-        $demolishall;
+        local \$?;
+
+        my \$e = do{
+            local \$@;
+            eval{
+                $demolishall;
+            };
+            \$@;
+        };
+        no warnings 'misc';
+        die \$e if \$e; # rethrow
     }
 ...
 
@@ -37,3 +48,17 @@ sub _generate_destructor{
 
 1;
 __END__
+
+=head1 NAME
+
+Mouse::Meta::Method::Accessor - A Mouse method generator for destructors
+
+=head1 VERSION
+
+This document describes Mouse version 0.39
+
+=head1 SEE ALSO
+
+L<Moose::Meta::Method::Destructor>
+
+=cut