We only need local $? if we inline calls to DEMOLISH
Shawn M Moore [Tue, 28 Aug 2012 09:15:27 +0000 (11:15 +0200)]
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),