This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
pat_re_eval.t: remove 'no warnings'
authorDavid Mitchell <davem@iabyn.com>
Thu, 8 Dec 2011 16:27:33 +0000 (16:27 +0000)
committerDavid Mitchell <davem@iabyn.com>
Wed, 13 Jun 2012 12:32:47 +0000 (13:32 +0100)
Now the the closure behaviour of code blocks within regexes is mostly
fixes, remove the

    no warnings qw(uninitialized closure);

that protected many of the closure tests.

This also showed up that one of my recent tests didn't realise
the whose test file is wrapped in a sub, so my test code destructor
looked like

    sub run_tests {
...
my $d;
sub DESTRUCTOR { $d++ }
...
    }

so fix that test to remove the closure warning.

t/re/pat_re_eval.t

index 987b0db..75cb5ca 100644 (file)
@@ -367,8 +367,6 @@ sub run_tests {
            ok($_[0], $_[1]);
        }
 
-       # XXX remove this when TODOs are fixed
-       no warnings qw(uninitialized closure);
 
        # if the pattern string gets utf8 upgraded while concatenating,
        # make sure a literal code block is still detected (by still
@@ -586,24 +584,23 @@ sub run_tests {
        # and make sure things are freed at the right time
 
        {
-           package Foo99;
-           my $d = 0;
-           sub DESTROY { $d++ }
 
            {
+               sub Foo99::DESTROY { $Foo99::d++ }
+               $Foo99::d = 0;
                my $r1;
                {
-                   my $x = bless [1];
+                   my $x = bless [1], 'Foo99';
                    $r1 = eval 'qr/(??{$x->[0]})/';
                }
                my $r2 = eval 'qr/a$r1/';
                my $x = 2;
-               ::ok(eval '"a1" =~ qr/^$r2$/', "match while in scope");
+               ok(eval '"a1" =~ qr/^$r2$/', "match while in scope");
                # make sure PL_reg_curpm isn't holding on to anything
                "a" =~ /a(?{1})/;
-               ::is($d, 0, "before scope exit");
+               is($Foo99::d, 0, "before scope exit");
            }
-           ::is($d, 1, "after scope exit");
+           ::is($Foo99::d, 1, "after scope exit");
        }
 
        # forward declared subs should Do The Right Thing with any anon CVs