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