This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
de74d2e36041955e88baae4bf935ba25ea740119
[perl5.git] / t / lib / warnings / op
1   op.c          AOK
2
3      Found = in conditional, should be ==
4         1 if $a = 1 ;
5
6      Useless use of time in void context
7      Useless use of a variable in void context
8      Useless use of a constant in void context
9         time ;
10         $a ;
11         "abc"
12
13      Useless use of sort in scalar context
14         my $x = sort (2,1,3);
15
16      Applying %s to %s will act on scalar(%s)
17         my $a ; my @a = () ; my %a = () ; my $b = \@a ; my $c = \%a ;
18         @a =~ /abc/ ;
19         @a =~ s/a/b/ ;
20         @a =~ tr/a/b/ ;
21         @$b =~ /abc/ ;
22         @$b =~ s/a/b/ ;
23         @$b =~ tr/a/b/ ;
24         %a =~ /abc/ ;
25         %a =~ s/a/b/ ;
26         %a =~ tr/a/b/ ;
27         %$c =~ /abc/ ;
28         %$c =~ s/a/b/ ;
29         %$c =~ tr/a/b/ ;
30
31
32      Parentheses missing around "my" list at -e line 1.
33        my $a, $b = (1,2);
34  
35      Parentheses missing around "local" list at -e line 1.
36        local $a, $b = (1,2);
37  
38      Bareword found in conditional at -e line 1.
39        use warnings 'bareword'; my $x = print(ABC || 1);
40  
41      Value of %s may be \"0\"; use \"defined\" 
42         $x = 1 if $x = <FH> ;
43         $x = 1 while $x = <FH> ;
44
45      Subroutine fred redefined at -e line 1.
46        sub fred{1;} sub fred{1;}
47  
48      Constant subroutine %s redefined 
49         sub fred() {1;} sub fred() {1;}
50  
51      Format FRED redefined at /tmp/x line 5.
52        format FRED =
53        .
54        format FRED =
55        .
56  
57      Array @%s missing the @ in argument %d of %s() 
58         push fred ;
59  
60      Hash %%%s missing the %% in argument %d of %s() 
61         keys joe ;
62  
63      Statement unlikely to be reached
64         (Maybe you meant system() when you said exec()?
65         exec "true" ; my $a
66
67      defined(@array) is deprecated
68         (Maybe you should just omit the defined()?)
69         my @a ; defined @a ;
70         defined (@a = (1,2,3)) ;
71
72      defined(%hash) is deprecated
73         (Maybe you should just omit the defined()?)
74         my %h ; defined %h ;
75
76      $[ used in comparison (did you mean $] ?)
77
78      length() used on @array (did you mean "scalar(@array)"?)
79      length() used on %hash (did you mean "scalar(keys %hash)"?)
80
81      /---/ should probably be written as "---"
82         join(/---/, @foo);
83
84     %s() called too early to check prototype            [Perl_peep]
85         fred() ; sub fred ($$) {}
86
87
88     Package '%s' not found (did you use the incorrect case?)
89
90     Use of /g modifier is meaningless in split
91
92     Possible precedence problem on bitwise %c operator  [Perl_ck_bitop]
93
94     Mandatory Warnings 
95     ------------------
96     Prototype mismatch:         [cv_ckproto]
97         sub fred() ;
98         sub fred($) {}
99
100     Runaway prototype           [newSUB]        TODO
101     oops: oopsAV                [oopsAV]        TODO
102     oops: oopsHV                [oopsHV]        TODO
103     
104 __END__
105 # op.c
106 use warnings 'syntax' ;
107 1 if $a = 1 ;
108 no warnings 'syntax' ;
109 1 if $a = 1 ;
110 EXPECT
111 Found = in conditional, should be == at - line 3.
112 ########
113 # op.c
114 use warnings 'syntax' ;
115 use constant foo => 1;
116 1 if $a = foo ;
117 no warnings 'syntax' ;
118 1 if $a = foo ;
119 EXPECT
120 ########
121 # op.c
122 my (@foo, %foo);
123 %main::foo->{"bar"};
124 %foo->{"bar"};
125 @main::foo->[23];
126 @foo->[23];
127 $main::foo = {}; %$main::foo->{"bar"};
128 $foo = {}; %$foo->{"bar"};
129 $main::foo = []; @$main::foo->[34];
130 $foo = []; @$foo->[34];
131 no warnings 'deprecated';
132 %main::foo->{"bar"};
133 %foo->{"bar"};
134 @main::foo->[23];
135 @foo->[23];
136 $main::foo = {}; %$main::foo->{"bar"};
137 $foo = {}; %$foo->{"bar"};
138 $main::foo = []; @$main::foo->[34];
139 $foo = []; @$foo->[34];
140 EXPECT
141 Using a hash as a reference is deprecated at - line 3.
142 Using a hash as a reference is deprecated at - line 4.
143 Using an array as a reference is deprecated at - line 5.
144 Using an array as a reference is deprecated at - line 6.
145 Using a hash as a reference is deprecated at - line 7.
146 Using a hash as a reference is deprecated at - line 8.
147 Using an array as a reference is deprecated at - line 9.
148 Using an array as a reference is deprecated at - line 10.
149 ########
150 # op.c
151 use warnings 'void' ; close STDIN ;
152 1 x 3 ;                 # OP_REPEAT
153                         # OP_GVSV
154 wantarray ;             # OP_WANTARRAY
155                         # OP_GV
156                         # OP_PADSV
157                         # OP_PADAV
158                         # OP_PADHV
159                         # OP_PADANY
160                         # OP_AV2ARYLEN
161 ref ;                   # OP_REF
162 \@a ;                   # OP_REFGEN
163 \$a ;                   # OP_SREFGEN
164 defined $a ;            # OP_DEFINED
165 hex $a ;                # OP_HEX
166 oct $a ;                # OP_OCT
167 length $a ;             # OP_LENGTH
168 substr $a,1 ;           # OP_SUBSTR
169 vec $a,1,2 ;            # OP_VEC
170 index $a,1,2 ;          # OP_INDEX
171 rindex $a,1,2 ;         # OP_RINDEX
172 sprintf $a ;            # OP_SPRINTF
173 $a[0] ;                 # OP_AELEM
174                         # OP_AELEMFAST
175 @a[0] ;                 # OP_ASLICE
176 #values %a ;            # OP_VALUES
177 #keys %a ;              # OP_KEYS
178 $a{0} ;                 # OP_HELEM
179 @a{0} ;                 # OP_HSLICE
180 unpack "a", "a" ;       # OP_UNPACK
181 pack $a,"" ;            # OP_PACK
182 join "" ;               # OP_JOIN
183 (@a)[0,1] ;             # OP_LSLICE
184                         # OP_ANONLIST
185                         # OP_ANONHASH
186 sort(1,2) ;             # OP_SORT
187 reverse(1,2) ;          # OP_REVERSE
188                         # OP_RANGE
189                         # OP_FLIP
190 (1 ..2) ;               # OP_FLOP
191 caller ;                # OP_CALLER
192 fileno STDIN ;          # OP_FILENO
193 eof STDIN ;             # OP_EOF
194 tell STDIN ;            # OP_TELL
195 readlink 1;             # OP_READLINK
196 time ;                  # OP_TIME
197 localtime ;             # OP_LOCALTIME
198 gmtime ;                # OP_GMTIME
199 eval { getgrnam 1 };    # OP_GGRNAM
200 eval { getgrgid 1 };    # OP_GGRGID
201 eval { getpwnam 1 };    # OP_GPWNAM
202 eval { getpwuid 1 };    # OP_GPWUID
203 prototype "foo";        # OP_PROTOTYPE
204 $a ~~ $b;               # OP_SMARTMATCH
205 $a <=> $b;              # OP_NCMP
206 use 5.015;
207 __SUB__                 # OP_RUNCV
208 EXPECT
209 Useless use of repeat (x) in void context at - line 3.
210 Useless use of wantarray in void context at - line 5.
211 Useless use of reference-type operator in void context at - line 12.
212 Useless use of reference constructor in void context at - line 13.
213 Useless use of single ref constructor in void context at - line 14.
214 Useless use of defined operator in void context at - line 15.
215 Useless use of hex in void context at - line 16.
216 Useless use of oct in void context at - line 17.
217 Useless use of length in void context at - line 18.
218 Useless use of substr in void context at - line 19.
219 Useless use of vec in void context at - line 20.
220 Useless use of index in void context at - line 21.
221 Useless use of rindex in void context at - line 22.
222 Useless use of sprintf in void context at - line 23.
223 Useless use of array element in void context at - line 24.
224 Useless use of array slice in void context at - line 26.
225 Useless use of hash element in void context at - line 29.
226 Useless use of hash slice in void context at - line 30.
227 Useless use of unpack in void context at - line 31.
228 Useless use of pack in void context at - line 32.
229 Useless use of join or string in void context at - line 33.
230 Useless use of list slice in void context at - line 34.
231 Useless use of sort in void context at - line 37.
232 Useless use of reverse in void context at - line 38.
233 Useless use of range (or flop) in void context at - line 41.
234 Useless use of caller in void context at - line 42.
235 Useless use of fileno in void context at - line 43.
236 Useless use of eof in void context at - line 44.
237 Useless use of tell in void context at - line 45.
238 Useless use of readlink in void context at - line 46.
239 Useless use of time in void context at - line 47.
240 Useless use of localtime in void context at - line 48.
241 Useless use of gmtime in void context at - line 49.
242 Useless use of getgrnam in void context at - line 50.
243 Useless use of getgrgid in void context at - line 51.
244 Useless use of getpwnam in void context at - line 52.
245 Useless use of getpwuid in void context at - line 53.
246 Useless use of subroutine prototype in void context at - line 54.
247 Useless use of smart match in void context at - line 55.
248 Useless use of numeric comparison (<=>) in void context at - line 56.
249 Useless use of __SUB__ in void context at - line 58.
250 ########
251 # op.c
252 use warnings 'void' ; close STDIN ;
253 my $x = sort (2,1,3);
254 no warnings 'void' ;
255 $x = sort (2,1,3);
256 EXPECT
257 Useless use of sort in scalar context at - line 3.
258 ########
259 # op.c
260 no warnings 'void' ; close STDIN ;
261 1 x 3 ;                 # OP_REPEAT
262                         # OP_GVSV
263 wantarray ;             # OP_WANTARRAY
264                         # OP_GV
265                         # OP_PADSV
266                         # OP_PADAV
267                         # OP_PADHV
268                         # OP_PADANY
269                         # OP_AV2ARYLEN
270 ref ;                   # OP_REF
271 \@a ;                   # OP_REFGEN
272 \$a ;                   # OP_SREFGEN
273 defined $a ;            # OP_DEFINED
274 hex $a ;                # OP_HEX
275 oct $a ;                # OP_OCT
276 length $a ;             # OP_LENGTH
277 substr $a,1 ;           # OP_SUBSTR
278 vec $a,1,2 ;            # OP_VEC
279 index $a,1,2 ;          # OP_INDEX
280 rindex $a,1,2 ;         # OP_RINDEX
281 sprintf $a ;            # OP_SPRINTF
282 $a[0] ;                 # OP_AELEM
283                         # OP_AELEMFAST
284 @a[0] ;                 # OP_ASLICE
285 #values %a ;            # OP_VALUES
286 #keys %a ;              # OP_KEYS
287 $a{0} ;                 # OP_HELEM
288 @a{0} ;                 # OP_HSLICE
289 unpack "a", "a" ;       # OP_UNPACK
290 pack $a,"" ;            # OP_PACK
291 join "" ;               # OP_JOIN
292 (@a)[0,1] ;             # OP_LSLICE
293                         # OP_ANONLIST
294                         # OP_ANONHASH
295 sort(1,2) ;             # OP_SORT
296 reverse(1,2) ;          # OP_REVERSE
297                         # OP_RANGE
298                         # OP_FLIP
299 (1 ..2) ;               # OP_FLOP
300 caller ;                # OP_CALLER
301 fileno STDIN ;          # OP_FILENO
302 eof STDIN ;             # OP_EOF
303 tell STDIN ;            # OP_TELL
304 readlink 1;             # OP_READLINK
305 time ;                  # OP_TIME
306 localtime ;             # OP_LOCALTIME
307 gmtime ;                # OP_GMTIME
308 eval { getgrnam 1 };    # OP_GGRNAM
309 eval { getgrgid 1 };    # OP_GGRGID
310 eval { getpwnam 1 };    # OP_GPWNAM
311 eval { getpwuid 1 };    # OP_GPWUID
312 prototype "foo";        # OP_PROTOTYPE
313 EXPECT
314 ########
315 # op.c
316 use warnings 'void' ;
317 for (@{[0]}) { "$_" }           # check warning isn't duplicated
318 no warnings 'void' ;
319 for (@{[0]}) { "$_" }           # check warning isn't duplicated
320 EXPECT
321 Useless use of string in void context at - line 3.
322 ########
323 # op.c
324 use warnings 'void' ;
325 use Config ;
326 BEGIN {
327     if ( ! $Config{d_telldir}) {
328         print <<EOM ;
329 SKIPPED
330 # telldir not present
331 EOM
332         exit 
333     }
334 }
335 telldir 1 ;             # OP_TELLDIR
336 no warnings 'void' ;
337 telldir 1 ;             # OP_TELLDIR
338 EXPECT
339 Useless use of telldir in void context at - line 13.
340 ########
341 # op.c
342 use warnings 'void' ;
343 use Config ;
344 BEGIN {
345     if ( ! $Config{d_getppid}) {
346         print <<EOM ;
347 SKIPPED
348 # getppid not present
349 EOM
350         exit 
351     }
352 }
353 getppid ;               # OP_GETPPID
354 no warnings 'void' ;
355 getppid ;               # OP_GETPPID
356 EXPECT
357 Useless use of getppid in void context at - line 13.
358 ########
359 # op.c
360 use warnings 'void' ;
361 use Config ;
362 BEGIN {
363     if ( ! $Config{d_getpgrp}) {
364         print <<EOM ;
365 SKIPPED
366 # getpgrp not present
367 EOM
368         exit 
369     }
370 }
371 getpgrp ;               # OP_GETPGRP
372 no warnings 'void' ;
373 getpgrp ;               # OP_GETPGRP
374 EXPECT
375 Useless use of getpgrp in void context at - line 13.
376 ########
377 # op.c
378 use warnings 'void' ;
379 use Config ;
380 BEGIN {
381     if ( ! $Config{d_times}) {
382         print <<EOM ;
383 SKIPPED
384 # times not present
385 EOM
386         exit 
387     }
388 }
389 times ;                 # OP_TMS
390 no warnings 'void' ;
391 times ;                 # OP_TMS
392 EXPECT
393 Useless use of times in void context at - line 13.
394 ########
395 # op.c
396 use warnings 'void' ;
397 use Config ;
398 BEGIN {
399     if ( ! $Config{d_getprior} or $^O eq 'os2') { # Locks before fixpak22
400         print <<EOM ;
401 SKIPPED
402 # getpriority not present
403 EOM
404         exit 
405     }
406 }
407 getpriority 1,2;        # OP_GETPRIORITY
408 no warnings 'void' ;
409 getpriority 1,2;        # OP_GETPRIORITY
410 EXPECT
411 Useless use of getpriority in void context at - line 13.
412 ########
413 # op.c
414 use warnings 'void' ;
415 use Config ;
416 BEGIN {
417     if ( ! $Config{d_getlogin}) {
418         print <<EOM ;
419 SKIPPED
420 # getlogin not present
421 EOM
422         exit 
423     }
424 }
425 getlogin ;                      # OP_GETLOGIN
426 no warnings 'void' ;
427 getlogin ;                      # OP_GETLOGIN
428 EXPECT
429 Useless use of getlogin in void context at - line 13.
430 ########
431 # op.c
432 use warnings 'void' ;
433 use Config ; BEGIN {
434 if ( ! $Config{d_socket}) {
435     print <<EOM ;
436 SKIPPED
437 # getsockname not present
438 # getpeername not present
439 # gethostbyname not present
440 # gethostbyaddr not present
441 # gethostent not present
442 # getnetbyname not present
443 # getnetbyaddr not present
444 # getnetent not present
445 # getprotobyname not present
446 # getprotobynumber not present
447 # getprotoent not present
448 # getservbyname not present
449 # getservbyport not present
450 # getservent not present
451 EOM
452     exit 
453 } }
454 getsockname STDIN ;     # OP_GETSOCKNAME
455 getpeername STDIN ;     # OP_GETPEERNAME
456 gethostbyname 1 ;       # OP_GHBYNAME
457 gethostbyaddr 1,2;      # OP_GHBYADDR
458 gethostent ;            # OP_GHOSTENT
459 getnetbyname 1 ;        # OP_GNBYNAME
460 getnetbyaddr 1,2 ;      # OP_GNBYADDR
461 getnetent ;             # OP_GNETENT
462 getprotobyname 1;       # OP_GPBYNAME
463 getprotobynumber 1;     # OP_GPBYNUMBER
464 getprotoent ;           # OP_GPROTOENT
465 getservbyname 1,2;      # OP_GSBYNAME
466 getservbyport 1,2;      # OP_GSBYPORT
467 getservent ;            # OP_GSERVENT
468
469 no warnings 'void' ;
470 getsockname STDIN ;     # OP_GETSOCKNAME
471 getpeername STDIN ;     # OP_GETPEERNAME
472 gethostbyname 1 ;       # OP_GHBYNAME
473 gethostbyaddr 1,2;      # OP_GHBYADDR
474 gethostent ;            # OP_GHOSTENT
475 getnetbyname 1 ;        # OP_GNBYNAME
476 getnetbyaddr 1,2 ;      # OP_GNBYADDR
477 getnetent ;             # OP_GNETENT
478 getprotobyname 1;       # OP_GPBYNAME
479 getprotobynumber 1;     # OP_GPBYNUMBER
480 getprotoent ;           # OP_GPROTOENT
481 getservbyname 1,2;      # OP_GSBYNAME
482 getservbyport 1,2;      # OP_GSBYPORT
483 getservent ;            # OP_GSERVENT
484 INIT {
485    # some functions may not be there, so we exit without running
486    exit;
487 }
488 EXPECT
489 Useless use of getsockname in void context at - line 24.
490 Useless use of getpeername in void context at - line 25.
491 Useless use of gethostbyname in void context at - line 26.
492 Useless use of gethostbyaddr in void context at - line 27.
493 Useless use of gethostent in void context at - line 28.
494 Useless use of getnetbyname in void context at - line 29.
495 Useless use of getnetbyaddr in void context at - line 30.
496 Useless use of getnetent in void context at - line 31.
497 Useless use of getprotobyname in void context at - line 32.
498 Useless use of getprotobynumber in void context at - line 33.
499 Useless use of getprotoent in void context at - line 34.
500 Useless use of getservbyname in void context at - line 35.
501 Useless use of getservbyport in void context at - line 36.
502 Useless use of getservent in void context at - line 37.
503 ########
504 # op.c
505 use warnings 'void' ;
506 *a ; # OP_RV2GV
507 $a ; # OP_RV2SV
508 @a ; # OP_RV2AV
509 %a ; # OP_RV2HV
510 no warnings 'void' ;
511 *a ; # OP_RV2GV
512 $a ; # OP_RV2SV
513 @a ; # OP_RV2AV
514 %a ; # OP_RV2HV
515 EXPECT
516 Useless use of a variable in void context at - line 3.
517 Useless use of a variable in void context at - line 4.
518 Useless use of a variable in void context at - line 5.
519 Useless use of a variable in void context at - line 6.
520 ########
521 # op.c
522 use warnings 'void' ;
523 "abc"; # OP_CONST
524 7 ; # OP_CONST
525 "x" . "y"; # optimized to OP_CONST
526 2 + 2; # optimized to OP_CONST
527 use constant U => undef;
528 U;
529 qq/"    \n/;
530 5 || print "bad\n";     # test OPpCONST_SHORTCIRCUIT
531 print "boo\n" if U;     # test OPpCONST_SHORTCIRCUIT
532 no warnings 'void' ;
533 "abc"; # OP_CONST
534 7 ; # OP_CONST
535 "x" . "y"; # optimized to OP_CONST
536 2 + 2; # optimized to OP_CONST
537 EXPECT
538 Useless use of a constant ("abc") in void context at - line 3.
539 Useless use of a constant (7) in void context at - line 4.
540 Useless use of a constant ("xy") in void context at - line 5.
541 Useless use of a constant (4) in void context at - line 6.
542 Useless use of a constant (undef) in void context at - line 8.
543 Useless use of a constant ("\"\t\n") in void context at - line 9.
544 ########
545 # op.c
546 use utf8;
547 use open qw( :utf8 :std );
548 use warnings 'void' ;
549 "àḆc"; # OP_CONST
550 "Ẋ" . "ƴ"; # optimized to OP_CONST
551 FOO;     # Bareword optimized to OP_CONST
552 use constant ů => undef;
553 ů;
554 5 || print "bad\n";     # test OPpCONST_SHORTCIRCUIT
555 print "boo\n" if ů;    # test OPpCONST_SHORTCIRCUIT
556 no warnings 'void' ;
557 "àḆc"; # OP_CONST
558 "Ẋ" . "ƴ"; # optimized to OP_CONST
559 EXPECT
560 Useless use of a constant ("\340\x{1e06}c") in void context at - line 5.
561 Useless use of a constant ("\x{1e8a}\x{1b4}") in void context at - line 6.
562 Useless use of a constant ("\x{ff26}\x{ff2f}\x{ff2f}") in void context at - line 7.
563 Useless use of a constant (undef) in void context at - line 9.
564 ########
565 # op.c
566 #
567 use warnings 'misc' ;
568 my $a ; my @a = () ; my %a = () ; my $b = \@a ; my $c = \%a ;my $d = 'test';
569 @a =~ /abc/ ;
570 @a2 =~ s/a/b/ ;
571 @a3 =~ tr/a/b/ ;
572 @$b =~ /abc/ ;
573 @$b =~ s/a/b/ ;
574 @$b =~ tr/a/b/ ;
575 %a =~ /abc/ ;
576 %a2 =~ s/a/b/ ;
577 %a3 =~ tr/a/b/ ;
578 %$c =~ /abc/ ;
579 %$c =~ s/a/b/ ;
580 %$c =~ tr/a/b/ ;
581 $d =~ tr/a/b/d ;
582 $d2 =~ tr/a/bc/;
583 {
584 no warnings 'misc' ;
585 my $a ; my @a = () ; my %a = () ; my $b = \@a ; my $c = \%a ; my $d = 'test';
586 @a =~ /abc/ ;
587 @a =~ s/a/b/ ;
588 @a =~ tr/a/b/ ;
589 @$b =~ /abc/ ;
590 @$b =~ s/a/b/ ;
591 @$b =~ tr/a/b/ ;
592 %a =~ /abc/ ;
593 %a =~ s/a/b/ ;
594 %a =~ tr/a/b/ ;
595 %$c =~ /abc/ ;
596 %$c =~ s/a/b/ ;
597 %$c =~ tr/a/b/ ;
598 $d =~ tr/a/b/d ;
599 $d =~ tr/a/bc/ ;
600 }
601 EXPECT
602 Applying pattern match (m//) to @a will act on scalar(@a) at - line 5.
603 Applying substitution (s///) to @a2 will act on scalar(@a2) at - line 6.
604 Applying transliteration (tr///) to @a3 will act on scalar(@a3) at - line 7.
605 Applying pattern match (m//) to @array will act on scalar(@array) at - line 8.
606 Applying substitution (s///) to @array will act on scalar(@array) at - line 9.
607 Applying transliteration (tr///) to @array will act on scalar(@array) at - line 10.
608 Applying pattern match (m//) to %a will act on scalar(%a) at - line 11.
609 Applying substitution (s///) to %a2 will act on scalar(%a2) at - line 12.
610 Applying transliteration (tr///) to %a3 will act on scalar(%a3) at - line 13.
611 Applying pattern match (m//) to %hash will act on scalar(%hash) at - line 14.
612 Applying substitution (s///) to %hash will act on scalar(%hash) at - line 15.
613 Applying transliteration (tr///) to %hash will act on scalar(%hash) at - line 16.
614 Useless use of /d modifier in transliteration operator at - line 17.
615 Replacement list is longer than search list at - line 18.
616 Can't modify array dereference in substitution (s///) at - line 6, near "s/a/b/ ;"
617 BEGIN not safe after errors--compilation aborted at - line 20.
618 ########
619 # op.c
620 use warnings 'parenthesis' ;
621 my $a, $b = (1,2);
622 my @foo,%bar,   $quux; # there's a TAB here
623 my $x, $y or print;
624 no warnings 'parenthesis' ;
625 my $c, $d = (1,2);
626 EXPECT
627 Parentheses missing around "my" list at - line 3.
628 Parentheses missing around "my" list at - line 4.
629 ########
630 # op.c
631 use warnings 'parenthesis' ;
632 our $a, $b = (1,2);
633 no warnings 'parenthesis' ;
634 our $c, $d = (1,2);
635 EXPECT
636 Parentheses missing around "our" list at - line 3.
637 ########
638 # op.c
639 use warnings 'parenthesis' ;
640 local $a, $b = (1,2);
641 local *f, *g;
642 no warnings 'parenthesis' ;
643 local $c, $d = (1,2);
644 EXPECT
645 Parentheses missing around "local" list at - line 3.
646 Parentheses missing around "local" list at - line 4.
647 ########
648 # op.c
649 use warnings 'bareword' ;
650 print (ABC || 1) ;
651 no warnings 'bareword' ;
652 print (ABC || 1) ;
653 EXPECT
654 Bareword found in conditional at - line 3.
655 ########
656 --FILE-- abc
657
658 --FILE--
659 # op.c
660 use warnings 'misc' ;
661 open FH, "<abc" ;
662 $x = 1 if $x = <FH> ;
663 no warnings 'misc' ;
664 $x = 1 if $x = <FH> ;
665 EXPECT
666 Value of <HANDLE> construct can be "0"; test with defined() at - line 4.
667 ########
668 # op.c
669 use warnings 'misc' ;
670 opendir FH, "." ;
671 $x = 1 if $x = readdir FH ;
672 no warnings 'misc' ;
673 $x = 1 if $x = readdir FH ;
674 closedir FH ;
675 EXPECT
676 Value of readdir() operator can be "0"; test with defined() at - line 4.
677 ########
678 # op.c
679 use warnings 'misc' ;
680 $x = 1 if $x = <*> ;
681 no warnings 'misc' ;
682 $x = 1 if $x = <*> ;
683 EXPECT
684 Value of glob construct can be "0"; test with defined() at - line 3.
685 ########
686 # op.c
687 use warnings 'misc' ;
688 %a = (1,2,3,4) ;
689 $x = 1 if $x = each %a ;
690 no warnings 'misc' ;
691 $x = 1 if $x = each %a ;
692 EXPECT
693 Value of each() operator can be "0"; test with defined() at - line 4.
694 ########
695 # op.c
696 use warnings 'misc' ;
697 $x = 1 while $x = <*> and 0 ;
698 no warnings 'misc' ;
699 $x = 1 while $x = <*> and 0 ;
700 EXPECT
701 Value of glob construct can be "0"; test with defined() at - line 3.
702 ########
703 # op.c
704 use warnings 'misc' ;
705 opendir FH, "." ;
706 $x = 1 while $x = readdir FH and 0 ;
707 no warnings 'misc' ;
708 $x = 1 while $x = readdir FH and 0 ;
709 closedir FH ;
710 EXPECT
711 Value of readdir() operator can be "0"; test with defined() at - line 4.
712 ########
713 # op.c
714 use warnings 'misc';
715 open FH, "<abc";
716 ($_ = <FH>) // ($_ = 1);
717 opendir DH, ".";
718 %a = (1,2,3,4) ;
719 EXPECT
720 ########
721 # op.c
722 use warnings 'redefine' ;
723 sub fred {}
724 sub fred {}
725 no warnings 'redefine' ;
726 sub fred {}
727 EXPECT
728 Subroutine fred redefined at - line 4.
729 ########
730 # op.c
731 use warnings 'redefine' ;
732 sub fred () { 1 }
733 sub fred () { 1 }
734 no warnings 'redefine' ;
735 sub fred () { 1 }
736 EXPECT
737 Constant subroutine fred redefined at - line 4.
738 ########
739 # op.c
740 sub fred () { 1 }
741 sub fred () { 2 }
742 EXPECT
743 Constant subroutine fred redefined at - line 3.
744 ########
745 # op.c
746 sub fred () { 1 }
747 *fred = sub () { 2 };
748 EXPECT
749 Constant subroutine main::fred redefined at - line 3.
750 ########
751 # op.c
752 no warnings 'redefine' ;
753 sub fred () { 1 }
754 sub fred () { 2 }
755 EXPECT
756 ########
757 # op.c
758 no warnings 'redefine' ;
759 sub fred () { 1 }
760 *fred = sub () { 2 };
761 EXPECT
762 ########
763 # op.c
764 use warnings 'redefine' ;
765 format FRED =
766 .
767 format FRED =
768 .
769 no warnings 'redefine' ;
770 format FRED =
771 .
772 EXPECT
773 Format FRED redefined at - line 5.
774 ########
775 # op.c
776 push FRED;
777 no warnings 'deprecated' ;
778 push FRED;
779 EXPECT
780 Array @FRED missing the @ in argument 1 of push() at - line 2.
781 ########
782 # op.c
783 @a = keys FRED ;
784 no warnings 'deprecated' ;
785 @a = keys FRED ;
786 EXPECT
787 Hash %FRED missing the % in argument 1 of keys() at - line 2.
788 ########
789 # op.c
790 use warnings 'syntax' ;
791 exec "$^X -e 1" ; 
792 my $a
793 EXPECT
794 Statement unlikely to be reached at - line 4.
795         (Maybe you meant system() when you said exec()?)
796 ########
797 # op.c, no warning if exec isn't a statement.
798 use warnings 'syntax' ;
799 $a || exec "$^X -e 1" ;
800 my $a
801 EXPECT
802 ########
803 # op.c
804 defined(@a);
805 EXPECT
806 defined(@array) is deprecated at - line 2.
807         (Maybe you should just omit the defined()?)
808 ########
809 # op.c
810 my @a; defined(@a);
811 EXPECT
812 defined(@array) is deprecated at - line 2.
813         (Maybe you should just omit the defined()?)
814 ########
815 # op.c
816 defined(@a = (1,2,3));
817 EXPECT
818 defined(@array) is deprecated at - line 2.
819         (Maybe you should just omit the defined()?)
820 ########
821 # op.c
822 defined(%h);
823 EXPECT
824 defined(%hash) is deprecated at - line 2.
825         (Maybe you should just omit the defined()?)
826 ########
827 # op.c
828 my %h; defined(%h);
829 EXPECT
830 defined(%hash) is deprecated at - line 2.
831         (Maybe you should just omit the defined()?)
832 ########
833 # op.c
834 no warnings 'syntax' ;
835 exec "$^X -e 1" ; 
836 my $a
837 EXPECT
838
839 ########
840 # op.c
841 sub fred();
842 sub fred($) {}
843 EXPECT
844 Prototype mismatch: sub main::fred () vs ($) at - line 3.
845 ########
846 # op.c
847 use utf8;
848 use open qw( :utf8 :std );
849 sub frèd();
850 sub frèd($) {}
851 EXPECT
852 Prototype mismatch: sub main::frèd () vs ($) at - line 5.
853 ########
854 # op.c
855 use utf8;
856 use open qw( :utf8 :std );
857 use warnings;
858 eval "sub fòò (\$\0) {}";
859 EXPECT
860 Illegal character in prototype for main::fòò : $\0 at (eval 1) line 1.
861 ########
862 # op.c
863 use utf8;
864 use open qw( :utf8 :std );
865 use warnings;
866 eval "sub foo (\0) {}";
867 EXPECT
868 Illegal character in prototype for main::foo : \0 at (eval 1) line 1.
869 ########
870 # op.c
871 use utf8;
872 use open qw( :utf8 :std );
873 use warnings;
874 BEGIN { $::{"foo"} = "\$\0L\351on" }
875 BEGIN { eval "sub foo (\$\0L\x{c3}\x{a9}on) {}"; }
876 EXPECT
877 Illegal character in prototype for main::foo : $\x{0}L... at (eval 1) line 1.
878 ########
879 # op.c
880 use utf8;
881 use open qw( :utf8 :std );
882 use warnings;
883 BEGIN { eval "sub foo (\0) {}"; }
884 EXPECT
885 Illegal character in prototype for main::foo : \0 at (eval 1) line 1.
886 ########
887 # op.c
888 use warnings;
889 eval "sub foo (\xAB) {}";
890 EXPECT
891 Illegal character in prototype for main::foo : \x{ab} at (eval 1) line 1.
892 ########
893 # op.c
894 use utf8;
895 use open qw( :utf8 :std );
896 use warnings;
897 BEGIN { eval "sub foo (\x{30cb}) {}"; }
898 EXPECT
899 Illegal character in prototype for main::foo : \x{30cb} at (eval 1) line 1.
900 ########
901 # op.c
902 use utf8;
903 use open qw( :utf8 :std );
904 use warnings;
905 BEGIN { $::{"foo"} = "\x{30cb}" }
906 BEGIN { eval "sub foo {}"; }
907 EXPECT
908 Prototype mismatch: sub main::foo (ニ) vs none at (eval 1) line 1.
909 ########
910 # op.c
911 $^W = 0 ;
912 sub fred() ;
913 sub fred($) {}
914 {
915     no warnings 'prototype' ;
916     sub Fred() ;
917     sub Fred($) {}
918     use warnings 'prototype' ;
919     sub freD() ;
920     sub freD($) {}
921 }
922 sub FRED() ;
923 sub FRED($) {}
924 EXPECT
925 Prototype mismatch: sub main::fred () vs ($) at - line 4.
926 Prototype mismatch: sub main::freD () vs ($) at - line 11.
927 Prototype mismatch: sub main::FRED () vs ($) at - line 14.
928 ########
929 # op.c [Perl_ck_cmp]
930 use warnings 'syntax' ;
931 no warnings 'deprecated';
932 @a = $[ < 5;
933 @a = $[ > 5;
934 @a = $[ <= 5;
935 @a = $[ >= 5;
936 @a = 42 < $[;
937 @a = 42 > $[;
938 @a = 42 <= $[;
939 @a = 42 >= $[;
940 use integer;
941 @a = $[ < 5;
942 @a = $[ > 5;
943 @a = $[ <= 5;
944 @a = $[ >= 5;
945 @a = 42 < $[;
946 @a = 42 > $[;
947 @a = 42 <= $[;
948 @a = 42 >= $[;
949 no integer;
950 @a = $[ < $5;
951 @a = $[ > $5;
952 @a = $[ <= $5;
953 @a = $[ >= $5;
954 @a = $42 < $[;
955 @a = $42 > $[;
956 @a = $42 <= $[;
957 @a = $42 >= $[;
958 use integer;
959 @a = $[ < $5;
960 @a = $[ > $5;
961 @a = $[ <= $5;
962 @a = $[ >= $5;
963 @a = $42 < $[;
964 @a = $42 > $[;
965 @a = $42 <= $[;
966 @a = $42 >= $[;
967 EXPECT
968 $[ used in numeric lt (<) (did you mean $] ?) at - line 4.
969 $[ used in numeric gt (>) (did you mean $] ?) at - line 5.
970 $[ used in numeric le (<=) (did you mean $] ?) at - line 6.
971 $[ used in numeric ge (>=) (did you mean $] ?) at - line 7.
972 $[ used in numeric lt (<) (did you mean $] ?) at - line 8.
973 $[ used in numeric gt (>) (did you mean $] ?) at - line 9.
974 $[ used in numeric le (<=) (did you mean $] ?) at - line 10.
975 $[ used in numeric ge (>=) (did you mean $] ?) at - line 11.
976 $[ used in numeric lt (<) (did you mean $] ?) at - line 13.
977 $[ used in numeric gt (>) (did you mean $] ?) at - line 14.
978 $[ used in numeric le (<=) (did you mean $] ?) at - line 15.
979 $[ used in numeric ge (>=) (did you mean $] ?) at - line 16.
980 $[ used in numeric lt (<) (did you mean $] ?) at - line 17.
981 $[ used in numeric gt (>) (did you mean $] ?) at - line 18.
982 $[ used in numeric le (<=) (did you mean $] ?) at - line 19.
983 $[ used in numeric ge (>=) (did you mean $] ?) at - line 20.
984 ########
985 # op.c [Perl_ck_length]
986 use warnings 'syntax' ;
987 length(@a);
988 length(%b);
989 length(@$c);
990 length(%$d);
991 length($a);
992 length(my %h);
993 length(my @g);
994 EXPECT
995 length() used on @a (did you mean "scalar(@a)"?) at - line 3.
996 length() used on %b (did you mean "scalar(keys %b)"?) at - line 4.
997 length() used on @array (did you mean "scalar(@array)"?) at - line 5.
998 length() used on %hash (did you mean "scalar(keys %hash)"?) at - line 6.
999 length() used on %h (did you mean "scalar(keys %h)"?) at - line 8.
1000 length() used on @g (did you mean "scalar(@g)"?) at - line 9.
1001 ########
1002 # op.c
1003 use warnings 'syntax' ;
1004 join /---/, 'x', 'y', 'z';
1005 EXPECT
1006 /---/ should probably be written as "---" at - line 3.
1007 ########
1008 # op.c
1009 use utf8;
1010 use open qw( :utf8 :std );
1011 use warnings 'syntax' ;
1012 join /~~~/, 'x', 'y', 'z';
1013 EXPECT
1014 /~~~/ should probably be written as "~~~" at - line 5.
1015 ########
1016 # op.c [Perl_peep]
1017 use warnings 'prototype' ;
1018 fred() ; 
1019 sub fred ($$) {}
1020 no warnings 'prototype' ;
1021 joe() ; 
1022 sub joe ($$) {}
1023 EXPECT
1024 main::fred() called too early to check prototype at - line 3.
1025 ########
1026 # op.c [Perl_newATTRSUB]
1027 --FILE-- abc.pm
1028 use warnings 'void' ;
1029 BEGIN { $| = 1; print "in begin\n"; }
1030 CHECK { print "in check\n"; }
1031 INIT { print "in init\n"; }
1032 END { print "in end\n"; }
1033 print "in mainline\n";
1034 1;
1035 --FILE--
1036 use abc;
1037 delete $INC{"abc.pm"};
1038 require abc;
1039 do "abc.pm";
1040 EXPECT
1041 in begin
1042 in mainline
1043 in check
1044 in init
1045 in begin
1046 Too late to run CHECK block at abc.pm line 3.
1047 Too late to run INIT block at abc.pm line 4.
1048 in mainline
1049 in begin
1050 Too late to run CHECK block at abc.pm line 3.
1051 Too late to run INIT block at abc.pm line 4.
1052 in mainline
1053 in end
1054 in end
1055 in end
1056 ########
1057 # op.c [Perl_newATTRSUB]
1058 --FILE-- abc.pm
1059 no warnings 'void' ;
1060 BEGIN { $| = 1; print "in begin\n"; }
1061 CHECK { print "in check\n"; }
1062 INIT { print "in init\n"; }
1063 END { print "in end\n"; }
1064 print "in mainline\n";
1065 1;
1066 --FILE--
1067 require abc;
1068 do "abc.pm";
1069 EXPECT
1070 in begin
1071 in mainline
1072 in begin
1073 in mainline
1074 in end
1075 in end
1076 ########
1077 # op.c
1078 my @x;
1079 use warnings 'syntax' ;
1080 push(@x);
1081 unshift(@x);
1082 no warnings 'syntax' ;
1083 push(@x);
1084 unshift(@x);
1085 EXPECT
1086 Useless use of push with no values at - line 4.
1087 Useless use of unshift with no values at - line 5.
1088 ########
1089 # op.c
1090 # 20020401 mjd@plover.com at suggestion of jfriedl@yahoo.com
1091 use warnings 'regexp';
1092 split /blah/g, "blah";
1093 no warnings 'regexp';
1094 split /blah/g, "blah";
1095 EXPECT
1096 Use of /g modifier is meaningless in split at - line 4.
1097 ########
1098 # op.c
1099 use warnings 'precedence';
1100 $a = $b & $c == $d;
1101 $a = $b ^ $c != $d;
1102 $a = $b | $c > $d;
1103 $a = $b < $c & $d;
1104 $a = $b >= $c ^ $d;
1105 $a = $b <= $c | $d;
1106 $a = $b <=> $c & $d;
1107 $a &= $b == $c; $a |= $b == $c; $a ^= $b == $c; # shouldn't warn
1108 no warnings 'precedence';
1109 $a = $b & $c == $d;
1110 $a = $b ^ $c != $d;
1111 $a = $b | $c > $d;
1112 $a = $b < $c & $d;
1113 $a = $b >= $c ^ $d;
1114 $a = $b <= $c | $d;
1115 $a = $b <=> $c & $d;
1116 EXPECT
1117 Possible precedence problem on bitwise & operator at - line 3.
1118 Possible precedence problem on bitwise ^ operator at - line 4.
1119 Possible precedence problem on bitwise | operator at - line 5.
1120 Possible precedence problem on bitwise & operator at - line 6.
1121 Possible precedence problem on bitwise ^ operator at - line 7.
1122 Possible precedence problem on bitwise | operator at - line 8.
1123 Possible precedence problem on bitwise & operator at - line 9.
1124 ########
1125 # op.c
1126 use integer;
1127 use warnings 'precedence';
1128 $a = $b & $c == $d;
1129 $a = $b ^ $c != $d;
1130 $a = $b | $c > $d;
1131 $a = $b < $c & $d;
1132 $a = $b >= $c ^ $d;
1133 $a = $b <= $c | $d;
1134 $a = $b <=> $c & $d;
1135 no warnings 'precedence';
1136 $a = $b & $c == $d;
1137 $a = $b ^ $c != $d;
1138 $a = $b | $c > $d;
1139 $a = $b < $c & $d;
1140 $a = $b >= $c ^ $d;
1141 $a = $b <= $c | $d;
1142 $a = $b <=> $c & $d;
1143 EXPECT
1144 Possible precedence problem on bitwise & operator at - line 4.
1145 Possible precedence problem on bitwise ^ operator at - line 5.
1146 Possible precedence problem on bitwise | operator at - line 6.
1147 Possible precedence problem on bitwise & operator at - line 7.
1148 Possible precedence problem on bitwise ^ operator at - line 8.
1149 Possible precedence problem on bitwise | operator at - line 9.
1150 Possible precedence problem on bitwise & operator at - line 10.
1151 ########
1152 # op.c
1153
1154 # ok    => local() has desired effect;
1155 # ignore=> local() silently ignored
1156
1157 use warnings 'syntax';
1158
1159 local(undef);           # OP_UNDEF              ignore
1160 sub lval : lvalue {};
1161 local(lval());          # OP_ENTERSUB
1162 local($x **= 1);        # OP_POW
1163 local($x *=  1);        # OP_MULTIPLY
1164 local($x /=  1);        # OP_DIVIDE
1165 local($x %=  1);        # OP_MODULO
1166 local($x x=  1);        # OP_REPEAT
1167 local($x +=  1);        # OP_ADD
1168 local($x -=  1);        # OP_SUBTRACT
1169 local($x .=  1);        # OP_CONCAT
1170 local($x <<= 1);        # OP_LEFT_SHIFT
1171 local($x >>= 1);        # OP_RIGHT_SHIFT
1172 local($x &=  1);        # OP_BIT_AND
1173 local($x ^=  1);        # OP_BIT_XOR
1174 local($x |=  1);        # OP_BIT_OR
1175 {
1176     use integer;
1177     local($x *= 1);     # OP_I_MULTIPLY
1178     local($x /= 1);     # OP_I_DIVIDE
1179     local($x %= 1);     # OP_I_MODULO
1180     local($x += 1);     # OP_I_ADD
1181     local($x -= 1);     # OP_I_SUBTRACT
1182 }
1183 local($x?$y:$z) = 1;    # OP_COND_EXPR          ok
1184 # these two are fatal run-time errors instead
1185 #local(@$a);            # OP_RV2AV              ok
1186 #local(%$a);            # OP_RV2HV              ok
1187 local(*a);              # OP_RV2GV              ok
1188 local(@a[1,2]);         # OP_ASLICE             ok
1189 local(@a{1,2});         # OP_HSLICE             ok
1190 local(@a = (1,2));      # OP_AASSIGN
1191 local($$x);             # OP_RV2SV              ok
1192 local($#a);             # OP_AV2ARYLEN
1193 local($x =   1);        # OP_SASSIGN
1194 local($x &&= 1);        # OP_ANDASSIGN
1195 local($x ||= 1);        # OP_ORASSIGN
1196 local($x //= 1);        # OP_DORASSIGN
1197 local($a[0]);           # OP_AELEMFAST          ok
1198
1199 local(substr($x,0,1));  # OP_SUBSTR
1200 local(pos($x));         # OP_POS
1201 local(vec($x,0,1));     # OP_VEC
1202 local($a[$b]);          # OP_AELEM              ok
1203 local($a{$b});          # OP_HELEM              ok
1204
1205 no warnings 'syntax';
1206 EXPECT
1207 Useless localization of subroutine entry at - line 10.
1208 Useless localization of exponentiation (**) at - line 11.
1209 Useless localization of multiplication (*) at - line 12.
1210 Useless localization of division (/) at - line 13.
1211 Useless localization of modulus (%) at - line 14.
1212 Useless localization of repeat (x) at - line 15.
1213 Useless localization of addition (+) at - line 16.
1214 Useless localization of subtraction (-) at - line 17.
1215 Useless localization of concatenation (.) or string at - line 18.
1216 Useless localization of left bitshift (<<) at - line 19.
1217 Useless localization of right bitshift (>>) at - line 20.
1218 Useless localization of bitwise and (&) at - line 21.
1219 Useless localization of bitwise xor (^) at - line 22.
1220 Useless localization of bitwise or (|) at - line 23.
1221 Useless localization of integer multiplication (*) at - line 26.
1222 Useless localization of integer division (/) at - line 27.
1223 Useless localization of integer modulus (%) at - line 28.
1224 Useless localization of integer addition (+) at - line 29.
1225 Useless localization of integer subtraction (-) at - line 30.
1226 Useless localization of list assignment at - line 39.
1227 Useless localization of array length at - line 41.
1228 Useless localization of scalar assignment at - line 42.
1229 Useless localization of logical and assignment (&&=) at - line 43.
1230 Useless localization of logical or assignment (||=) at - line 44.
1231 Useless localization of defined or assignment (//=) at - line 45.
1232 Useless localization of substr at - line 48.
1233 Useless localization of match position at - line 49.
1234 Useless localization of vec at - line 50.
1235 ########
1236 # op.c
1237 my $x1 if 0;
1238 my @x2 if 0;
1239 my %x3 if 0;
1240 my ($x4) if 0;
1241 my ($x5,@x6, %x7) if 0;
1242 0 && my $z1;
1243 0 && my (%z2);
1244 # these shouldn't warn
1245 our $x if 0;
1246 our $x unless 0;
1247 if (0) { my $w1 }
1248 if (my $w2) { $a=1 }
1249 if ($a && (my $w3 = 1)) {$a = 2}
1250
1251 EXPECT
1252 Deprecated use of my() in false conditional at - line 2.
1253 Deprecated use of my() in false conditional at - line 3.
1254 Deprecated use of my() in false conditional at - line 4.
1255 Deprecated use of my() in false conditional at - line 5.
1256 Deprecated use of my() in false conditional at - line 6.
1257 Deprecated use of my() in false conditional at - line 7.
1258 Deprecated use of my() in false conditional at - line 8.
1259 ########
1260 # op.c
1261 $[ = 1;
1262 ($[) = 1;
1263 use warnings 'deprecated';
1264 $[ = 2;
1265 ($[) = 2;
1266 no warnings 'deprecated';
1267 $[ = 3;
1268 ($[) = 3;
1269 EXPECT
1270 Use of assignment to $[ is deprecated at - line 2.
1271 Use of assignment to $[ is deprecated at - line 3.
1272 Use of assignment to $[ is deprecated at - line 5.
1273 Use of assignment to $[ is deprecated at - line 6.
1274 ########
1275 # op.c
1276 use warnings 'void';
1277 @x = split /y/, "z";
1278 $x = split /y/, "z";
1279      split /y/, "z";
1280 no warnings 'void';
1281 @x = split /y/, "z";
1282 $x = split /y/, "z";
1283      split /y/, "z";
1284 EXPECT
1285 Useless use of split in void context at - line 5.
1286 ########
1287 # op.c
1288 use warnings 'redefine' ;
1289 use utf8;
1290 use open qw( :utf8 :std );
1291 sub frèd {}
1292 sub frèd {}
1293 no warnings 'redefine' ;
1294 sub frèd {}
1295 EXPECT
1296 Subroutine frèd redefined at - line 6.
1297 ########
1298 # op.c
1299 use warnings 'redefine' ;
1300 use utf8;
1301 use open qw( :utf8 :std );
1302 sub frèd () { 1 }
1303 sub frèd () { 1 }
1304 no warnings 'redefine' ;
1305 sub frèd () { 1 }
1306 EXPECT
1307 Constant subroutine frèd redefined at - line 6.
1308 ########
1309 # op.c
1310 use utf8;
1311 use open qw( :utf8 :std );
1312 sub frèd () { 1 }
1313 sub frèd () { 2 }
1314 EXPECT
1315 Constant subroutine frèd redefined at - line 5.
1316 ########
1317 # op.c
1318 use utf8;
1319 use open qw( :utf8 :std );
1320 sub frèd () { 1 }
1321 *frèd = sub () { 2 };
1322 EXPECT
1323 Constant subroutine main::frèd redefined at - line 5.
1324 ########
1325 # op.c
1326 use warnings 'redefine' ;
1327 use utf8;
1328 use open qw( :utf8 :std );
1329 sub ᚠርƊ {}
1330 sub ᚠርƊ {}
1331 no warnings 'redefine' ;
1332 sub ᚠርƊ {}
1333 EXPECT
1334 Subroutine ᚠርƊ redefined at - line 6.
1335 ########
1336 # op.c
1337 use warnings 'redefine' ;
1338 use utf8;
1339 use open qw( :utf8 :std );
1340 sub ᚠርƊ () { 1 }
1341 sub ᚠርƊ () { 1 }
1342 no warnings 'redefine' ;
1343 sub ᚠርƊ () { 1 }
1344 EXPECT
1345 Constant subroutine ᚠርƊ redefined at - line 6.
1346 ########
1347 # op.c
1348 use utf8;
1349 use open qw( :utf8 :std );
1350 sub ᚠርƊ () { 1 }
1351 sub ᚠርƊ () { 2 }
1352 EXPECT
1353 Constant subroutine ᚠርƊ redefined at - line 5.
1354 ########
1355 # op.c
1356 use utf8;
1357 use open qw( :utf8 :std );
1358 sub ᚠርƊ () { 1 }
1359 *ᚠርƊ = sub () { 2 };
1360 EXPECT
1361 Constant subroutine main::ᚠርƊ redefined at - line 5.
1362 ########