The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
  pad.c		AOK

     "%s" variable %s masks earlier declaration in same scope
	my $x;
	my $x ;

     Variable "%s" will not stay shared 
	sub x {
      	    my $x;
      	    sub y {
         	sub { $x }
      	    }
   	}

	sub x {
      	    my $x;
      	    sub y {
         	$x
      	    }
   	}

    "our" variable %s redeclared	(Did you mean "local" instead of "our"?)
	our $x;
	{
	    our $x;
	}

    %s never introduced		[pad_leavemy]	TODO
    
__END__
# pad.c
use warnings 'misc' ;
my $x ;
my $x ;
my $y = my $y ;
my $p ;
package X ;
my $p ;
package main ;
no warnings 'misc' ;
my $x ;
my $y ;
my $p ;
EXPECT
"my" variable $x masks earlier declaration in same scope at - line 4 character 7.
"my" variable $y masks earlier declaration in same statement at - line 5 character 15.
"my" variable $p masks earlier declaration in same scope at - line 8 character 7.
########
# pad.c
use warnings 'misc' ;
our $x ;
my $x ;
our $y = my $y ;
our $p ;
package X ;
my $p ;
package main ;
no warnings 'misc' ;
our $z ;
my $z ;
our $t = my $t ;
our $q ;
package X ;
my $q ;
EXPECT
"my" variable $x masks earlier declaration in same scope at - line 4 character 7.
"my" variable $y masks earlier declaration in same statement at - line 5 character 16.
"my" variable $p masks earlier declaration in same scope at - line 8 character 7.
########
# pad.c
use warnings 'misc' ;
my $x ;
our $x ;
my $y = our $y ;
my $p ;
package X ;
our $p ;
package main ;
no warnings 'misc' ;
my $z ;
our $z ;
my $t = our $t ;
my $q ;
package X ;
our $q ;
EXPECT
"our" variable $x masks earlier declaration in same scope at - line 4 character 8.
"our" variable $y masks earlier declaration in same statement at - line 5 character 16.
"our" variable $p masks earlier declaration in same scope at - line 8 character 8.
########
# TODO pad.c
use warnings 'closure' ;
sub x {
      my $x;
      sub y {
         $x
      }
   }
EXPECT
Variable "$x" will not stay shared at - line 7 character 7.
########
# pad.c
no warnings 'closure' ;
sub x {
      my $x;
     sub y {
         $x
      }
   }
EXPECT

########
# TODO pad.c
use warnings 'closure' ;
sub x {
      my $x;
      sub y {
         sub { $x }
      }
   }
EXPECT
Variable "$x" will not stay shared at - line 6 character 19.
########
# TODO pad.c
use warnings 'closure' ;
sub x {
    my $x;
    sub {
	$x;
	sub y {
	    $x
	}
    }->();
}
EXPECT
Variable "$x" will not stay shared at - line 9 character 2.
########
# TODO pad.c
use warnings 'closure' ;
my $x;
sub {
    $x;
    sub f {
	sub { $x }->();
    }
}->();
EXPECT

########
# TODO pad.c
use warnings 'closure' ;
sub {
    my $x;
    sub f { $x }
}->();
EXPECT
Variable "$x" is not available at - line 5 character 16.
########
# TODO pad.c
use warnings 'closure' ;
sub {
    my $x;
    eval 'sub f { $x }';
}->();
EXPECT

########
# TODO pad.c
use warnings 'closure' ;
sub {
    my $x;
    sub f { eval '$x' }
}->();
f();
EXPECT
Variable "$x" is not available at (eval 1) line 2 character 4.
    (eval) called at - line 5 character 13.
    main::f called at - line 7 character 1.
########
# TODO pad.c
use warnings 'closure' ;
sub x {
      our $x;
      sub y {
         $x
      }
   }
EXPECT

########
# pad.c
# see bugid 1754
use warnings 'closure' ;
sub f {
    my $x = "ok";
    sub { eval 'print $^STDOUT, $x, "\n"' };
}
f()->();
EXPECT
ok
########
use warnings 'closure' ;
do {
    my $x = "ok";
    sub f2 { eval 'print $^STDOUT, $x, "\n"' }
};
f2();
EXPECT
ok
########
# TODO
use warnings 'closure' ;
for my $x (1..3) {
    sub f { eval '$x' }
    f();
}
f();
EXPECT
Variable "$x" is not available at (eval 4) line 2 character 4.
    (eval) called at - line 3 character 13.
    main::f called at - line 6 character 1.
########
# TODO pad.c
no warnings 'closure' ;
sub x {
      my $x;
      sub y {
         sub { $x }
      }
   }
EXPECT

########
use warnings 'misc' ;
my $x;
do {
    my $x;
};
EXPECT

########
# TODO pad.c
use warnings 'misc' ;
our $x ;
our $x ;
our $y = our $y ;
our $p ;
package X ;
our $p ;
package main ;
no warnings 'misc' ;
our $a ;
our $a ;
our $b = our $b ;
our $c ;
package X ;
our $c ;
EXPECT
"our" variable $x redeclared at - line 4.
"our" variable $y redeclared at - line 5.
########
# TODO
use warnings 'misc' ;
our $x;
do {
    our $x;
};
our $x;
no warnings 'misc' ;
our $y;
do {
    our $y;
};
our $y;
EXPECT
"our" variable $x redeclared at - line 4.
	(Did you mean "local" instead of "our"?)
 at - line 4.
"our" variable $x redeclared at - line 6.
########
use warnings 'misc' ;
our $x;
do {
    my $x;
};
no warnings 'misc' ;
our $y;
do {
    my $y;
};
EXPECT

########
use warnings 'misc' ;
my $x;
do {
    our $x;
};
no warnings 'misc' ;
my $y;
do {
    our $y;
};
EXPECT

########
use warnings 'misc' ;
my $x;
do {
    my $x;
};
no warnings 'misc' ;
my $y;
do {
    my $y;
};
EXPECT

########
# an our var being introduced should suppress errors about global syms

our $x unless $x;
EXPECT

########