Fix UV_SIZEOF to UVSIZE; change the overflow tests
[p5sagit/p5-mst-13.2.git] / t / pragma / warn / 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]
40       my $a = rindex "a\xff bc ", "bc" ;
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 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 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 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 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 at - line 4.
110 ########
111 # sv.c
112 use warnings 'uninitialized' ;
113 my $x *= 1 ; # d
114 no warnings 'uninitialized' ;
115 my $y *= 1 ; # d
116 EXPECT
117 Use of uninitialized value at - line 3.
118 ########
119 # sv.c
120 use warnings 'uninitialized' ;
121 $x = 1 + $a[0] ; # e
122 no warnings 'uninitialized' ;
123 $x = 1 + $b[0] ; # e
124 EXPECT
125 Use of uninitialized value at - line 3.
126 ########
127 # sv.c (sv_2nv)
128 package fred ;
129 sub TIESCALAR { my $x ; bless \$x}
130 sub FETCH { return undef }
131 sub STORE { return 1 }
132 package main ;
133 tie $A, 'fred' ;
134 use warnings 'uninitialized' ;
135 $A *= 2 ;
136 no warnings 'uninitialized' ;
137 $A *= 2 ;
138 EXPECT
139 Use of uninitialized value at - line 9.
140 ########
141 # sv.c
142 use warnings 'uninitialized' ;
143 $x = $y + 1 ; # f
144 no warnings 'uninitialized' ;
145 $x = $z + 1 ; # f
146 EXPECT
147 Use of uninitialized value at - line 3.
148 ########
149 # sv.c
150 use warnings 'uninitialized' ;
151 $x = chop undef ; # g
152 no warnings 'uninitialized' ;
153 $x = chop undef ; # g
154 EXPECT
155 Modification of a read-only value attempted at - line 3.
156 ########
157 # sv.c
158 use warnings 'uninitialized' ;
159 $x = chop $y ; # h
160 no warnings 'uninitialized' ;
161 $x = chop $z ; # h
162 EXPECT
163 Use of uninitialized value at - line 3.
164 ########
165 # sv.c (sv_2pv)
166 package fred ;
167 sub TIESCALAR { my $x ; bless \$x}
168 sub FETCH { return undef }
169 sub STORE { return 1 }
170 package main ;
171 tie $A, 'fred' ;
172 use warnings 'uninitialized' ;
173 $B = "" ;
174 $B .= $A ;
175 no warnings 'uninitialized' ;
176 $C = "" ;
177 $C .= $A ;
178 EXPECT
179 Use of uninitialized value at - line 10.
180 ########
181 # sv.c 
182 use warnings 'numeric' ;
183 sub TIESCALAR{bless[]} ; 
184 sub FETCH {"def"} ; 
185 tie $a,"main" ; 
186 my $b = 1 + $a;
187 no warnings 'numeric' ;
188 my $c = 1 + $a;
189 EXPECT
190 Argument "def" isn't numeric in add at - line 6.
191 ########
192 # sv.c
193 use warnings 'numeric' ;
194 my $x = 1 + "def" ;
195 no warnings 'numeric' ;
196 my $z = 1 + "def" ;
197 EXPECT
198 Argument "def" isn't numeric in add at - line 3.
199 ########
200 # sv.c
201 use warnings 'numeric' ;
202 my $a = "def" ;
203 my $x = 1 + $a ;
204 no warnings 'numeric' ;
205 my $y = 1 + $a ;
206 EXPECT
207 Argument "def" isn't numeric in add at - line 4.
208 ########
209 # sv.c
210 use warnings 'numeric' ; use integer ;
211 my $a = "def" ;
212 my $x = 1 + $a ;
213 no warnings 'numeric' ;
214 my $z = 1 + $a ;
215 EXPECT
216 Argument "def" isn't numeric in i_add at - line 4.
217 ########
218 # sv.c
219 use warnings 'numeric' ;
220 my $x = 1 & "def" ;
221 no warnings 'numeric' ;
222 my $z = 1 & "def" ;
223 EXPECT
224 Argument "def" isn't numeric in bit_and at - line 3.
225 ########
226 # sv.c
227 use warnings 'redefine' ;
228 sub fred {}  
229 sub joe {} 
230 *fred = \&joe ;
231 no warnings 'redefine' ;
232 sub jim {} 
233 *jim = \&joe ;
234 EXPECT
235 Subroutine fred redefined at - line 5.
236 ########
237 # sv.c
238 use warnings 'printf' ;
239 open F, ">".($^O eq 'VMS'? 'NL:' : '/dev/null') ;
240 printf F "%z\n" ;
241 my $a = sprintf "%z" ;
242 printf F "%" ;
243 $a = sprintf "%" ;
244 printf F "%\x02" ;
245 $a = sprintf "%\x02" ;
246 no warnings 'printf' ;
247 printf F "%z\n" ;
248 $a = sprintf "%z" ;
249 printf F "%" ;
250 $a = sprintf "%" ;
251 printf F "%\x02" ;
252 $a = sprintf "%\x02" ;
253 EXPECT
254 Invalid conversion in sprintf: "%z" at - line 5.
255 Invalid conversion in sprintf: end of string at - line 7.
256 Invalid conversion in sprintf: "%\002" at - line 9.
257 Invalid conversion in printf: "%z" at - line 4.
258 Invalid conversion in printf: end of string at - line 6.
259 Invalid conversion in printf: "%\002" at - line 8.
260 ########
261 # sv.c
262 use warnings 'unsafe' ;
263 *a = undef ;
264 no warnings 'unsafe' ;
265 *b = undef ;
266 EXPECT
267 Undefined value assigned to typeglob at - line 3.
268 ########
269 # sv.c
270 use utf8 ;
271 $^W =0 ;
272 {
273   use warnings 'utf8' ;
274   my $a = rindex "a\xff bc ", "bc" ;
275   no warnings 'utf8' ;
276   $a = rindex "a\xff bc ", "bc" ;
277 }
278 my $a = rindex "a\xff bc ", "bc" ;
279 EXPECT
280 \xff will produce malformed UTF-8 character; use \x{ff} for that at - line 6.
281 Malformed UTF-8 character at - line 6.
282 Malformed UTF-8 character at - line 10.