This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #72090] unitialized variable name wrong with no strict refs
[perl5.git] / t / lib / warnings / sv
1   sv.c  
2
3   warn(warn_uninit);
4
5   warn(warn_uninit);
6
7   warn(warn_uninit);
8
9   warn(warn_uninit);
10
11   not_a_number(sv);
12
13   not_a_number(sv);
14
15   warn(warn_uninit);
16
17   not_a_number(sv);
18
19   warn(warn_uninit);
20
21   not_a_number(sv);
22
23   not_a_number(sv);
24
25   warn(warn_uninit);
26
27   warn(warn_uninit);
28
29   Subroutine %s redefined       
30
31   Invalid conversion in %s:
32
33   Undefined value assigned to typeglob
34
35   Reference is already weak                     [Perl_sv_rvweaken] <<TODO
36
37   Mandatory Warnings
38   ------------------
39   Malformed UTF-8 character [sv_pos_b2u] (not tested: difficult to produce
40                                           with perl now)
41
42   Mandatory Warnings TODO
43   ------------------
44     Attempt to free non-arena SV: 0x%lx         [del_sv]
45     Reference miscount in sv_replace()          [sv_replace]
46     Attempt to free unreferenced scalar         [sv_free]
47     Attempt to free temp prematurely: SV 0x%lx  [sv_free]
48     semi-panic: attempt to dup freed string     [newSVsv]
49     
50
51 __END__
52 # sv.c
53 use integer ;
54 use warnings 'uninitialized' ;
55 $x = 1 + $a[0] ; # a
56 no warnings 'uninitialized' ;
57 $x = 1 + $b[0] ; # a
58 EXPECT
59 Use of uninitialized value $a[0] in integer addition (+) at - line 4.
60 ########
61 # sv.c (sv_2iv)
62 package fred ;
63 sub TIESCALAR { my $x ; bless \$x}
64 sub FETCH { return undef }
65 sub STORE { return 1 }
66 package main ;
67 tie $A, 'fred' ;
68 use integer ;
69 use warnings 'uninitialized' ;
70 $A *= 2 ;
71 no warnings 'uninitialized' ;
72 $A *= 2 ;
73 EXPECT
74 Use of uninitialized value $A in integer multiplication (*) at - line 10.
75 ########
76 # sv.c
77 use integer ;
78 use warnings 'uninitialized' ;
79 my $x *= 2 ; #b 
80 no warnings 'uninitialized' ;
81 my $y *= 2 ; #b 
82 EXPECT
83 Use of uninitialized value $x in integer multiplication (*) at - line 4.
84 ########
85 # sv.c (sv_2uv)
86 package fred ;
87 sub TIESCALAR { my $x ; bless \$x}
88 sub FETCH { return undef }
89 sub STORE { return 1 }
90 package main ;
91 tie $A, 'fred' ;
92 use warnings 'uninitialized' ;
93 $B = 0 ;
94 $B |= $A ;
95 no warnings 'uninitialized' ;
96 $B = 0 ;
97 $B |= $A ;
98 EXPECT
99 Use of uninitialized value $A in bitwise or (|) at - line 10.
100 ########
101 # sv.c
102 use warnings 'uninitialized' ;
103 my $Y = 1 ; 
104 my $x = 1 | $a[$Y] ;
105 no warnings 'uninitialized' ;
106 my $Y = 1 ; 
107 $x = 1 | $b[$Y] ;
108 EXPECT
109 Use of uninitialized value within @a in bitwise or (|) at - line 4.
110 ########
111 # sv.c
112 use warnings 'uninitialized' ;
113 my $Y = 1 ; 
114 my $x = 1 & $a[$Y] ;
115 no warnings 'uninitialized' ;
116 my $Y = 1 ; 
117 $x = 1 & $b[$Y] ;
118 EXPECT
119 Use of uninitialized value within @a in bitwise and (&) at - line 4.
120 ########
121 # sv.c
122 use warnings 'uninitialized' ;
123 my $Y = 1 ; 
124 my $x = ~$a[$Y] ;
125 no warnings 'uninitialized' ;
126 my $Y = 1 ; 
127 $x = ~$b[$Y] ;
128 EXPECT
129 Use of uninitialized value within @a in 1's complement (~) at - line 4.
130 ########
131 # sv.c
132 use warnings 'uninitialized' ;
133 my $x *= 1 ; # d
134 no warnings 'uninitialized' ;
135 my $y *= 1 ; # d
136 EXPECT
137 Use of uninitialized value $x in multiplication (*) at - line 3.
138 ########
139 # sv.c
140 use warnings 'uninitialized' ;
141 $x = 1 + $a[0] ; # e
142 no warnings 'uninitialized' ;
143 $x = 1 + $b[0] ; # e
144 EXPECT
145 Use of uninitialized value $a[0] in addition (+) at - line 3.
146 ########
147 # sv.c (sv_2nv)
148 package fred ;
149 sub TIESCALAR { my $x ; bless \$x}
150 sub FETCH { return undef }
151 sub STORE { return 1 }
152 package main ;
153 tie $A, 'fred' ;
154 use warnings 'uninitialized' ;
155 $A *= 2 ;
156 no warnings 'uninitialized' ;
157 $A *= 2 ;
158 EXPECT
159 Use of uninitialized value $A in multiplication (*) at - line 9.
160 ########
161 # sv.c
162 use warnings 'uninitialized' ;
163 $x = $y + 1 ; # f
164 no warnings 'uninitialized' ;
165 $x = $z + 1 ; # f
166 EXPECT
167 Use of uninitialized value $y in addition (+) at - line 3.
168 ########
169 # sv.c
170 use warnings 'uninitialized' ;
171 $x = chop undef ; # g
172 no warnings 'uninitialized' ;
173 $x = chop undef ; # g
174 EXPECT
175 Modification of a read-only value attempted at - line 3.
176 ########
177 # sv.c
178 use warnings 'uninitialized' ;
179 $x = chop $y ; # h
180 no warnings 'uninitialized' ;
181 $x = chop $z ; # h
182 EXPECT
183 Use of uninitialized value $y in scalar chop at - line 3.
184 ########
185 # sv.c (sv_2pv)
186 package fred ;
187 sub TIESCALAR { my $x ; bless \$x}
188 sub FETCH { return undef }
189 sub STORE { return 1 }
190 package main ;
191 tie $A, 'fred' ;
192 use warnings 'uninitialized' ;
193 $B = "" ;
194 $B .= $A ;
195 no warnings 'uninitialized' ;
196 $C = "" ;
197 $C .= $A ;
198 EXPECT
199 Use of uninitialized value $A in concatenation (.) or string at - line 10.
200 ########
201 # perlbug 20011116.125
202 use warnings 'uninitialized';
203 $a = undef;
204 $foo = join '', $a, "\n";
205 $foo = "$a\n";
206 $foo = "a:$a\n";
207 EXPECT
208 Use of uninitialized value $a in join or string at - line 4.
209 Use of uninitialized value $a in concatenation (.) or string at - line 5.
210 Use of uninitialized value $a in concatenation (.) or string at - line 6.
211 ########
212 # [perl #72090]
213 use warnings 'uninitialized';
214 $a = @$a > 0;
215 EXPECT
216 Use of uninitialized value $a in array dereference at - line 3.
217 Use of uninitialized value in numeric gt (>) at - line 3.
218 ########
219 # sv.c 
220 use warnings 'numeric' ;
221 sub TIESCALAR{bless[]} ; 
222 sub FETCH {"def"} ; 
223 tie $a,"main" ; 
224 my $b = 1 + $a;
225 no warnings 'numeric' ;
226 my $c = 1 + $a;
227 EXPECT
228 Argument "def" isn't numeric in addition (+) at - line 6.
229 ########
230 # sv.c
231 use warnings 'numeric' ;
232 my $x = 1 + "def" ;
233 no warnings 'numeric' ;
234 my $z = 1 + "def" ;
235 EXPECT
236 Argument "def" isn't numeric in addition (+) at - line 3.
237 ########
238 # sv.c
239 use warnings 'numeric' ;
240 my $a = "def" ;
241 my $x = 1 + $a ;
242 no warnings 'numeric' ;
243 my $y = 1 + $a ;
244 EXPECT
245 Argument "def" isn't numeric in addition (+) at - line 4.
246 ########
247 # sv.c
248 use warnings 'numeric' ; use integer ;
249 my $a = "def" ;
250 my $x = 1 + $a ;
251 no warnings 'numeric' ;
252 my $z = 1 + $a ;
253 EXPECT
254 Argument "def" isn't numeric in integer addition (+) at - line 4.
255 ########
256 # sv.c
257 use warnings 'numeric' ;
258 my $x = 1 & "def" ;
259 no warnings 'numeric' ;
260 my $z = 1 & "def" ;
261 EXPECT
262 Argument "def" isn't numeric in bitwise and (&) at - line 3.
263 ########
264 # sv.c
265 use warnings 'numeric' ;
266 my $x = pack i => "def" ;
267 no warnings 'numeric' ;
268 my $z = pack i => "def" ;
269 EXPECT
270 Argument "def" isn't numeric in pack at - line 3.
271 ########
272 # sv.c
273 use warnings 'numeric' ; 
274 my $a = "d\0f" ;
275 my $x = 1 + $a ;
276 no warnings 'numeric' ;
277 my $z = 1 + $a ;
278 EXPECT
279 Argument "d\0f" isn't numeric in addition (+) at - line 4.
280 ########
281 # sv.c
282 use warnings 'redefine' ;
283 sub fred {}  
284 sub joe {} 
285 *fred = \&joe ;
286 no warnings 'redefine' ;
287 sub jim {} 
288 *jim = \&joe ;
289 EXPECT
290 Subroutine main::fred redefined at - line 5.
291 ########
292 # sv.c
293 use warnings 'printf' ;
294 open F, ">".($^O eq 'VMS'? 'NL:' : '/dev/null') ;
295 printf F "%z\n" ;
296 my $a = sprintf "%z" ;
297 printf F "%" ;
298 $a = sprintf "%" ;
299 printf F "%\x02" ;
300 $a = sprintf "%\x02" ;
301 printf F "%llz" ;
302 $a = sprintf "%llz" ;
303 printf F "%25llz" ;
304 $a = sprintf "%25llz" ;
305 printf F "%+2Lz" ;
306 $a = sprintf "%+2Lz" ;
307 printf F "%+2ll" ;
308 $a = sprintf "%+2ll" ;
309 printf F "%+2L\x03" ;
310 $a = sprintf "%+2L\x03" ;
311 no warnings 'printf' ;
312 printf F "%z\n" ;
313 $a = sprintf "%z" ;
314 printf F "%" ;
315 $a = sprintf "%" ;
316 printf F "%\x02" ;
317 $a = sprintf "%\x02" ;
318 printf F "%llz" ;
319 $a = sprintf "%llz" ;
320 printf F "%25llz" ;
321 $a = sprintf "%25llz" ;
322 printf F "%+2Lz" ;
323 $a = sprintf "%+2Lz" ;
324 printf F "%+2ll" ;
325 $a = sprintf "%+2ll" ;
326 printf F "%+2L\x03" ;
327 $a = sprintf "%+2L\x03" ;
328 EXPECT
329 Invalid conversion in printf: "%z" at - line 4.
330 Invalid conversion in sprintf: "%z" at - line 5.
331 Invalid conversion in printf: end of string at - line 6.
332 Invalid conversion in sprintf: end of string at - line 7.
333 Invalid conversion in printf: "%\002" at - line 8.
334 Invalid conversion in sprintf: "%\002" at - line 9.
335 Invalid conversion in printf: "%llz" at - line 10.
336 Invalid conversion in sprintf: "%llz" at - line 11.
337 Invalid conversion in printf: "%25llz" at - line 12.
338 Invalid conversion in sprintf: "%25llz" at - line 13.
339 Invalid conversion in printf: "%+2Lz" at - line 14.
340 Invalid conversion in sprintf: "%+2Lz" at - line 15.
341 Invalid conversion in printf: "%+2ll" at - line 16.
342 Invalid conversion in sprintf: "%+2ll" at - line 17.
343 Invalid conversion in printf: "%+2L\003" at - line 18.
344 Invalid conversion in sprintf: "%+2L\003" at - line 19.
345 ########
346 # sv.c
347 use warnings 'misc' ;
348 *a = undef ;
349 no warnings 'misc' ;
350 *b = undef ;
351 EXPECT
352 Undefined value assigned to typeglob at - line 3.
353 ########
354 # sv.c
355 use warnings 'numeric' ;
356 $a = "\x{100}\x{200}" * 42;
357 no warnings 'numeric' ;
358 $a = "\x{100}\x{200}" * 42;
359 EXPECT
360 Argument "\x{100}\x{200}" isn't numeric in multiplication (*) at - line 3.
361 ########
362 # sv.c
363 use warnings 'numeric' ;
364 $a = "\x{100}\x{200}"; $a = -$a;
365 no warnings 'numeric' ;
366 $a = "\x{100}\x{200}"; $a = -$a;
367 EXPECT
368 Argument "\x{100}\x{200}" isn't numeric in negation (-) at - line 3.