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