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