Avoid test failure on Linux when STDIN is /dev/null
[p5sagit/p5-mst-13.2.git] / t / lib / warnings / op
CommitLineData
599cee73 1 op.c AOK
2
599cee73 3 Found = in conditional, should be ==
4 1 if $a = 1 ;
5
6 Use of implicit split to @_ is deprecated
7 split ;
8
9 Use of implicit split to @_ is deprecated
10 $a = split ;
11
12 Useless use of time in void context
13 Useless use of a variable in void context
14 Useless use of a constant in void context
15 time ;
16 $a ;
17 "abc"
18
a801c63c 19 Useless use of sort in scalar context
20 my $x = sort (2,1,3);
21
599cee73 22 Applying %s to %s will act on scalar(%s)
23 my $a ; my @a = () ; my %a = () ; my $b = \@a ; my $c = \%a ;
24 @a =~ /abc/ ;
25 @a =~ s/a/b/ ;
26 @a =~ tr/a/b/ ;
27 @$b =~ /abc/ ;
28 @$b =~ s/a/b/ ;
29 @$b =~ tr/a/b/ ;
30 %a =~ /abc/ ;
31 %a =~ s/a/b/ ;
32 %a =~ tr/a/b/ ;
33 %$c =~ /abc/ ;
34 %$c =~ s/a/b/ ;
35 %$c =~ tr/a/b/ ;
36
37
df5b6949 38 Parentheses missing around "my" list at -e line 1.
599cee73 39 my $a, $b = (1,2);
40
df5b6949 41 Parentheses missing around "local" list at -e line 1.
599cee73 42 local $a, $b = (1,2);
43
34d09196 44 Bareword found in conditional at -e line 1.
e476b1b5 45 use warnings 'bareword'; my $x = print(ABC || 1);
599cee73 46
47 Value of %s may be \"0\"; use \"defined\"
48 $x = 1 if $x = <FH> ;
49 $x = 1 while $x = <FH> ;
50
51 Subroutine fred redefined at -e line 1.
52 sub fred{1;} sub fred{1;}
53
54 Constant subroutine %s redefined
55 sub fred() {1;} sub fred() {1;}
56
57 Format FRED redefined at /tmp/x line 5.
58 format FRED =
59 .
60 format FRED =
61 .
62
63 Array @%s missing the @ in argument %d of %s()
64 push fred ;
65
66 Hash %%%s missing the %% in argument %d of %s()
67 keys joe ;
68
69 Statement unlikely to be reached
cc507455 70 (Maybe you meant system() when you said exec()?
599cee73 71 exec "true" ; my $a
72
f10b0346 73 defined(@array) is deprecated
cc507455 74 (Maybe you should just omit the defined()?)
69794302 75 my @a ; defined @a ;
76 defined (@a = (1,2,3)) ;
77
f10b0346 78 defined(%hash) is deprecated
cc507455 79 (Maybe you should just omit the defined()?)
69794302 80 my %h ; defined %h ;
eb6e2d6f 81
82 /---/ should probably be written as "---"
83 join(/---/, @foo);
599cee73 84
767a6a26 85 %s() called too early to check prototype [Perl_peep]
86 fred() ; sub fred ($$) {}
87
88
3b434eb1 89 Package `%s' not found (did you use the incorrect case?)
90
f34840d8 91 Use of /g modifier is meaningless in split
92
276b2a0c 93 Possible precedence problem on bitwise %c operator [Perl_ck_bitop]
94
0453d815 95 Mandatory Warnings
96 ------------------
97 Prototype mismatch: [cv_ckproto]
98 sub fred() ;
99 sub fred($) {}
100
0453d815 101 Runaway prototype [newSUB] TODO
102 oops: oopsAV [oopsAV] TODO
103 oops: oopsHV [oopsHV] TODO
104
599cee73 105__END__
106# op.c
4438c4b7 107use warnings 'syntax' ;
599cee73 1081 if $a = 1 ;
4438c4b7 109no warnings 'syntax' ;
0453d815 1101 if $a = 1 ;
599cee73 111EXPECT
112Found = in conditional, should be == at - line 3.
113########
114# op.c
4438c4b7 115use warnings 'deprecated' ;
599cee73 116split ;
4438c4b7 117no warnings 'deprecated' ;
0453d815 118split ;
599cee73 119EXPECT
120Use of implicit split to @_ is deprecated at - line 3.
121########
122# op.c
4438c4b7 123use warnings 'deprecated' ;
599cee73 124$a = split ;
4438c4b7 125no warnings 'deprecated' ;
0453d815 126$a = split ;
599cee73 127EXPECT
128Use of implicit split to @_ is deprecated at - line 3.
129########
130# op.c
a1063b2d 131use warnings 'deprecated';
132my (@foo, %foo);
133%main::foo->{"bar"};
134%foo->{"bar"};
135@main::foo->[23];
136@foo->[23];
137$main::foo = {}; %$main::foo->{"bar"};
138$foo = {}; %$foo->{"bar"};
139$main::foo = []; @$main::foo->[34];
140$foo = []; @$foo->[34];
141no warnings 'deprecated';
142%main::foo->{"bar"};
143%foo->{"bar"};
144@main::foo->[23];
145@foo->[23];
146$main::foo = {}; %$main::foo->{"bar"};
147$foo = {}; %$foo->{"bar"};
148$main::foo = []; @$main::foo->[34];
149$foo = []; @$foo->[34];
150EXPECT
151Using a hash as a reference is deprecated at - line 4.
152Using a hash as a reference is deprecated at - line 5.
153Using an array as a reference is deprecated at - line 6.
154Using an array as a reference is deprecated at - line 7.
155Using a hash as a reference is deprecated at - line 8.
156Using a hash as a reference is deprecated at - line 9.
157Using an array as a reference is deprecated at - line 10.
158Using an array as a reference is deprecated at - line 11.
159########
160# op.c
4438c4b7 161use warnings 'void' ; close STDIN ;
599cee73 1621 x 3 ; # OP_REPEAT
163 # OP_GVSV
164wantarray ; # OP_WANTARRAY
165 # OP_GV
166 # OP_PADSV
167 # OP_PADAV
168 # OP_PADHV
169 # OP_PADANY
170 # OP_AV2ARYLEN
171ref ; # OP_REF
172\@a ; # OP_REFGEN
173\$a ; # OP_SREFGEN
174defined $a ; # OP_DEFINED
175hex $a ; # OP_HEX
176oct $a ; # OP_OCT
177length $a ; # OP_LENGTH
178substr $a,1 ; # OP_SUBSTR
179vec $a,1,2 ; # OP_VEC
180index $a,1,2 ; # OP_INDEX
181rindex $a,1,2 ; # OP_RINDEX
182sprintf $a ; # OP_SPRINTF
183$a[0] ; # OP_AELEM
184 # OP_AELEMFAST
185@a[0] ; # OP_ASLICE
186#values %a ; # OP_VALUES
187#keys %a ; # OP_KEYS
188$a{0} ; # OP_HELEM
189@a{0} ; # OP_HSLICE
190unpack "a", "a" ; # OP_UNPACK
191pack $a,"" ; # OP_PACK
192join "" ; # OP_JOIN
193(@a)[0,1] ; # OP_LSLICE
194 # OP_ANONLIST
195 # OP_ANONHASH
196sort(1,2) ; # OP_SORT
197reverse(1,2) ; # OP_REVERSE
198 # OP_RANGE
199 # OP_FLIP
200(1 ..2) ; # OP_FLOP
201caller ; # OP_CALLER
202fileno STDIN ; # OP_FILENO
203eof STDIN ; # OP_EOF
204tell STDIN ; # OP_TELL
205readlink 1; # OP_READLINK
206time ; # OP_TIME
207localtime ; # OP_LOCALTIME
208gmtime ; # OP_GMTIME
dfe13c55 209eval { getgrnam 1 }; # OP_GGRNAM
210eval { getgrgid 1 }; # OP_GGRGID
211eval { getpwnam 1 }; # OP_GPWNAM
212eval { getpwuid 1 }; # OP_GPWUID
78e1b766 213prototype "foo"; # OP_PROTOTYPE
74295f0b 214$a ~~ $b; # OP_SMARTMATCH
215$a <=> $b; # OP_NCMP
599cee73 216EXPECT
42d38218 217Useless use of repeat (x) in void context at - line 3.
599cee73 218Useless use of wantarray in void context at - line 5.
219Useless use of reference-type operator in void context at - line 12.
220Useless use of reference constructor in void context at - line 13.
d6c467eb 221Useless use of single ref constructor in void context at - line 14.
599cee73 222Useless use of defined operator in void context at - line 15.
223Useless use of hex in void context at - line 16.
224Useless use of oct in void context at - line 17.
225Useless use of length in void context at - line 18.
226Useless use of substr in void context at - line 19.
227Useless use of vec in void context at - line 20.
228Useless use of index in void context at - line 21.
229Useless use of rindex in void context at - line 22.
230Useless use of sprintf in void context at - line 23.
231Useless use of array element in void context at - line 24.
232Useless use of array slice in void context at - line 26.
f1612b5c 233Useless use of hash element in void context at - line 29.
599cee73 234Useless use of hash slice in void context at - line 30.
235Useless use of unpack in void context at - line 31.
236Useless use of pack in void context at - line 32.
297b36dc 237Useless use of join or string in void context at - line 33.
599cee73 238Useless use of list slice in void context at - line 34.
239Useless use of sort in void context at - line 37.
240Useless use of reverse in void context at - line 38.
241Useless use of range (or flop) in void context at - line 41.
242Useless use of caller in void context at - line 42.
243Useless use of fileno in void context at - line 43.
244Useless use of eof in void context at - line 44.
245Useless use of tell in void context at - line 45.
246Useless use of readlink in void context at - line 46.
247Useless use of time in void context at - line 47.
248Useless use of localtime in void context at - line 48.
249Useless use of gmtime in void context at - line 49.
250Useless use of getgrnam in void context at - line 50.
251Useless use of getgrgid in void context at - line 51.
252Useless use of getpwnam in void context at - line 52.
253Useless use of getpwuid in void context at - line 53.
78e1b766 254Useless use of subroutine prototype in void context at - line 54.
f5df4782 255Useless use of smart match in void context at - line 55.
256Useless use of numeric comparison (<=>) in void context at - line 56.
599cee73 257########
258# op.c
a801c63c 259use warnings 'void' ; close STDIN ;
260my $x = sort (2,1,3);
261no warnings 'void' ;
262$x = sort (2,1,3);
263EXPECT
264Useless use of sort in scalar context at - line 3.
265########
266# op.c
4438c4b7 267no warnings 'void' ; close STDIN ;
0453d815 2681 x 3 ; # OP_REPEAT
269 # OP_GVSV
270wantarray ; # OP_WANTARRAY
271 # OP_GV
272 # OP_PADSV
273 # OP_PADAV
274 # OP_PADHV
275 # OP_PADANY
276 # OP_AV2ARYLEN
277ref ; # OP_REF
278\@a ; # OP_REFGEN
279\$a ; # OP_SREFGEN
280defined $a ; # OP_DEFINED
281hex $a ; # OP_HEX
282oct $a ; # OP_OCT
283length $a ; # OP_LENGTH
284substr $a,1 ; # OP_SUBSTR
285vec $a,1,2 ; # OP_VEC
286index $a,1,2 ; # OP_INDEX
287rindex $a,1,2 ; # OP_RINDEX
288sprintf $a ; # OP_SPRINTF
289$a[0] ; # OP_AELEM
290 # OP_AELEMFAST
291@a[0] ; # OP_ASLICE
292#values %a ; # OP_VALUES
293#keys %a ; # OP_KEYS
294$a{0} ; # OP_HELEM
295@a{0} ; # OP_HSLICE
296unpack "a", "a" ; # OP_UNPACK
297pack $a,"" ; # OP_PACK
298join "" ; # OP_JOIN
299(@a)[0,1] ; # OP_LSLICE
300 # OP_ANONLIST
301 # OP_ANONHASH
302sort(1,2) ; # OP_SORT
303reverse(1,2) ; # OP_REVERSE
304 # OP_RANGE
305 # OP_FLIP
306(1 ..2) ; # OP_FLOP
307caller ; # OP_CALLER
308fileno STDIN ; # OP_FILENO
309eof STDIN ; # OP_EOF
310tell STDIN ; # OP_TELL
311readlink 1; # OP_READLINK
312time ; # OP_TIME
313localtime ; # OP_LOCALTIME
314gmtime ; # OP_GMTIME
315eval { getgrnam 1 }; # OP_GGRNAM
316eval { getgrgid 1 }; # OP_GGRGID
317eval { getpwnam 1 }; # OP_GPWNAM
318eval { getpwuid 1 }; # OP_GPWUID
78e1b766 319prototype "foo"; # OP_PROTOTYPE
0453d815 320EXPECT
321########
322# op.c
4438c4b7 323use warnings 'void' ;
68c73484 324for (@{[0]}) { "$_" } # check warning isn't duplicated
4438c4b7 325no warnings 'void' ;
0453d815 326for (@{[0]}) { "$_" } # check warning isn't duplicated
68c73484 327EXPECT
328Useless use of string in void context at - line 3.
329########
330# op.c
4438c4b7 331use warnings 'void' ;
599cee73 332use Config ;
333BEGIN {
334 if ( ! $Config{d_telldir}) {
335 print <<EOM ;
336SKIPPED
337# telldir not present
338EOM
339 exit
340 }
341}
342telldir 1 ; # OP_TELLDIR
4438c4b7 343no warnings 'void' ;
0453d815 344telldir 1 ; # OP_TELLDIR
599cee73 345EXPECT
346Useless use of telldir in void context at - line 13.
347########
348# op.c
4438c4b7 349use warnings 'void' ;
599cee73 350use Config ;
351BEGIN {
352 if ( ! $Config{d_getppid}) {
353 print <<EOM ;
354SKIPPED
355# getppid not present
356EOM
357 exit
358 }
359}
360getppid ; # OP_GETPPID
4438c4b7 361no warnings 'void' ;
0453d815 362getppid ; # OP_GETPPID
599cee73 363EXPECT
364Useless use of getppid in void context at - line 13.
365########
366# op.c
4438c4b7 367use warnings 'void' ;
599cee73 368use Config ;
369BEGIN {
370 if ( ! $Config{d_getpgrp}) {
371 print <<EOM ;
372SKIPPED
373# getpgrp not present
374EOM
375 exit
376 }
377}
378getpgrp ; # OP_GETPGRP
4438c4b7 379no warnings 'void' ;
0453d815 380getpgrp ; # OP_GETPGRP
599cee73 381EXPECT
382Useless use of getpgrp in void context at - line 13.
383########
384# op.c
4438c4b7 385use warnings 'void' ;
599cee73 386use Config ;
387BEGIN {
388 if ( ! $Config{d_times}) {
389 print <<EOM ;
390SKIPPED
391# times not present
392EOM
393 exit
394 }
395}
396times ; # OP_TMS
4438c4b7 397no warnings 'void' ;
0453d815 398times ; # OP_TMS
599cee73 399EXPECT
400Useless use of times in void context at - line 13.
401########
402# op.c
4438c4b7 403use warnings 'void' ;
599cee73 404use Config ;
405BEGIN {
e96326af 406 if ( ! $Config{d_getprior} or $^O eq 'os2') { # Locks before fixpak22
599cee73 407 print <<EOM ;
408SKIPPED
409# getpriority not present
410EOM
411 exit
412 }
413}
414getpriority 1,2; # OP_GETPRIORITY
4438c4b7 415no warnings 'void' ;
0453d815 416getpriority 1,2; # OP_GETPRIORITY
599cee73 417EXPECT
418Useless use of getpriority in void context at - line 13.
419########
420# op.c
4438c4b7 421use warnings 'void' ;
599cee73 422use Config ;
423BEGIN {
424 if ( ! $Config{d_getlogin}) {
425 print <<EOM ;
426SKIPPED
427# getlogin not present
428EOM
429 exit
430 }
431}
432getlogin ; # OP_GETLOGIN
4438c4b7 433no warnings 'void' ;
0453d815 434getlogin ; # OP_GETLOGIN
599cee73 435EXPECT
436Useless use of getlogin in void context at - line 13.
437########
438# op.c
4438c4b7 439use warnings 'void' ;
599cee73 440use Config ; BEGIN {
441if ( ! $Config{d_socket}) {
442 print <<EOM ;
443SKIPPED
444# getsockname not present
445# getpeername not present
446# gethostbyname not present
447# gethostbyaddr not present
448# gethostent not present
449# getnetbyname not present
450# getnetbyaddr not present
451# getnetent not present
452# getprotobyname not present
453# getprotobynumber not present
454# getprotoent not present
455# getservbyname not present
456# getservbyport not present
457# getservent not present
458EOM
459 exit
460} }
461getsockname STDIN ; # OP_GETSOCKNAME
462getpeername STDIN ; # OP_GETPEERNAME
463gethostbyname 1 ; # OP_GHBYNAME
464gethostbyaddr 1,2; # OP_GHBYADDR
465gethostent ; # OP_GHOSTENT
466getnetbyname 1 ; # OP_GNBYNAME
467getnetbyaddr 1,2 ; # OP_GNBYADDR
468getnetent ; # OP_GNETENT
469getprotobyname 1; # OP_GPBYNAME
470getprotobynumber 1; # OP_GPBYNUMBER
471getprotoent ; # OP_GPROTOENT
472getservbyname 1,2; # OP_GSBYNAME
473getservbyport 1,2; # OP_GSBYPORT
474getservent ; # OP_GSERVENT
0453d815 475
4438c4b7 476no warnings 'void' ;
0453d815 477getsockname STDIN ; # OP_GETSOCKNAME
478getpeername STDIN ; # OP_GETPEERNAME
479gethostbyname 1 ; # OP_GHBYNAME
480gethostbyaddr 1,2; # OP_GHBYADDR
481gethostent ; # OP_GHOSTENT
482getnetbyname 1 ; # OP_GNBYNAME
483getnetbyaddr 1,2 ; # OP_GNBYADDR
484getnetent ; # OP_GNETENT
485getprotobyname 1; # OP_GPBYNAME
486getprotobynumber 1; # OP_GPBYNUMBER
487getprotoent ; # OP_GPROTOENT
488getservbyname 1,2; # OP_GSBYNAME
489getservbyport 1,2; # OP_GSBYPORT
490getservent ; # OP_GSERVENT
dfe13c55 491INIT {
492 # some functions may not be there, so we exit without running
493 exit;
494}
599cee73 495EXPECT
496Useless use of getsockname in void context at - line 24.
497Useless use of getpeername in void context at - line 25.
498Useless use of gethostbyname in void context at - line 26.
499Useless use of gethostbyaddr in void context at - line 27.
500Useless use of gethostent in void context at - line 28.
501Useless use of getnetbyname in void context at - line 29.
502Useless use of getnetbyaddr in void context at - line 30.
503Useless use of getnetent in void context at - line 31.
504Useless use of getprotobyname in void context at - line 32.
505Useless use of getprotobynumber in void context at - line 33.
506Useless use of getprotoent in void context at - line 34.
507Useless use of getservbyname in void context at - line 35.
508Useless use of getservbyport in void context at - line 36.
509Useless use of getservent in void context at - line 37.
510########
511# op.c
4438c4b7 512use warnings 'void' ;
599cee73 513*a ; # OP_RV2GV
514$a ; # OP_RV2SV
515@a ; # OP_RV2AV
516%a ; # OP_RV2HV
4438c4b7 517no warnings 'void' ;
0453d815 518*a ; # OP_RV2GV
519$a ; # OP_RV2SV
520@a ; # OP_RV2AV
521%a ; # OP_RV2HV
599cee73 522EXPECT
523Useless use of a variable in void context at - line 3.
524Useless use of a variable in void context at - line 4.
525Useless use of a variable in void context at - line 5.
526Useless use of a variable in void context at - line 6.
527########
528# op.c
4438c4b7 529use warnings 'void' ;
599cee73 530"abc"; # OP_CONST
5317 ; # OP_CONST
86f9315f 532"x" . "y"; # optimized to OP_CONST
5332 + 2; # optimized to OP_CONST
e7fec78e 534use constant U => undef;
fa01e093 535U;
5365 || print "bad\n"; # test OPpCONST_SHORTCIRCUIT
e7fec78e 537print "boo\n" if U; # test OPpCONST_SHORTCIRCUIT
2e0ae2d3 538$[ = 2; # should not warn
4438c4b7 539no warnings 'void' ;
0453d815 540"abc"; # OP_CONST
5417 ; # OP_CONST
86f9315f 542"x" . "y"; # optimized to OP_CONST
5432 + 2; # optimized to OP_CONST
599cee73 544EXPECT
86f9315f 545Useless use of a constant (abc) in void context at - line 3.
546Useless use of a constant (7) in void context at - line 4.
547Useless use of a constant (xy) in void context at - line 5.
548Useless use of a constant (4) in void context at - line 6.
fa01e093 549Useless use of a constant (undef) in void context at - line 8.
599cee73 550########
551# op.c
7f01dc7a 552#
e476b1b5 553use warnings 'misc' ;
b08e453b 554my $a ; my @a = () ; my %a = () ; my $b = \@a ; my $c = \%a ;my $d = 'test';
599cee73 555@a =~ /abc/ ;
556@a =~ s/a/b/ ;
557@a =~ tr/a/b/ ;
558@$b =~ /abc/ ;
559@$b =~ s/a/b/ ;
560@$b =~ tr/a/b/ ;
561%a =~ /abc/ ;
562%a =~ s/a/b/ ;
563%a =~ tr/a/b/ ;
564%$c =~ /abc/ ;
565%$c =~ s/a/b/ ;
566%$c =~ tr/a/b/ ;
b08e453b 567$d =~ tr/a/b/d ;
568$d =~ tr/a/bc/;
0453d815 569{
e476b1b5 570no warnings 'misc' ;
b08e453b 571my $a ; my @a = () ; my %a = () ; my $b = \@a ; my $c = \%a ; my $d = 'test';
0453d815 572@a =~ /abc/ ;
573@a =~ s/a/b/ ;
574@a =~ tr/a/b/ ;
575@$b =~ /abc/ ;
576@$b =~ s/a/b/ ;
577@$b =~ tr/a/b/ ;
578%a =~ /abc/ ;
579%a =~ s/a/b/ ;
580%a =~ tr/a/b/ ;
581%$c =~ /abc/ ;
582%$c =~ s/a/b/ ;
583%$c =~ tr/a/b/ ;
b08e453b 584$d =~ tr/a/b/d ;
585$d =~ tr/a/bc/ ;
0453d815 586}
599cee73 587EXPECT
42d38218 588Applying pattern match (m//) to @array will act on scalar(@array) at - line 5.
589Applying substitution (s///) to @array will act on scalar(@array) at - line 6.
f1612b5c 590Applying transliteration (tr///) to @array will act on scalar(@array) at - line 7.
42d38218 591Applying pattern match (m//) to @array will act on scalar(@array) at - line 8.
592Applying substitution (s///) to @array will act on scalar(@array) at - line 9.
f1612b5c 593Applying transliteration (tr///) to @array will act on scalar(@array) at - line 10.
42d38218 594Applying pattern match (m//) to %hash will act on scalar(%hash) at - line 11.
595Applying substitution (s///) to %hash will act on scalar(%hash) at - line 12.
f1612b5c 596Applying transliteration (tr///) to %hash will act on scalar(%hash) at - line 13.
42d38218 597Applying pattern match (m//) to %hash will act on scalar(%hash) at - line 14.
598Applying substitution (s///) to %hash will act on scalar(%hash) at - line 15.
f1612b5c 599Applying transliteration (tr///) to %hash will act on scalar(%hash) at - line 16.
b08e453b 600Useless use of /d modifier in transliteration operator at - line 17.
601Replacement list is longer than search list at - line 18.
24944567 602Can't modify private array in substitution (s///) at - line 6, near "s/a/b/ ;"
b08e453b 603BEGIN not safe after errors--compilation aborted at - line 20.
599cee73 604########
605# op.c
8473848f 606use warnings 'parenthesis' ;
599cee73 607my $a, $b = (1,2);
8473848f 608my @foo,%bar, $quux; # there's a TAB here
bac662ee 609my $x, $y or print;
8473848f 610no warnings 'parenthesis' ;
0453d815 611my $c, $d = (1,2);
599cee73 612EXPECT
df5b6949 613Parentheses missing around "my" list at - line 3.
8473848f 614Parentheses missing around "my" list at - line 4.
599cee73 615########
616# op.c
8473848f 617use warnings 'parenthesis' ;
618our $a, $b = (1,2);
619no warnings 'parenthesis' ;
620our $c, $d = (1,2);
621EXPECT
622Parentheses missing around "our" list at - line 3.
623########
624# op.c
625use warnings 'parenthesis' ;
599cee73 626local $a, $b = (1,2);
8473848f 627local *f, *g;
628no warnings 'parenthesis' ;
0453d815 629local $c, $d = (1,2);
599cee73 630EXPECT
df5b6949 631Parentheses missing around "local" list at - line 3.
8473848f 632Parentheses missing around "local" list at - line 4.
599cee73 633########
634# op.c
e476b1b5 635use warnings 'bareword' ;
599cee73 636print (ABC || 1) ;
e476b1b5 637no warnings 'bareword' ;
0453d815 638print (ABC || 1) ;
599cee73 639EXPECT
34d09196 640Bareword found in conditional at - line 3.
599cee73 641########
642--FILE-- abc
643
644--FILE--
645# op.c
e476b1b5 646use warnings 'misc' ;
599cee73 647open FH, "<abc" ;
648$x = 1 if $x = <FH> ;
e476b1b5 649no warnings 'misc' ;
0453d815 650$x = 1 if $x = <FH> ;
599cee73 651EXPECT
652Value of <HANDLE> construct can be "0"; test with defined() at - line 4.
653########
654# op.c
e476b1b5 655use warnings 'misc' ;
599cee73 656opendir FH, "." ;
657$x = 1 if $x = readdir FH ;
e476b1b5 658no warnings 'misc' ;
0453d815 659$x = 1 if $x = readdir FH ;
599cee73 660closedir FH ;
661EXPECT
662Value of readdir() operator can be "0"; test with defined() at - line 4.
663########
664# op.c
e476b1b5 665use warnings 'misc' ;
599cee73 666$x = 1 if $x = <*> ;
e476b1b5 667no warnings 'misc' ;
0453d815 668$x = 1 if $x = <*> ;
599cee73 669EXPECT
670Value of glob construct can be "0"; test with defined() at - line 3.
671########
672# op.c
e476b1b5 673use warnings 'misc' ;
599cee73 674%a = (1,2,3,4) ;
675$x = 1 if $x = each %a ;
e476b1b5 676no warnings 'misc' ;
0453d815 677$x = 1 if $x = each %a ;
599cee73 678EXPECT
679Value of each() operator can be "0"; test with defined() at - line 4.
680########
681# op.c
e476b1b5 682use warnings 'misc' ;
599cee73 683$x = 1 while $x = <*> and 0 ;
e476b1b5 684no warnings 'misc' ;
0453d815 685$x = 1 while $x = <*> and 0 ;
599cee73 686EXPECT
687Value of glob construct can be "0"; test with defined() at - line 3.
688########
689# op.c
e476b1b5 690use warnings 'misc' ;
599cee73 691opendir FH, "." ;
692$x = 1 while $x = readdir FH and 0 ;
e476b1b5 693no warnings 'misc' ;
0453d815 694$x = 1 while $x = readdir FH and 0 ;
599cee73 695closedir FH ;
696EXPECT
697Value of readdir() operator can be "0"; test with defined() at - line 4.
698########
699# op.c
59e10468 700use warnings 'misc';
701open FH, "<abc";
59e10468 702($_ = <FH>) // ($_ = 1);
703opendir DH, ".";
59e10468 704%a = (1,2,3,4) ;
59e10468 705EXPECT
706########
707# op.c
4438c4b7 708use warnings 'redefine' ;
599cee73 709sub fred {}
710sub fred {}
4438c4b7 711no warnings 'redefine' ;
0453d815 712sub fred {}
599cee73 713EXPECT
714Subroutine fred redefined at - line 4.
715########
716# op.c
4438c4b7 717use warnings 'redefine' ;
599cee73 718sub fred () { 1 }
719sub fred () { 1 }
4438c4b7 720no warnings 'redefine' ;
0453d815 721sub fred () { 1 }
599cee73 722EXPECT
723Constant subroutine fred redefined at - line 4.
724########
725# op.c
036b4402 726no warnings 'redefine' ;
727sub fred () { 1 }
728sub fred () { 2 }
729EXPECT
730Constant subroutine fred redefined at - line 4.
731########
732# op.c
733no warnings 'redefine' ;
734sub fred () { 1 }
735*fred = sub () { 2 };
736EXPECT
910764e6 737Constant subroutine main::fred redefined at - line 4.
036b4402 738########
739# op.c
4438c4b7 740use warnings 'redefine' ;
599cee73 741format FRED =
742.
743format FRED =
744.
4438c4b7 745no warnings 'redefine' ;
0453d815 746format FRED =
747.
599cee73 748EXPECT
749Format FRED redefined at - line 5.
750########
751# op.c
e476b1b5 752use warnings 'deprecated' ;
599cee73 753push FRED;
e476b1b5 754no warnings 'deprecated' ;
0453d815 755push FRED;
599cee73 756EXPECT
757Array @FRED missing the @ in argument 1 of push() at - line 3.
758########
759# op.c
e476b1b5 760use warnings 'deprecated' ;
599cee73 761@a = keys FRED ;
e476b1b5 762no warnings 'deprecated' ;
0453d815 763@a = keys FRED ;
599cee73 764EXPECT
765Hash %FRED missing the % in argument 1 of keys() at - line 3.
766########
767# op.c
e69a2255 768BEGIN {
769 if ($^O eq 'MacOS') {
770 print <<EOM;
771SKIPPED
772# no exec on Mac OS
773EOM
774 exit;
775 }
776}
4438c4b7 777use warnings 'syntax' ;
dfe13c55 778exec "$^X -e 1" ;
599cee73 779my $a
780EXPECT
16398b42 781Statement unlikely to be reached at - line 13.
cc507455 782 (Maybe you meant system() when you said exec()?)
69794302 783########
784# op.c
4438c4b7 785use warnings 'deprecated' ;
69794302 786my @a; defined(@a);
787EXPECT
f10b0346 788defined(@array) is deprecated at - line 3.
cc507455 789 (Maybe you should just omit the defined()?)
69794302 790########
791# op.c
4438c4b7 792use warnings 'deprecated' ;
69794302 793defined(@a = (1,2,3));
794EXPECT
f10b0346 795defined(@array) is deprecated at - line 3.
cc507455 796 (Maybe you should just omit the defined()?)
69794302 797########
798# op.c
4438c4b7 799use warnings 'deprecated' ;
69794302 800my %h; defined(%h);
801EXPECT
f10b0346 802defined(%hash) is deprecated at - line 3.
cc507455 803 (Maybe you should just omit the defined()?)
0453d815 804########
805# op.c
e69a2255 806BEGIN {
807 if ($^O eq 'MacOS') {
808 print <<EOM;
809SKIPPED
810# no exec on Mac OS
811EOM
812 exit;
813 }
814}
4438c4b7 815no warnings 'syntax' ;
0453d815 816exec "$^X -e 1" ;
817my $a
818EXPECT
819
820########
821# op.c
822sub fred();
823sub fred($) {}
824EXPECT
825Prototype mismatch: sub main::fred () vs ($) at - line 3.
826########
827# op.c
828$^W = 0 ;
829sub fred() ;
830sub fred($) {}
831{
e476b1b5 832 no warnings 'prototype' ;
0453d815 833 sub Fred() ;
834 sub Fred($) {}
e476b1b5 835 use warnings 'prototype' ;
0453d815 836 sub freD() ;
837 sub freD($) {}
838}
839sub FRED() ;
840sub FRED($) {}
841EXPECT
842Prototype mismatch: sub main::fred () vs ($) at - line 4.
843Prototype mismatch: sub main::freD () vs ($) at - line 11.
844Prototype mismatch: sub main::FRED () vs ($) at - line 14.
eb6e2d6f 845########
846# op.c
847use warnings 'syntax' ;
848join /---/, 'x', 'y', 'z';
849EXPECT
850/---/ should probably be written as "---" at - line 3.
767a6a26 851########
852# op.c [Perl_peep]
e476b1b5 853use warnings 'prototype' ;
767a6a26 854fred() ;
855sub fred ($$) {}
e476b1b5 856no warnings 'prototype' ;
767a6a26 857joe() ;
858sub joe ($$) {}
859EXPECT
860main::fred() called too early to check prototype at - line 3.
ddda08b7 861########
862# op.c [Perl_newATTRSUB]
863--FILE-- abc.pm
864use warnings 'void' ;
865BEGIN { $| = 1; print "in begin\n"; }
866CHECK { print "in check\n"; }
867INIT { print "in init\n"; }
868END { print "in end\n"; }
869print "in mainline\n";
8701;
871--FILE--
872use abc;
873delete $INC{"abc.pm"};
874require abc;
875do "abc.pm";
876EXPECT
877in begin
878in mainline
879in check
880in init
881in begin
882Too late to run CHECK block at abc.pm line 3.
883Too late to run INIT block at abc.pm line 4.
884in mainline
885in begin
886Too late to run CHECK block at abc.pm line 3.
887Too late to run INIT block at abc.pm line 4.
888in mainline
889in end
890in end
891in end
892########
893# op.c [Perl_newATTRSUB]
894--FILE-- abc.pm
895no warnings 'void' ;
896BEGIN { $| = 1; print "in begin\n"; }
897CHECK { print "in check\n"; }
898INIT { print "in init\n"; }
899END { print "in end\n"; }
900print "in mainline\n";
9011;
902--FILE--
903require abc;
904do "abc.pm";
905EXPECT
906in begin
907in mainline
908in begin
909in mainline
910in end
911in end
936edb8b 912########
913# op.c
914my @x;
f87c3213 915use warnings 'syntax' ;
936edb8b 916push(@x);
917unshift(@x);
f87c3213 918no warnings 'syntax' ;
936edb8b 919push(@x);
920unshift(@x);
921EXPECT
de4864e4 922Useless use of push with no values at - line 4.
923Useless use of unshift with no values at - line 5.
a27978d3 924########
925# op.c
f34840d8 926# 20020401 mjd@plover.com at suggestion of jfriedl@yahoo.com
927use warnings 'regexp';
928split /blah/g, "blah";
929no warnings 'regexp';
930split /blah/g, "blah";
931EXPECT
932Use of /g modifier is meaningless in split at - line 4.
276b2a0c 933########
934# op.c
935use warnings 'precedence';
936$a = $b & $c == $d;
937$a = $b ^ $c != $d;
938$a = $b | $c > $d;
939$a = $b < $c & $d;
940$a = $b >= $c ^ $d;
941$a = $b <= $c | $d;
942$a = $b <=> $c & $d;
2b84528b 943$a &= $b == $c; $a |= $b == $c; $a ^= $b == $c; # shouldn't warn
276b2a0c 944no warnings 'precedence';
945$a = $b & $c == $d;
946$a = $b ^ $c != $d;
947$a = $b | $c > $d;
948$a = $b < $c & $d;
949$a = $b >= $c ^ $d;
950$a = $b <= $c | $d;
951$a = $b <=> $c & $d;
952EXPECT
953Possible precedence problem on bitwise & operator at - line 3.
954Possible precedence problem on bitwise ^ operator at - line 4.
955Possible precedence problem on bitwise | operator at - line 5.
956Possible precedence problem on bitwise & operator at - line 6.
957Possible precedence problem on bitwise ^ operator at - line 7.
958Possible precedence problem on bitwise | operator at - line 8.
959Possible precedence problem on bitwise & operator at - line 9.
960########
961# op.c
962use integer;
963use warnings 'precedence';
964$a = $b & $c == $d;
965$a = $b ^ $c != $d;
966$a = $b | $c > $d;
967$a = $b < $c & $d;
968$a = $b >= $c ^ $d;
969$a = $b <= $c | $d;
970$a = $b <=> $c & $d;
971no warnings 'precedence';
972$a = $b & $c == $d;
973$a = $b ^ $c != $d;
974$a = $b | $c > $d;
975$a = $b < $c & $d;
976$a = $b >= $c ^ $d;
977$a = $b <= $c | $d;
978$a = $b <=> $c & $d;
979EXPECT
980Possible precedence problem on bitwise & operator at - line 4.
981Possible precedence problem on bitwise ^ operator at - line 5.
982Possible precedence problem on bitwise | operator at - line 6.
983Possible precedence problem on bitwise & operator at - line 7.
984Possible precedence problem on bitwise ^ operator at - line 8.
985Possible precedence problem on bitwise | operator at - line 9.
986Possible precedence problem on bitwise & operator at - line 10.
ddeae0f1 987########
988# op.c
989
990# ok => local() has desired effect;
991# ignore=> local() silently ignored
992
993use warnings 'syntax';
994
995local(undef); # OP_UNDEF ignore
996sub lval : lvalue {};
997local(lval()); # OP_ENTERSUB
998local($x **= 1); # OP_POW
999local($x *= 1); # OP_MULTIPLY
1000local($x /= 1); # OP_DIVIDE
1001local($x %= 1); # OP_MODULO
1002local($x x= 1); # OP_REPEAT
1003local($x += 1); # OP_ADD
1004local($x -= 1); # OP_SUBTRACT
1005local($x .= 1); # OP_CONCAT
1006local($x <<= 1); # OP_LEFT_SHIFT
1007local($x >>= 1); # OP_RIGHT_SHIFT
1008local($x &= 1); # OP_BIT_AND
1009local($x ^= 1); # OP_BIT_XOR
1010local($x |= 1); # OP_BIT_OR
1011{
1012 use integer;
1013 local($x *= 1); # OP_I_MULTIPLY
1014 local($x /= 1); # OP_I_DIVIDE
1015 local($x %= 1); # OP_I_MODULO
1016 local($x += 1); # OP_I_ADD
1017 local($x -= 1); # OP_I_SUBTRACT
1018}
1019local($x?$y:$z) = 1; # OP_COND_EXPR ok
1020# these two are fatal run-time errors instead
1021#local(@$a); # OP_RV2AV ok
1022#local(%$a); # OP_RV2HV ok
1023local(*a); # OP_RV2GV ok
1024local(@a[1,2]); # OP_ASLICE ok
1025local(@a{1,2}); # OP_HSLICE ok
1026local(@a = (1,2)); # OP_AASSIGN
1027local($$x); # OP_RV2SV ok
1028local($#a); # OP_AV2ARYLEN
1029local($x = 1); # OP_SASSIGN
1030local($x &&= 1); # OP_ANDASSIGN
1031local($x ||= 1); # OP_ORASSIGN
1032local($x //= 1); # OP_DORASSIGN
1033local($a[0]); # OP_AELEMFAST ok
1034
1035local(substr($x,0,1)); # OP_SUBSTR
1036local(pos($x)); # OP_POS
1037local(vec($x,0,1)); # OP_VEC
1038local($a[$b]); # OP_AELEM ok
1039local($a{$b}); # OP_HELEM ok
54dc0f91 1040local($[); # OP_CONST
ddeae0f1 1041
1042no warnings 'syntax';
1043EXPECT
1044Useless localization of subroutine entry at - line 10.
1045Useless localization of exponentiation (**) at - line 11.
1046Useless localization of multiplication (*) at - line 12.
1047Useless localization of division (/) at - line 13.
1048Useless localization of modulus (%) at - line 14.
1049Useless localization of repeat (x) at - line 15.
1050Useless localization of addition (+) at - line 16.
1051Useless localization of subtraction (-) at - line 17.
1052Useless localization of concatenation (.) or string at - line 18.
1053Useless localization of left bitshift (<<) at - line 19.
1054Useless localization of right bitshift (>>) at - line 20.
1055Useless localization of bitwise and (&) at - line 21.
1056Useless localization of bitwise xor (^) at - line 22.
1057Useless localization of bitwise or (|) at - line 23.
1058Useless localization of integer multiplication (*) at - line 26.
1059Useless localization of integer division (/) at - line 27.
1060Useless localization of integer modulus (%) at - line 28.
1061Useless localization of integer addition (+) at - line 29.
1062Useless localization of integer subtraction (-) at - line 30.
1063Useless localization of list assignment at - line 39.
1064Useless localization of array length at - line 41.
1065Useless localization of scalar assignment at - line 42.
1066Useless localization of logical and assignment (&&=) at - line 43.
1067Useless localization of logical or assignment (||=) at - line 44.
1068Useless localization of defined or assignment (//=) at - line 45.
1069Useless localization of substr at - line 48.
1070Useless localization of match position at - line 49.
1071Useless localization of vec at - line 50.
7921d0f2 1072########
1073# op.c
1074use warnings 'deprecated';
1075my $x1 if 0;
1076my @x2 if 0;
1077my %x3 if 0;
1078my ($x4) if 0;
1079my ($x5,@x6, %x7) if 0;
10800 && my $z1;
10810 && my (%z2);
1082# these shouldn't warn
1083our $x if 0;
1084our $x unless 0;
1085if (0) { my $w1 }
1086if (my $w2) { $a=1 }
1087if ($a && (my $w3 = 1)) {$a = 2}
1088
1089EXPECT
1090Deprecated use of my() in false conditional at - line 3.
1091Deprecated use of my() in false conditional at - line 4.
1092Deprecated use of my() in false conditional at - line 5.
1093Deprecated use of my() in false conditional at - line 6.
1094Deprecated use of my() in false conditional at - line 7.
1095Deprecated use of my() in false conditional at - line 8.
1096Deprecated use of my() in false conditional at - line 9.
55b67815 1097########
1098# op.c
1099$[ = 1;
1100use warnings 'deprecated';
1101$[ = 2;
1102no warnings 'deprecated';
1103$[ = 3;
1104EXPECT
1105Use of assignment to $[ is deprecated at - line 4.