We only need local $? if we inline calls to DEMOLISH
[gitmo/Moose.git] / lib / Moose / Meta / Method / Destructor.pm
index aa3059e..e06a13d 100644 (file)
@@ -81,7 +81,6 @@ sub _initialize_body {
             'my $self = shift;',
             'return ' . $self->_generate_fallback_destructor('$self'),
                 'if Scalar::Util::blessed($self) ne \'' . $class . '\';',
-            'local $?;',
             $self->_generate_DEMOLISHALL('$self'),
             'return;',
         '}',
@@ -118,6 +117,7 @@ sub _generate_DEMOLISHALL {
     return unless @methods;
 
     return (
+        'local $?;',
         'my $igd = Devel::GlobalDestruction::in_global_destruction;',
         'Try::Tiny::try {',
             (map { $inv . '->' . $_->{class} . '::DEMOLISH($igd);' } @methods),