64-bit work. Now 32-bit platforms get a 100% make test
[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   Mandatory Warnings
36   ------------------
37   Malformed UTF-8 character [sv_pos_b2u]
38       my $a = rindex "a\xff bc ", "bc" ;
39
40   Mandatory Warnings TODO
41   ------------------
42     Attempt to free non-arena SV: 0x%lx         [del_sv]
43     Reference miscount in sv_replace()          [sv_replace]
44     Attempt to free unreferenced scalar         [sv_free]
45     Attempt to free temp prematurely: SV 0x%lx  [sv_free]
46     semi-panic: attempt to dup freed string     [newSVsv]
47     
48
49 __END__
50 # sv.c
51 use integer ;
52 use warning 'uninitialized' ;
53 $x = 1 + $a[0] ; # a
54 no warning 'uninitialized' ;
55 $x = 1 + $b[0] ; # a
56 EXPECT
57 Use of uninitialized value at - line 4.
58 ########
59 # sv.c (sv_2iv)
60 package fred ;
61 sub TIESCALAR { my $x ; bless \$x}
62 sub FETCH { return undef }
63 sub STORE { return 1 }
64 package main ;
65 tie $A, 'fred' ;
66 use integer ;
67 use warning 'uninitialized' ;
68 $A *= 2 ;
69 no warning 'uninitialized' ;
70 $A *= 2 ;
71 EXPECT
72 Use of uninitialized value at - line 10.
73 ########
74 # sv.c
75 use integer ;
76 use warning 'uninitialized' ;
77 my $x *= 2 ; #b 
78 no warning 'uninitialized' ;
79 my $y *= 2 ; #b 
80 EXPECT
81 Use of uninitialized value at - line 4.
82 ########
83 # sv.c (sv_2uv)
84 package fred ;
85 sub TIESCALAR { my $x ; bless \$x}
86 sub FETCH { return undef }
87 sub STORE { return 1 }
88 package main ;
89 tie $A, 'fred' ;
90 use warning 'uninitialized' ;
91 $B = 0 ;
92 $B |= $A ;
93 no warning 'uninitialized' ;
94 $B = 0 ;
95 $B |= $A ;
96 EXPECT
97 Use of uninitialized value at - line 10.
98 ########
99 # sv.c
100 use warning 'uninitialized' ;
101 my $Y = 1 ; 
102 my $x = 1 | $a[$Y] ;
103 no warning 'uninitialized' ;
104 my $Y = 1 ; 
105 $x = 1 | $b[$Y] ;
106 EXPECT
107 Use of uninitialized value at - line 4.
108 ########
109 # sv.c
110 use warning 'uninitialized' ;
111 my $x *= 1 ; # d
112 no warning 'uninitialized' ;
113 my $y *= 1 ; # d
114 EXPECT
115 Use of uninitialized value at - line 3.
116 ########
117 # sv.c
118 use warning 'uninitialized' ;
119 $x = 1 + $a[0] ; # e
120 no warning 'uninitialized' ;
121 $x = 1 + $b[0] ; # e
122 EXPECT
123 Use of uninitialized value at - line 3.
124 ########
125 # sv.c (sv_2nv)
126 package fred ;
127 sub TIESCALAR { my $x ; bless \$x}
128 sub FETCH { return undef }
129 sub STORE { return 1 }
130 package main ;
131 tie $A, 'fred' ;
132 use warning 'uninitialized' ;
133 $A *= 2 ;
134 no warning 'uninitialized' ;
135 $A *= 2 ;
136 EXPECT
137 Use of uninitialized value at - line 9.
138 ########
139 # sv.c
140 use warning 'uninitialized' ;
141 $x = $y + 1 ; # f
142 no warning 'uninitialized' ;
143 $x = $z + 1 ; # f
144 EXPECT
145 Use of uninitialized value at - line 3.
146 ########
147 # sv.c
148 use warning 'uninitialized' ;
149 $x = chop undef ; # g
150 no warning 'uninitialized' ;
151 $x = chop undef ; # g
152 EXPECT
153 Modification of a read-only value attempted at - line 3.
154 ########
155 # sv.c
156 use warning 'uninitialized' ;
157 $x = chop $y ; # h
158 no warning 'uninitialized' ;
159 $x = chop $z ; # h
160 EXPECT
161 Use of uninitialized value at - line 3.
162 ########
163 # sv.c (sv_2pv)
164 package fred ;
165 sub TIESCALAR { my $x ; bless \$x}
166 sub FETCH { return undef }
167 sub STORE { return 1 }
168 package main ;
169 tie $A, 'fred' ;
170 use warning 'uninitialized' ;
171 $B = "" ;
172 $B .= $A ;
173 no warning 'uninitialized' ;
174 $C = "" ;
175 $C .= $A ;
176 EXPECT
177 Use of uninitialized value at - line 10.
178 ########
179 # sv.c 
180 use warning 'numeric' ;
181 sub TIESCALAR{bless[]} ; 
182 sub FETCH {"def"} ; 
183 tie $a,"main" ; 
184 my $b = 1 + $a;
185 no warning 'numeric' ;
186 my $c = 1 + $a;
187 EXPECT
188 Argument "def" isn't numeric in add at - line 6.
189 ########
190 # sv.c
191 use warning 'numeric' ;
192 my $x = 1 + "def" ;
193 no warning 'numeric' ;
194 my $z = 1 + "def" ;
195 EXPECT
196 Argument "def" isn't numeric in add at - line 3.
197 ########
198 # sv.c
199 use warning 'numeric' ;
200 my $a = "def" ;
201 my $x = 1 + $a ;
202 no warning 'numeric' ;
203 my $y = 1 + $a ;
204 EXPECT
205 Argument "def" isn't numeric in add at - line 4.
206 ########
207 # sv.c
208 use warning 'numeric' ; use integer ;
209 my $a = "def" ;
210 my $x = 1 + $a ;
211 no warning 'numeric' ;
212 my $z = 1 + $a ;
213 EXPECT
214 Argument "def" isn't numeric in i_add at - line 4.
215 ########
216 # sv.c
217 use warning 'numeric' ;
218 my $x = 1 & "def" ;
219 no warning 'numeric' ;
220 my $z = 1 & "def" ;
221 EXPECT
222 Argument "def" isn't numeric in bit_and at - line 3.
223 ########
224 # sv.c
225 use warning 'redefine' ;
226 sub fred {}  
227 sub joe {} 
228 *fred = \&joe ;
229 no warning 'redefine' ;
230 sub jim {} 
231 *jim = \&joe ;
232 EXPECT
233 Subroutine fred redefined at - line 5.
234 ########
235 # sv.c
236 use warning 'printf' ;
237 open F, ">".($^O eq 'VMS'? 'NL:' : '/dev/null') ;
238 printf F "%z\n" ;
239 my $a = sprintf "%z" ;
240 printf F "%" ;
241 $a = sprintf "%" ;
242 printf F "%\x02" ;
243 $a = sprintf "%\x02" ;
244 no warning 'printf' ;
245 printf F "%z\n" ;
246 $a = sprintf "%z" ;
247 printf F "%" ;
248 $a = sprintf "%" ;
249 printf F "%\x02" ;
250 $a = sprintf "%\x02" ;
251 EXPECT
252 Invalid conversion in sprintf: "%z" at - line 5.
253 Invalid conversion in sprintf: end of string at - line 7.
254 Invalid conversion in sprintf: "%\002" at - line 9.
255 Invalid conversion in printf: "%z" at - line 4.
256 Invalid conversion in printf: end of string at - line 6.
257 Invalid conversion in printf: "%\002" at - line 8.
258 ########
259 # sv.c
260 use warning 'unsafe' ;
261 *a = undef ;
262 no warning 'unsafe' ;
263 *b = undef ;
264 EXPECT
265 Undefined value assigned to typeglob at - line 3.
266 ########
267 # sv.c
268 use utf8 ;
269 $^W =0 ;
270 {
271   use warning 'utf8' ;
272   my $a = rindex "a\xff bc ", "bc" ;
273   no warning 'utf8' ;
274   $a = rindex "a\xff bc ", "bc" ;
275 }
276 my $a = rindex "a\xff bc ", "bc" ;
277 EXPECT
278 \xff will produce malformed UTF-8 character; use \x{ff} for that at - line 6.
279 Malformed UTF-8 character at - line 6.
280 Malformed UTF-8 character at - line 10.