Overhaul the semantics of the warning
[p5sagit/p5-mst-13.2.git] / t / lib / warnings / pad
CommitLineData
f21d7107 1 pad.c AOK
2
3 "my" variable %s masks earlier declaration in same scope
4 my $x;
5 my $x ;
6
b5c19bd7 7 Variable "%s" will not stay shared
f21d7107 8 sub x {
9 my $x;
10 sub y {
b5c19bd7 11 sub { $x }
f21d7107 12 }
13 }
14
f21d7107 15 sub x {
16 my $x;
17 sub y {
b5c19bd7 18 $x
f21d7107 19 }
20 }
b5c19bd7 21
f21d7107 22 "our" variable %s redeclared (Did you mean "local" instead of "our"?)
23 our $x;
24 {
25 our $x;
26 }
27
28 %s never introduced [pad_leavemy] TODO
29
30__END__
31# pad.c
32use warnings 'misc' ;
33my $x ;
34my $x ;
35my $y = my $y ;
f2f96cd5 36my $p ;
37package X ;
38my $p ;
39package main ;
f21d7107 40no warnings 'misc' ;
41my $x ;
42my $y ;
f2f96cd5 43my $p ;
f21d7107 44EXPECT
45"my" variable $x masks earlier declaration in same scope at - line 4.
46"my" variable $y masks earlier declaration in same statement at - line 5.
f2f96cd5 47"my" variable $p masks earlier declaration in same scope at - line 8.
f21d7107 48########
49# pad.c
f793795c 50use warnings 'misc' ;
51our $x ;
52our $x ;
53our $y = our $y ;
f2f96cd5 54our $p ;
55package X ;
56our $p ;
f793795c 57EXPECT
f793795c 58########
59# pad.c
60use warnings 'misc' ;
61our $x ;
62my $x ;
63our $y = my $y ;
f2f96cd5 64our $p ;
65package X ;
66my $p ;
67package main ;
f793795c 68no warnings 'misc' ;
69our $z ;
70my $z ;
71our $t = my $t ;
f2f96cd5 72our $q ;
73package X ;
74my $q ;
f793795c 75EXPECT
76"my" variable $x masks earlier declaration in same scope at - line 4.
77"my" variable $y masks earlier declaration in same statement at - line 5.
f2f96cd5 78"my" variable $p masks earlier declaration in same scope at - line 8.
f793795c 79########
80# pad.c
f793795c 81use warnings 'misc' ;
82my $x ;
83our $x ;
84my $y = our $y ;
f2f96cd5 85my $p ;
86package X ;
87our $p ;
88package main ;
f793795c 89no warnings 'misc' ;
90my $z ;
91our $z ;
92my $t = our $t ;
f2f96cd5 93my $q ;
94package X ;
95our $q ;
f793795c 96EXPECT
f2f96cd5 97"our" variable $x masks earlier declaration in same scope at - line 4.
98"our" variable $y masks earlier declaration in same statement at - line 5.
99"our" variable $p masks earlier declaration in same scope at - line 8.
f793795c 100########
101# pad.c
f21d7107 102use warnings 'closure' ;
103sub x {
104 my $x;
105 sub y {
106 $x
107 }
108 }
109EXPECT
110Variable "$x" will not stay shared at - line 7.
111########
112# pad.c
113no warnings 'closure' ;
114sub x {
115 my $x;
116 sub y {
117 $x
118 }
119 }
120EXPECT
121
122########
123# pad.c
124use warnings 'closure' ;
125sub x {
b5c19bd7 126 my $x;
f21d7107 127 sub y {
b5c19bd7 128 sub { $x }
f21d7107 129 }
130 }
131EXPECT
b5c19bd7 132Variable "$x" will not stay shared at - line 6.
133########
134# pad.c
135use warnings 'closure' ;
136sub x {
137 my $x;
138 sub {
139 $x;
140 sub y {
141 $x
142 }
143 }->();
144}
145EXPECT
146Variable "$x" will not stay shared at - line 9.
147########
148# pad.c
149use warnings 'closure' ;
150my $x;
151sub {
152 $x;
153 sub f {
154 sub { $x }->();
155 }
156}->();
157EXPECT
f21d7107 158
159########
160# pad.c
161use warnings 'closure' ;
b5c19bd7 162sub {
163 my $x;
164 sub f { $x }
165}->();
166EXPECT
167Variable "$x" is not available at - line 5.
168########
169# pad.c
170use warnings 'closure' ;
171sub {
172 my $x;
173 eval 'sub f { $x }';
174}->();
175EXPECT
176
177########
178# pad.c
179use warnings 'closure' ;
180sub {
181 my $x;
182 sub f { eval '$x' }
183}->();
184f();
185EXPECT
186Variable "$x" is not available at (eval 1) line 2.
187########
188# pad.c
189use warnings 'closure' ;
f21d7107 190sub x {
b5c19bd7 191 our $x;
f21d7107 192 sub y {
b5c19bd7 193 $x
f21d7107 194 }
195 }
196EXPECT
b5c19bd7 197
198########
199# pad.c
200# see bugid 1754
201use warnings 'closure' ;
202sub f {
203 my $x;
204 sub { eval '$x' };
205}
206f()->();
207EXPECT
208Variable "$x" is not available at (eval 1) line 2.
f21d7107 209########
2740392c 210use warnings 'closure' ;
211{
212 my $x = 1;
213 $y = \$x; # force abandonment rather than clear-in-place at scope exit
214 sub f2 { eval '$x' }
215}
216f2();
217EXPECT
218Variable "$x" is not available at (eval 1) line 2.
219########
14f338dc 220use warnings 'closure' ;
221for my $x (1,2,3) {
222 sub f { eval '$x' }
223 f();
224}
225f();
226EXPECT
227Variable "$x" is not available at (eval 4) line 2.
228########
f21d7107 229# pad.c
230no warnings 'closure' ;
231sub x {
232 my $x;
233 sub y {
234 sub { $x }
235 }
236 }
237EXPECT
238
239########
240use warnings 'misc' ;
f2f96cd5 241my $x;
242{
243 my $x;
244}
245EXPECT
246########
247use warnings 'misc' ;
f21d7107 248our $x;
249{
250 our $x;
251}
252EXPECT
253"our" variable $x redeclared at - line 4.
254 (Did you mean "local" instead of "our"?)
929a0744 255########
f2f96cd5 256use warnings 'misc' ;
257our $x;
258{
259 my $x;
260}
261EXPECT
262########
263use warnings 'misc' ;
264my $x;
265{
266 our $x;
267}
268EXPECT
269########
929a0744 270# an our var being introduced should suppress errors about global syms
271use strict;
272use warnings;
273our $x unless $x;
274EXPECT