Remove the "Newline in left-justified string" warning.
[p5sagit/p5-mst-13.2.git] / t / lib / warnings / pad
index 7dd2876..f0dce60 100644 (file)
@@ -4,21 +4,21 @@
        my $x;
        my $x ;
 
-     Variable "%s" may be unavailable 
+     Variable "%s" will not stay shared 
        sub x {
            my $x;
            sub y {
-               $x
+               sub { $x }
            }
        }
 
-     Variable "%s" will not stay shared 
        sub x {
            my $x;
            sub y {
-               sub { $x }
+               $x
            }
        }
+
     "our" variable %s redeclared       (Did you mean "local" instead of "our"?)
        our $x;
        {
@@ -41,6 +41,45 @@ EXPECT
 "my" variable $y masks earlier declaration in same statement at - line 5.
 ########
 # pad.c
+use warnings 'misc' ;
+our $x ;
+our $x ;
+our $y = our $y ;
+no warnings 'misc' ;
+our $x ;
+our $y ;
+EXPECT
+"our" variable $x masks earlier declaration in same scope at - line 4.
+"our" variable $y masks earlier declaration in same statement at - line 5.
+########
+# pad.c
+use warnings 'misc' ;
+our $x ;
+my $x ;
+our $y = my $y ;
+no warnings 'misc' ;
+our $z ;
+my $z ;
+our $t = my $t ;
+EXPECT
+"my" variable $x masks earlier declaration in same scope at - line 4.
+"my" variable $y masks earlier declaration in same statement at - line 5.
+########
+# pad.c
+# TODO not implemented yet
+use warnings 'misc' ;
+my $x ;
+our $x ;
+my $y = our $y ;
+no warnings 'misc' ;
+my $z ;
+our $z ;
+my $t = our $t ;
+EXPECT
+"our" variable $x masks earlier declaration in same scope at - line 5.
+"our" variable $y masks earlier declaration in same statement at - line 6.
+########
+# pad.c
 use warnings 'closure' ;
 sub x {
       my $x;
@@ -65,24 +104,108 @@ EXPECT
 # pad.c
 use warnings 'closure' ;
 sub x {
-      our $x;
+      my $x;
       sub y {
-         $x
+         sub { $x }
       }
    }
 EXPECT
+Variable "$x" will not stay shared at - line 6.
+########
+# pad.c
+use warnings 'closure' ;
+sub x {
+    my $x;
+    sub {
+       $x;
+       sub y {
+           $x
+       }
+    }->();
+}
+EXPECT
+Variable "$x" will not stay shared at - line 9.
+########
+# pad.c
+use warnings 'closure' ;
+my $x;
+sub {
+    $x;
+    sub f {
+       sub { $x }->();
+    }
+}->();
+EXPECT
 
 ########
 # pad.c
 use warnings 'closure' ;
+sub {
+    my $x;
+    sub f { $x }
+}->();
+EXPECT
+Variable "$x" is not available at - line 5.
+########
+# pad.c
+use warnings 'closure' ;
+sub {
+    my $x;
+    eval 'sub f { $x }';
+}->();
+EXPECT
+
+########
+# pad.c
+use warnings 'closure' ;
+sub {
+    my $x;
+    sub f { eval '$x' }
+}->();
+f();
+EXPECT
+Variable "$x" is not available at (eval 1) line 2.
+########
+# pad.c
+use warnings 'closure' ;
 sub x {
-      my $x;
+      our $x;
       sub y {
-         sub { $x }
+         $x
       }
    }
 EXPECT
-Variable "$x" may be unavailable at - line 6.
+
+########
+# pad.c
+# see bugid 1754
+use warnings 'closure' ;
+sub f {
+    my $x;
+    sub { eval '$x' };
+}
+f()->();
+EXPECT
+Variable "$x" is not available at (eval 1) line 2.
+########
+use warnings 'closure' ;
+{
+    my $x = 1;
+    $y = \$x; # force abandonment rather than clear-in-place at scope exit
+    sub f2 { eval '$x' }
+}
+f2();
+EXPECT
+Variable "$x" is not available at (eval 1) line 2.
+########
+use warnings 'closure' ;
+for my $x (1,2,3) {
+    sub f { eval '$x' }
+    f();
+}
+f();
+EXPECT
+Variable "$x" is not available at (eval 4) line 2.
 ########
 # pad.c
 no warnings 'closure' ;
@@ -103,3 +226,9 @@ our $x;
 EXPECT
 "our" variable $x redeclared at - line 4.
        (Did you mean "local" instead of "our"?)
+########
+# an our var being introduced should suppress errors about global syms
+use strict;
+use warnings;
+our $x unless $x;
+EXPECT