This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Don’t mention pkg in proto warnings for lex subs
[perl5.git] / t / lib / warnings / toke
CommitLineData
599cee73
PM
1toke.c AOK
2
3 we seem to have lost a few ambiguous warnings!!
4
5
599cee73
PM
6 $a = <<;
7 Use of comma-less variable list is deprecated
8 (called 3 times via depcom)
9
10 \1 better written as $1
4438c4b7 11 use warnings 'syntax' ;
599cee73
PM
12 s/(abc)/\1/;
13
14 warn(warn_nosemi)
15 Semicolon seems to be missing
16 $a = 1
17 &time ;
18
19
20 Reversed %c= operator
21 my $a =+ 2 ;
22 $a =- 2 ;
23 $a =* 2 ;
24 $a =% 2 ;
25 $a =& 2 ;
26 $a =. 2 ;
27 $a =^ 2 ;
28 $a =| 2 ;
29 $a =< 2 ;
30 $a =/ 2 ;
31
32 Multidimensional syntax %.*s not supported
33 my $a = $a[1,2] ;
34
35 You need to quote \"%s\""
36 sub fred {} ; $SIG{TERM} = fred;
37
38 Scalar value %.*s better written as $%.*s"
39 @a[3] = 2;
40 @a{3} = 2;
41
42 Can't use \\%c to mean $%c in expression
43 $_ = "ab" ; s/(ab)/\1/e;
44
45 Unquoted string "abc" may clash with future reserved word at - line 3.
46 warn(warn_reserved
47 $a = abc;
48
599cee73
PM
49 Possible attempt to separate words with commas
50 @a = qw(a, b, c) ;
51
52 Possible attempt to put comments in qw() list
53 @a = qw(a b # c) ;
54
599cee73
PM
55 %s (...) interpreted as function
56 print ("")
57 printf ("")
58 sort ("")
59
60 Ambiguous use of %c{%s%s} resolved to %c%s%s
61 $a = ${time[2]}
62 $a = ${time{2}}
63
64
65 Ambiguous use of %c{%s} resolved to %c%s
66 $a = ${time}
67 sub fred {} $a = ${fred}
68
69 Misplaced _ in number
70 $a = 1_2;
71 $a = 1_2345_6;
72
73 Bareword \"%s\" refers to nonexistent package
74 $a = FRED:: ;
75
76 Ambiguous call resolved as CORE::%s(), qualify as such or use &
77 sub time {}
78 my $a = time()
79
767a6a26
PM
80 Unrecognized escape \\%c passed through
81 $a = "\m" ;
82
820438b1 83 Useless use of \\E.
52ed07f6
BF
84 $a = "abcd\E" ;
85
767a6a26
PM
86 %s number > %s non-portable
87 my $a = 0b011111111111111111111111111111110 ;
88 $a = 0b011111111111111111111111111111111 ;
89 $a = 0b111111111111111111111111111111111 ;
90 $a = 0x0fffffffe ;
91 $a = 0x0ffffffff ;
92 $a = 0x1ffffffff ;
93 $a = 0037777777776 ;
94 $a = 0037777777777 ;
95 $a = 0047777777777 ;
96
97 Integer overflow in binary number
98 my $a = 0b011111111111111111111111111111110 ;
99 $a = 0b011111111111111111111111111111111 ;
100 $a = 0b111111111111111111111111111111111 ;
101 $a = 0x0fffffffe ;
102 $a = 0x0ffffffff ;
103 $a = 0x1ffffffff ;
104 $a = 0037777777776 ;
105 $a = 0037777777777 ;
106 $a = 0047777777777 ;
ac206dc8
RGS
107
108 dump() better written as CORE::dump()
4ac733c9
MJD
109
110 Use of /c modifier is meaningless without /g
111
64e578a2
MJD
112 Use of /c modifier is meaningless in s///
113
0453d815
PM
114 Mandatory Warnings
115 ------------------
116 Use of "%s" without parentheses is ambiguous [check_uni]
117 rand + 4
118
119 Ambiguous use of -%s resolved as -&%s() [yylex]
120 sub fred {} ; - fred ;
121
122 Precedence problem: open %.*s should be open(%.*s) [yylex]
123 open FOO || die;
124
125 Operator or semicolon missing before %c%s [yylex]
126 Ambiguous use of %c resolved as operator %c
127 *foo *foo
128
599cee73
PM
129__END__
130# toke.c
599cee73
PM
131format STDOUT =
132@<<< @||| @>>> @>>>
133$a $b "abc" 'def'
134.
4438c4b7 135no warnings 'deprecated' ;
0453d815
PM
136format STDOUT =
137@<<< @||| @>>> @>>>
138$a $b "abc" 'def'
139.
599cee73 140EXPECT
d1d15184
NC
141Use of comma-less variable list is deprecated at - line 4.
142Use of comma-less variable list is deprecated at - line 4.
143Use of comma-less variable list is deprecated at - line 4.
599cee73
PM
144########
145# toke.c
599cee73
PM
146$a = <<;
147
4438c4b7 148no warnings 'deprecated' ;
0453d815
PM
149$a = <<;
150
599cee73 151EXPECT
0da72d5e
KW
152Use of bare << to mean <<"" is deprecated at - line 2.
153########
154# toke.c
155$a =~ m/$foo/eq;
156$a =~ s/$foo/fool/seq;
157
158EXPECT
159OPTION fatal
160Unknown regexp modifier "/e" at - line 2, near "=~ "
161Unknown regexp modifier "/q" at - line 2, near "=~ "
162Unknown regexp modifier "/q" at - line 3, near "=~ "
163Execution of - aborted due to compilation errors.
84159251
BF
164########
165# toke.c
166use utf8;
167use open qw( :utf8 :std );
168$a =~ m/$foo/eネq;
169$a =~ s/$foo/fool/seネq;
170
171EXPECT
172OPTION fatal
173Unknown regexp modifier "/e" at - line 4, near "=~ "
174Unknown regexp modifier "/ネ" at - line 4, near "=~ "
175Unknown regexp modifier "/q" at - line 4, near "=~ "
176Unknown regexp modifier "/ネ" at - line 5, near "=~ "
177Unknown regexp modifier "/q" at - line 5, near "=~ "
178Execution of - aborted due to compilation errors.
599cee73
PM
179########
180# toke.c
4438c4b7 181use warnings 'syntax' ;
599cee73 182s/(abc)/\1/;
4438c4b7 183no warnings 'syntax' ;
0453d815 184s/(abc)/\1/;
599cee73
PM
185EXPECT
186\1 better written as $1 at - line 3.
187########
188# toke.c
4438c4b7 189use warnings 'semicolon' ;
599cee73
PM
190$a = 1
191&time ;
4438c4b7 192no warnings 'semicolon' ;
0453d815
PM
193$a = 1
194&time ;
599cee73
PM
195EXPECT
196Semicolon seems to be missing at - line 3.
197########
198# toke.c
4438c4b7 199use warnings 'syntax' ;
599cee73
PM
200my $a =+ 2 ;
201$a =- 2 ;
202$a =* 2 ;
203$a =% 2 ;
204$a =& 2 ;
205$a =. 2 ;
206$a =^ 2 ;
207$a =| 2 ;
208$a =< 2 ;
209$a =/ 2 ;
210EXPECT
7f01dc7a
JH
211Reversed += operator at - line 3.
212Reversed -= operator at - line 4.
213Reversed *= operator at - line 5.
214Reversed %= operator at - line 6.
215Reversed &= operator at - line 7.
216Reversed .= operator at - line 8.
217Reversed ^= operator at - line 9.
218Reversed |= operator at - line 10.
219Reversed <= operator at - line 11.
220syntax error at - line 8, near "=."
221syntax error at - line 9, near "=^"
222syntax error at - line 10, near "=|"
223Unterminated <> operator at - line 11.
599cee73
PM
224########
225# toke.c
4438c4b7 226no warnings 'syntax' ;
0453d815
PM
227my $a =+ 2 ;
228$a =- 2 ;
229$a =* 2 ;
230$a =% 2 ;
231$a =& 2 ;
232$a =. 2 ;
233$a =^ 2 ;
234$a =| 2 ;
235$a =< 2 ;
236$a =/ 2 ;
237EXPECT
7f01dc7a
JH
238syntax error at - line 8, near "=."
239syntax error at - line 9, near "=^"
240syntax error at - line 10, near "=|"
241Unterminated <> operator at - line 11.
0453d815
PM
242########
243# toke.c
4438c4b7 244use warnings 'syntax' ;
599cee73 245my $a = $a[1,2] ;
4438c4b7 246no warnings 'syntax' ;
0453d815 247my $a = $a[1,2] ;
599cee73
PM
248EXPECT
249Multidimensional syntax $a[1,2] not supported at - line 3.
250########
251# toke.c
4438c4b7 252use warnings 'syntax' ;
599cee73 253sub fred {} ; $SIG{TERM} = fred;
4438c4b7 254no warnings 'syntax' ;
0453d815 255$SIG{TERM} = fred;
599cee73
PM
256EXPECT
257You need to quote "fred" at - line 3.
258########
259# toke.c
4c01a014
BF
260use utf8;
261use open qw( :utf8 :std );
262use warnings 'syntax' ;
263sub frèd {} ; $SIG{TERM} = frèd;
264no warnings 'syntax' ;
265$SIG{TERM} = frèd;
266EXPECT
267You need to quote "frèd" at - line 5.
268########
269# toke.c
270use utf8;
271use open qw( :utf8 :std );
272use warnings 'syntax' ;
273sub ふれど {} ; $SIG{TERM} = ふれど;
274no warnings 'syntax' ;
275$SIG{TERM} = ふれど;
276EXPECT
277You need to quote "ふれど" at - line 5.
278########
279# toke.c
4438c4b7 280use warnings 'syntax' ;
599cee73
PM
281@a[3] = 2;
282@a{3} = 2;
4438c4b7 283no warnings 'syntax' ;
0453d815
PM
284@a[3] = 2;
285@a{3} = 2;
599cee73
PM
286EXPECT
287Scalar value @a[3] better written as $a[3] at - line 3.
288Scalar value @a{3} better written as $a{3} at - line 4.
289########
290# toke.c
b9e186cd
BF
291use utf8;
292use open qw( :utf8 :std );
293use warnings 'syntax' ;
294@à[3] = 2;
295@à{3} = 2;
296no warnings 'syntax' ;
297@à[3] = 2;
298@à{3} = 2;
299EXPECT
300Scalar value @à[3] better written as $à[3] at - line 5.
301Scalar value @à{3} better written as $à{3} at - line 6.
302########
303# toke.c
304use utf8;
305use open qw( :utf8 :std );
306use warnings 'syntax' ;
307@ぁ[3] = 2;
308@ぁ{3} = 2;
309no warnings 'syntax' ;
310@ぁ[3] = 2;
311@ぁ{3} = 2;
312EXPECT
313Scalar value @ぁ[3] better written as $ぁ[3] at - line 5.
314Scalar value @ぁ{3} better written as $ぁ{3} at - line 6.
315########
316# toke.c
4438c4b7 317use warnings 'syntax' ;
599cee73
PM
318$_ = "ab" ;
319s/(ab)/\1/e;
4438c4b7 320no warnings 'syntax' ;
0453d815
PM
321$_ = "ab" ;
322s/(ab)/\1/e;
599cee73
PM
323EXPECT
324Can't use \1 to mean $1 in expression at - line 4.
325########
326# toke.c
4438c4b7 327use warnings 'reserved' ;
599cee73 328$a = abc;
1c3923b3
GS
329$a = { def
330
331=> 1 };
4438c4b7 332no warnings 'reserved' ;
0453d815 333$a = abc;
599cee73
PM
334EXPECT
335Unquoted string "abc" may clash with future reserved word at - line 3.
336########
337# toke.c
e476b1b5 338use warnings 'qw' ;
599cee73 339@a = qw(a, b, c) ;
e476b1b5 340no warnings 'qw' ;
0453d815 341@a = qw(a, b, c) ;
599cee73
PM
342EXPECT
343Possible attempt to separate words with commas at - line 3.
344########
345# toke.c
e476b1b5 346use warnings 'qw' ;
7e03b518 347@a = qw(a b c # #) ;
e476b1b5 348no warnings 'qw' ;
7e03b518 349@a = qw(a b c # #) ;
599cee73
PM
350EXPECT
351Possible attempt to put comments in qw() list at - line 3.
352########
353# toke.c
7e03b518
EB
354use warnings 'qw' ;
355@a = qw(a, b, c # #) ;
356no warnings 'qw' ;
357@a = qw(a, b, c # #) ;
358EXPECT
359Possible attempt to separate words with commas at - line 3.
360Possible attempt to put comments in qw() list at - line 3.
361########
362# toke.c
4438c4b7 363use warnings 'syntax' ;
b1439985
RGS
364print ("");
365print ("") and $x = 1;
366print ("") or die;
367print ("") // die;
368print (1+2) * 3 if 0; # only this one should warn
369print (1+2) if 0;
599cee73 370EXPECT
b1439985 371print (...) interpreted as function at - line 7.
599cee73
PM
372########
373# toke.c
4438c4b7 374no warnings 'syntax' ;
0453d815
PM
375print ("")
376EXPECT
377
378########
379# toke.c
4438c4b7 380use warnings 'syntax' ;
b1439985
RGS
381printf ("");
382printf ("") . '';
599cee73 383EXPECT
b1439985 384printf (...) interpreted as function at - line 4.
599cee73
PM
385########
386# toke.c
4438c4b7 387no warnings 'syntax' ;
0453d815
PM
388printf ("")
389EXPECT
390
391########
392# toke.c
4438c4b7 393use warnings 'syntax' ;
b1439985
RGS
394sort ("");
395sort ("") . '';
599cee73 396EXPECT
b1439985 397sort (...) interpreted as function at - line 4.
599cee73
PM
398########
399# toke.c
4438c4b7 400no warnings 'syntax' ;
0453d815
PM
401sort ("")
402EXPECT
403
404########
405# toke.c
4438c4b7 406use warnings 'ambiguous' ;
599cee73 407$a = ${time[2]};
4438c4b7 408no warnings 'ambiguous' ;
0453d815 409$a = ${time[2]};
599cee73
PM
410EXPECT
411Ambiguous use of ${time[...]} resolved to $time[...] at - line 3.
412########
413# toke.c
4438c4b7 414use warnings 'ambiguous' ;
599cee73
PM
415$a = ${time{2}};
416EXPECT
417Ambiguous use of ${time{...}} resolved to $time{...} at - line 3.
418########
419# toke.c
4438c4b7 420no warnings 'ambiguous' ;
0453d815
PM
421$a = ${time{2}};
422EXPECT
423
424########
425# toke.c
4438c4b7 426use warnings 'ambiguous' ;
599cee73 427$a = ${time} ;
4438c4b7 428no warnings 'ambiguous' ;
0453d815 429$a = ${time} ;
599cee73
PM
430EXPECT
431Ambiguous use of ${time} resolved to $time at - line 3.
432########
433# toke.c
4438c4b7 434use warnings 'ambiguous' ;
599cee73
PM
435sub fred {}
436$a = ${fred} ;
4438c4b7 437no warnings 'ambiguous' ;
0453d815 438$a = ${fred} ;
599cee73
PM
439EXPECT
440Ambiguous use of ${fred} resolved to $fred at - line 4.
441########
442# toke.c
4438c4b7 443use warnings 'syntax' ;
7fd134d9
JH
444$a = _123; print "$a\n"; #( 3 string)
445$a = 1_23; print "$a\n";
446$a = 12_3; print "$a\n";
447$a = 123_; print "$a\n"; # 6
448$a = _+123; print "$a\n"; # 7 string)
449$a = +_123; print "$a\n"; #( 8 string)
450$a = +1_23; print "$a\n";
451$a = +12_3; print "$a\n";
452$a = +123_; print "$a\n"; # 11
453$a = _-123; print "$a\n"; #(12 string)
454$a = -_123; print "$a\n"; #(13 string)
455$a = -1_23; print "$a\n";
456$a = -12_3; print "$a\n";
457$a = -123_; print "$a\n"; # 16
458$a = 123._456; print "$a\n"; # 17
459$a = 123.4_56; print "$a\n";
460$a = 123.45_6; print "$a\n";
461$a = 123.456_; print "$a\n"; # 20
462$a = +123._456; print "$a\n"; # 21
463$a = +123.4_56; print "$a\n";
464$a = +123.45_6; print "$a\n";
465$a = +123.456_; print "$a\n"; # 24
466$a = -123._456; print "$a\n"; # 25
467$a = -123.4_56; print "$a\n";
468$a = -123.45_6; print "$a\n";
469$a = -123.456_; print "$a\n"; # 28
2bea9a37
JH
470$a = 123.456E_12; printf("%.0f\n", $a); # 29
471$a = 123.456E1_2; printf("%.0f\n", $a);
472$a = 123.456E12_; printf("%.0f\n", $a); # 31
473$a = 123.456E_+12; printf("%.0f\n", $a); # 32
474$a = 123.456E+_12; printf("%.0f\n", $a); # 33
475$a = 123.456E+1_2; printf("%.0f\n", $a);
476$a = 123.456E+12_; printf("%.0f\n", $a); # 35
7fd134d9
JH
477$a = 123.456E_-12; print "$a\n"; # 36
478$a = 123.456E-_12; print "$a\n"; # 37
479$a = 123.456E-1_2; print "$a\n";
480$a = 123.456E-12_; print "$a\n"; # 39
b3b48e3e
JH
481$a = 1__23; print "$a\n"; # 40
482$a = 12.3__4; print "$a\n"; # 41
2bea9a37 483$a = 12.34e1__2; printf("%.0f\n", $a); # 42
4438c4b7 484no warnings 'syntax' ;
7fd134d9
JH
485$a = _123; print "$a\n";
486$a = 1_23; print "$a\n";
487$a = 12_3; print "$a\n";
488$a = 123_; print "$a\n";
489$a = _+123; print "$a\n";
490$a = +_123; print "$a\n";
491$a = +1_23; print "$a\n";
492$a = +12_3; print "$a\n";
493$a = +123_; print "$a\n";
494$a = _-123; print "$a\n";
495$a = -_123; print "$a\n";
496$a = -1_23; print "$a\n";
497$a = -12_3; print "$a\n";
498$a = -123_; print "$a\n";
499$a = 123._456; print "$a\n";
500$a = 123.4_56; print "$a\n";
501$a = 123.45_6; print "$a\n";
502$a = 123.456_; print "$a\n";
503$a = +123._456; print "$a\n";
504$a = +123.4_56; print "$a\n";
505$a = +123.45_6; print "$a\n";
506$a = +123.456_; print "$a\n";
507$a = -123._456; print "$a\n";
508$a = -123.4_56; print "$a\n";
509$a = -123.45_6; print "$a\n";
510$a = -123.456_; print "$a\n";
2bea9a37
JH
511$a = 123.456E_12; printf("%.0f\n", $a);
512$a = 123.456E1_2; printf("%.0f\n", $a);
513$a = 123.456E12_; printf("%.0f\n", $a);
514$a = 123.456E_+12; printf("%.0f\n", $a);
515$a = 123.456E+_12; printf("%.0f\n", $a);
516$a = 123.456E+1_2; printf("%.0f\n", $a);
517$a = 123.456E+12_; printf("%.0f\n", $a);
7fd134d9
JH
518$a = 123.456E_-12; print "$a\n";
519$a = 123.456E-_12; print "$a\n";
520$a = 123.456E-1_2; print "$a\n";
521$a = 123.456E-12_; print "$a\n";
b3b48e3e
JH
522$a = 1__23; print "$a\n";
523$a = 12.3__4; print "$a\n";
2bea9a37 524$a = 12.34e1__2; printf("%.0f\n", $a);
599cee73 525EXPECT
fbfa96bd 526OPTIONS regex
928753ea 527Misplaced _ in number at - line 6.
928753ea 528Misplaced _ in number at - line 11.
7fd134d9 529Misplaced _ in number at - line 16.
928753ea 530Misplaced _ in number at - line 17.
7fd134d9 531Misplaced _ in number at - line 20.
928753ea 532Misplaced _ in number at - line 21.
7fd134d9
JH
533Misplaced _ in number at - line 24.
534Misplaced _ in number at - line 25.
535Misplaced _ in number at - line 28.
536Misplaced _ in number at - line 29.
537Misplaced _ in number at - line 31.
538Misplaced _ in number at - line 32.
539Misplaced _ in number at - line 33.
540Misplaced _ in number at - line 35.
541Misplaced _ in number at - line 36.
542Misplaced _ in number at - line 37.
543Misplaced _ in number at - line 39.
b3b48e3e
JH
544Misplaced _ in number at - line 40.
545Misplaced _ in number at - line 41.
546Misplaced _ in number at - line 42.
928753ea
JH
547_123
548123
928753ea 549123
7fd134d9
JH
550123
551123
552_123
553123
554123
555123
556-123
557-_123
558-123
559-123
560-123
561123.456
562123.456
563123.456
564123.456
565123.456
566123.456
567123.456
568123.456
569-123.456
570-123.456
571-123.456
572-123.456
573123456000000000
574123456000000000
575123456000000000
576123456000000000
577123456000000000
578123456000000000
579123456000000000
fbfa96bd
NIS
5801.23456e-0?10
5811.23456e-0?10
5821.23456e-0?10
5831.23456e-0?10
b3b48e3e
JH
584123
58512.34
58612340000000000
7fd134d9
JH
587_123
588123
589123
590123
591123
592_123
593123
594123
595123
596-123
597-_123
598-123
599-123
600-123
601123.456
602123.456
603123.456
604123.456
605123.456
928753ea
JH
606123.456
607123.456
928753ea 608123.456
7fd134d9
JH
609-123.456
610-123.456
611-123.456
612-123.456
613123456000000000
614123456000000000
615123456000000000
616123456000000000
617123456000000000
618123456000000000
619123456000000000
fbfa96bd
NIS
6201.23456e-0?10
6211.23456e-0?10
6221.23456e-0?10
6231.23456e-0?10
b3b48e3e
JH
624123
62512.34
62612340000000000
599cee73
PM
627########
628# toke.c
e476b1b5 629use warnings 'bareword' ;
60e6418e 630#line 25 "bar"
599cee73 631$a = FRED:: ;
e476b1b5 632no warnings 'bareword' ;
0453d815
PM
633#line 25 "bar"
634$a = FRED:: ;
599cee73 635EXPECT
60e6418e 636Bareword "FRED::" refers to nonexistent package at bar line 25.
979a1401
BF
637########
638# toke.c
639use utf8;
640use open qw( :utf8 :std );
641use warnings 'bareword' ;
642#line 25 "bar"
643$a = FRÈD:: ;
644no warnings 'bareword' ;
645#line 25 "bar"
646$a = FRÈD:: ;
647EXPECT
648Bareword "FRÈD::" refers to nonexistent package at bar line 25.
649########
650# toke.c
651use utf8;
652use open qw( :utf8 :std );
653use warnings 'bareword' ;
654#line 25 "bar"
655$a = ϞϞϞ:: ;
656no warnings 'bareword' ;
657#line 25 "bar"
658$a = ϞϞϞ:: ;
659EXPECT
660Bareword "ϞϞϞ::" refers to nonexistent package at bar line 25.
599cee73
PM
661########
662# toke.c
4438c4b7 663use warnings 'ambiguous' ;
599cee73 664sub time {}
0453d815 665my $a = time() ;
4438c4b7 666no warnings 'ambiguous' ;
0453d815 667my $b = time() ;
599cee73
PM
668EXPECT
669Ambiguous call resolved as CORE::time(), qualify as such or use & at - line 4.
670########
671# toke.c
26d16222 672use warnings ;
0453d815 673eval <<'EOE';
df0deb90
GS
674# line 30 "foo"
675warn "yelp";
0453d815 676{
0453d815
PM
677 $_ = " \x{123} " ;
678}
679EOE
680EXPECT
df0deb90 681yelp at foo line 30.
0453d815
PM
682########
683# toke.c
0453d815 684my $a = rand + 4 ;
fbdd83da
DIM
685$a = rand *^H ;
686$a = rand $^H ;
0453d815 687EXPECT
2d5ccbba 688Warning: Use of "rand" without parentheses is ambiguous at - line 2.
0453d815
PM
689########
690# toke.c
691$^W = 0 ;
692my $a = rand + 4 ;
693{
4438c4b7 694 no warnings 'ambiguous' ;
0453d815 695 $a = rand + 4 ;
4438c4b7 696 use warnings 'ambiguous' ;
0453d815
PM
697 $a = rand + 4 ;
698}
699$a = rand + 4 ;
700EXPECT
2d5ccbba
IT
701Warning: Use of "rand" without parentheses is ambiguous at - line 3.
702Warning: Use of "rand" without parentheses is ambiguous at - line 8.
703Warning: Use of "rand" without parentheses is ambiguous at - line 10.
0453d815 704########
e19a021b
FC
705# [perl #97110]
706sub myrand(;$) { }
b5fb7ce3 707sub whatever($) { }
e19a021b 708my $a = myrand + 4 ;
b5fb7ce3 709my $b = whatever + 4 ;
e19a021b 710EXPECT
b5fb7ce3 711Warning: Use of "myrand" without parentheses is ambiguous at - line 4.
e19a021b 712########
0453d815 713# toke.c
e8ae98db
RGS
714use warnings "ambiguous";
715print for keys %+; # should not warn
716EXPECT
717########
718# toke.c
0453d815
PM
719sub fred {};
720-fred ;
721EXPECT
722Ambiguous use of -fred resolved as -&fred() at - line 3.
723########
724# toke.c
725$^W = 0 ;
726sub fred {} ;
727-fred ;
728{
4438c4b7 729 no warnings 'ambiguous' ;
0453d815 730 -fred ;
4438c4b7 731 use warnings 'ambiguous' ;
0453d815
PM
732 -fred ;
733}
734-fred ;
735EXPECT
736Ambiguous use of -fred resolved as -&fred() at - line 4.
737Ambiguous use of -fred resolved as -&fred() at - line 9.
738Ambiguous use of -fred resolved as -&fred() at - line 11.
739########
740# toke.c
43b5ab4c
BF
741use utf8;
742use open qw( :utf8 :std );
743sub frèd {};
744-frèd ;
745EXPECT
746Ambiguous use of -frèd resolved as -&frèd() at - line 5.
747########
748# toke.c
749$^W = 0 ;
750use utf8;
751use open qw( :utf8 :std );
752sub frèd {} ;
753-frèd ;
754{
755 no warnings 'ambiguous' ;
756 -frèd ;
757 use warnings 'ambiguous' ;
758 -frèd ;
759}
760-frèd ;
761EXPECT
762Ambiguous use of -frèd resolved as -&frèd() at - line 6.
763Ambiguous use of -frèd resolved as -&frèd() at - line 11.
764Ambiguous use of -frèd resolved as -&frèd() at - line 13.
765########
766# toke.c
767use utf8;
768use open qw( :utf8 :std );
769sub ᒍᒘᒊ {};
770-ᒍᒘᒊ ;
771EXPECT
772Ambiguous use of -ᒍᒘᒊ resolved as -&ᒍᒘᒊ() at - line 5.
773########
774# toke.c
775$^W = 0 ;
776use utf8;
777use open qw( :utf8 :std );
778sub ᒍᒘᒊ {} ;
779-ᒍᒘᒊ ;
780{
781 no warnings 'ambiguous' ;
782 -ᒍᒘᒊ ;
783 use warnings 'ambiguous' ;
784 -ᒍᒘᒊ ;
785}
786-ᒍᒘᒊ ;
787EXPECT
788Ambiguous use of -ᒍᒘᒊ resolved as -&ᒍᒘᒊ() at - line 6.
789Ambiguous use of -ᒍᒘᒊ resolved as -&ᒍᒘᒊ() at - line 11.
790Ambiguous use of -ᒍᒘᒊ resolved as -&ᒍᒘᒊ() at - line 13.
791########
792# toke.c
0453d815 793open FOO || time;
240d1b6f 794open local *FOO; # should be ok
0453d815
PM
795EXPECT
796Precedence problem: open FOO should be open(FOO) at - line 2.
797########
71aa9713
BF
798# toke.c
799use utf8;
800use open qw( :utf8 :std );
801open FÒÒ || time;
802EXPECT
803Precedence problem: open FÒÒ should be open(FÒÒ) at - line 4.
804########
805# toke.c
806use utf8;
807use open qw( :utf8 :std );
808open ᒍOO || time;
809EXPECT
810Precedence problem: open ᒍOO should be open(ᒍOO) at - line 4.
811########
66fbe8fb
HS
812# toke.c (and [perl #16184])
813open FOO => "<&0"; close FOO;
814EXPECT
815########
0453d815
PM
816# toke.c
817$^W = 0 ;
818open FOO || time;
819{
e476b1b5 820 no warnings 'precedence' ;
0453d815 821 open FOO || time;
e476b1b5 822 use warnings 'precedence' ;
0453d815
PM
823 open FOO || time;
824}
825open FOO || time;
db3abe52 826open Foo::BAR; # this should not warn
0453d815
PM
827EXPECT
828Precedence problem: open FOO should be open(FOO) at - line 3.
829Precedence problem: open FOO should be open(FOO) at - line 8.
830Precedence problem: open FOO should be open(FOO) at - line 10.
831########
832# toke.c
833$^W = 0 ;
71aa9713
BF
834use utf8;
835use open qw( :utf8 :std );
836open FÒÒ || time;
837{
838 no warnings 'precedence' ;
839 open FÒÒ || time;
840 use warnings 'precedence' ;
841 open FÒÒ || time;
842}
843open FÒÒ || time;
844EXPECT
845Precedence problem: open FÒÒ should be open(FÒÒ) at - line 5.
846Precedence problem: open FÒÒ should be open(FÒÒ) at - line 10.
847Precedence problem: open FÒÒ should be open(FÒÒ) at - line 12.
848########
849# toke.c
850use utf8;
851use open qw( :utf8 :std );
852$^W = 0 ;
853open ᒍÒÒ || time;
854{
855 no warnings 'precedence' ;
856 open ᒍÒÒ || time;
857 use warnings 'precedence' ;
858 open ᒍÒÒ || time;
859}
860open ᒍÒÒ || time;
861EXPECT
862Precedence problem: open ᒍÒÒ should be open(ᒍÒÒ) at - line 5.
863Precedence problem: open ᒍÒÒ should be open(ᒍÒÒ) at - line 10.
864Precedence problem: open ᒍÒÒ should be open(ᒍÒÒ) at - line 12.
865########
866# toke.c
867$^W = 0 ;
0453d815
PM
868*foo *foo ;
869{
4438c4b7 870 no warnings 'ambiguous' ;
0453d815 871 *foo *foo ;
4438c4b7 872 use warnings 'ambiguous' ;
0453d815
PM
873 *foo *foo ;
874}
875*foo *foo ;
876EXPECT
877Operator or semicolon missing before *foo at - line 3.
878Ambiguous use of * resolved as operator * at - line 3.
879Operator or semicolon missing before *foo at - line 8.
880Ambiguous use of * resolved as operator * at - line 8.
881Operator or semicolon missing before *foo at - line 10.
882Ambiguous use of * resolved as operator * at - line 10.
767a6a26
PM
883########
884# toke.c
02571fe8
BF
885use utf8;
886use open qw( :utf8 :std );
887$^W = 0 ;
888*foo *foo ;
889{
890 no warnings 'ambiguous' ;
891 *foo *foo ;
892 use warnings 'ambiguous' ;
893 *foo *foo ;
894}
895*foo *foo ;
896EXPECT
897Operator or semicolon missing before *foo at - line 5.
898Ambiguous use of * resolved as operator * at - line 5.
899Operator or semicolon missing before *foo at - line 10.
900Ambiguous use of * resolved as operator * at - line 10.
901Operator or semicolon missing before *foo at - line 12.
902Ambiguous use of * resolved as operator * at - line 12.
903########
904# toke.c
e476b1b5 905use warnings 'misc' ;
767a6a26 906my $a = "\m" ;
e476b1b5 907no warnings 'misc' ;
767a6a26
PM
908$a = "\m" ;
909EXPECT
910Unrecognized escape \m passed through at - line 3.
911########
912# toke.c
52ed07f6
BF
913use warnings 'misc' ;
914my $a = "abcd\E" ;
915no warnings 'misc' ;
916$a = "abcd\E" ;
917EXPECT
820438b1 918Useless use of \E at - line 3.
52ed07f6
BF
919########
920# toke.c
767a6a26
PM
921use warnings 'portable' ;
922my $a = 0b011111111111111111111111111111110 ;
923 $a = 0b011111111111111111111111111111111 ;
924 $a = 0b111111111111111111111111111111111 ;
925 $a = 0x0fffffffe ;
926 $a = 0x0ffffffff ;
927 $a = 0x1ffffffff ;
928 $a = 0037777777776 ;
929 $a = 0037777777777 ;
930 $a = 0047777777777 ;
931no warnings 'portable' ;
932 $a = 0b011111111111111111111111111111110 ;
933 $a = 0b011111111111111111111111111111111 ;
934 $a = 0b111111111111111111111111111111111 ;
935 $a = 0x0fffffffe ;
936 $a = 0x0ffffffff ;
937 $a = 0x1ffffffff ;
938 $a = 0037777777776 ;
939 $a = 0037777777777 ;
940 $a = 0047777777777 ;
941EXPECT
942Binary number > 0b11111111111111111111111111111111 non-portable at - line 5.
943Hexadecimal number > 0xffffffff non-portable at - line 8.
944Octal number > 037777777777 non-portable at - line 11.
945########
946# toke.c
947use warnings 'overflow' ;
948my $a = 0b011111111111111111111111111111110 ;
949 $a = 0b011111111111111111111111111111111 ;
15041a67 950 $a = 0b10000000000000000000000000000000000000000000000000000000000000000 ;
767a6a26
PM
951 $a = 0x0fffffffe ;
952 $a = 0x0ffffffff ;
15041a67 953 $a = 0x10000000000000000 ;
767a6a26
PM
954 $a = 0037777777776 ;
955 $a = 0037777777777 ;
15041a67 956 $a = 002000000000000000000000;
767a6a26
PM
957no warnings 'overflow' ;
958 $a = 0b011111111111111111111111111111110 ;
959 $a = 0b011111111111111111111111111111111 ;
15041a67 960 $a = 0b10000000000000000000000000000000000000000000000000000000000000000 ;
767a6a26
PM
961 $a = 0x0fffffffe ;
962 $a = 0x0ffffffff ;
15041a67 963 $a = 0x10000000000000000 ;
767a6a26
PM
964 $a = 0037777777776 ;
965 $a = 0037777777777 ;
15041a67 966 $a = 002000000000000000000000;
767a6a26
PM
967EXPECT
968Integer overflow in binary number at - line 5.
969Integer overflow in hexadecimal number at - line 8.
970Integer overflow in octal number at - line 11.
8593bda5
GS
971########
972# toke.c
ac206dc8
RGS
973BEGIN { $^C = 1; }
974use warnings 'misc';
975dump;
976CORE::dump;
977EXPECT
978dump() better written as CORE::dump() at - line 4.
979- syntax OK
980########
981# toke.c
982use warnings 'misc';
983use subs qw/dump/;
93f09d7b 984sub dump { print "no warning for overridden dump\n"; }
ac206dc8
RGS
985dump;
986EXPECT
93f09d7b 987no warning for overridden dump
ac206dc8
RGS
988########
989# toke.c
8593bda5
GS
990use warnings 'ambiguous';
991"@mjd_previously_unused_array";
992no warnings 'ambiguous';
29fb1d0e 993"@mjd_previously_unused_array2";
8593bda5
GS
994EXPECT
995Possible unintended interpolation of @mjd_previously_unused_array in string at - line 3.
707afd92
MS
996########
997# toke.c
29fb1d0e
BF
998use utf8;
999use open qw( :utf8 :std );
1000use warnings 'ambiguous';
1001"@mjd_previously_unused_àrray";
1002no warnings 'ambiguous';
1003"@mjd_previously_unused_àrray2";
1004EXPECT
1005Possible unintended interpolation of @mjd_previously_unused_àrray in string at - line 5.
1006########
1007# toke.c
1008use utf8;
1009use open qw( :utf8 :std );
1010use warnings 'ambiguous';
1011"@mjd_previously_unused_ぁrrぁy";
1012no warnings 'ambiguous';
1013"@mjd_previously_unused_ぁrrぁy2";
1014EXPECT
1015Possible unintended interpolation of @mjd_previously_unused_ぁrrぁy in string at - line 5.
1016########
1017# toke.c
d8c55666 1018# 20020328 mjd-perl-patch+@plover.com at behest of jfriedl@yahoo.com
4ac733c9
MJD
1019use warnings 'regexp';
1020"foo" =~ /foo/c;
64e578a2 1021"foo" =~ /foo/cg;
4ac733c9
MJD
1022no warnings 'regexp';
1023"foo" =~ /foo/c;
64e578a2 1024"foo" =~ /foo/cg;
4ac733c9
MJD
1025EXPECT
1026Use of /c modifier is meaningless without /g at - line 4.
1027########
1028# toke.c
d8c55666 1029# 20020328 mjd-perl-patch+@plover.com at behest of jfriedl@yahoo.com
4ac733c9
MJD
1030use warnings 'regexp';
1031$_ = "ab" ;
1032s/ab/ab/c;
64e578a2 1033s/ab/ab/cg;
4ac733c9
MJD
1034no warnings 'regexp';
1035s/ab/ab/c;
64e578a2 1036s/ab/ab/cg;
4ac733c9 1037EXPECT
64e578a2
MJD
1038Use of /c modifier is meaningless in s/// at - line 5.
1039Use of /c modifier is meaningless in s/// at - line 6.
d8c55666
MJD
1040########
1041-wa
1042# toke.c
1043# 20020414 mjd-perl-patch+@plover.com # -a flag should suppress these warnings
1044print "@F\n";
1045EXPECT
1046
1047########
1048-w
1049# toke.c
1050# 20020414 mjd-perl-patch+@plover.com # -a flag should suppress these warnings
1051print "@F\n";
1052EXPECT
1053Possible unintended interpolation of @F in string at - line 4.
1054Name "main::F" used only once: possible typo at - line 4.
1055########
1056-wa
1057# toke.c
1058# 20020414 mjd-perl-patch+@plover.com
1059EXPECT
1060
2710853f
MJD
1061########
1062# toke.c
1063# 20020414 mjd-perl-patch+@plover.com
1064# In 5.7.3, this emitted "Possible unintended interpolation" warnings
1065use warnings 'ambiguous';
1066$s = "(@-)(@+)";
1067EXPECT
1068
56da5a46
RGS
1069########
1070# toke.c
1071# mandatory warning
1072eval q/if ($a) { } elseif ($b) { }/;
1073no warnings "syntax";
1074eval q/if ($a) { } elseif ($b) { }/;
1075EXPECT
1076elseif should be elsif at (eval 1) line 1.
1077########
1078# toke.c
1079# mandatory warning
1080eval q/5 6/;
1081no warnings "syntax";
1082eval q/5 6/;
1083EXPECT
1084Number found where operator expected at (eval 1) line 1, near "5 6"
1085 (Missing operator before 6?)
984200d0
YST
1086########
1087# toke.c
7fc874e8 1088use warnings "syntax"; no warnings "deprecated";
984200d0
YST
1089$_ = $a = 1;
1090$a !=~ /1/;
1091$a !=~ m#1#;
1092$a !=~/1/;
1093$a !=~ ?/?;
decca21c
YST
1094$a !=~ y/1//;
1095$a !=~ tr/1//;
1096$a !=~ s/1//;
984200d0
YST
1097$a != ~/1/;
1098no warnings "syntax";
1099$a !=~ /1/;
1100$a !=~ m#1#;
1101$a !=~/1/;
1102$a !=~ ?/?;
decca21c
YST
1103$a !=~ y/1//;
1104$a !=~ tr/1//;
1105$a !=~ s/1//;
984200d0
YST
1106EXPECT
1107!=~ should be !~ at - line 4.
1108!=~ should be !~ at - line 5.
1109!=~ should be !~ at - line 6.
1110!=~ should be !~ at - line 7.
decca21c
YST
1111!=~ should be !~ at - line 8.
1112!=~ should be !~ at - line 9.
1113!=~ should be !~ at - line 10.
1108974d
RGS
1114########
1115# toke.c
1116our $foo :unique;
8e5dadda
NC
1117sub pam :locked;
1118sub glipp :locked {
1119}
1120sub whack_eth ($) : locked {
1121}
d1d15184 1122no warnings 'deprecated';
1108974d 1123our $bar :unique;
8e5dadda
NC
1124sub zapeth :locked;
1125sub ker_plop :locked {
1126}
1127sub swa_a_p ($) : locked {
1128}
1108974d 1129EXPECT
d1d15184
NC
1130Use of :unique is deprecated at - line 2.
1131Use of :locked is deprecated at - line 3.
1132Use of :locked is deprecated at - line 4.
1133Use of :locked is deprecated at - line 6.
9e8d7757
RB
1134########
1135# toke.c
1136use warnings "syntax";
1137sub proto_after_array(@$);
1138sub proto_after_arref(\@$);
1139sub proto_after_arref2(\[@$]);
1140sub proto_after_arref3(\[@$]_);
1141sub proto_after_hash(%$);
1142sub proto_after_hashref(\%$);
1143sub proto_after_hashref2(\[%$]);
1144sub underscore_last_pos($_);
1145sub underscore2($_;$);
1146sub underscore_fail($_$);
1147sub underscore_after_at(@_);
689aac7b
FC
1148our sub hour (@$);
1149my sub migh (@$);
1150use 5.01;
1151state sub estate (@$);
1152package other;
1153sub hour (@$);
1154sub migh (@$);
1155sub estate (@$);
9e8d7757
RB
1156no warnings "syntax";
1157sub proto_after_array(@$);
1158sub proto_after_hash(%$);
1159sub underscore_fail($_$);
1160EXPECT
1161Prototype after '@' for main::proto_after_array : @$ at - line 3.
1162Prototype after '%' for main::proto_after_hash : %$ at - line 7.
aef2a98a 1163Illegal character after '_' in prototype for main::underscore_fail : $_$ at - line 12.
9e8d7757 1164Prototype after '@' for main::underscore_after_at : @_ at - line 13.
689aac7b
FC
1165Prototype after '@' for hour : @$ at - line 14.
1166Prototype after '@' for migh : @$ at - line 15.
1167Prototype after '@' for estate : @$ at - line 17.
1168Prototype after '@' for hour : @$ at - line 19.
1169Prototype after '@' for migh : @$ at - line 20.
1170Prototype after '@' for estate : @$ at - line 21.
77772344
B
1171########
1172# toke.c
1173use warnings "ambiguous";
1174"foo\nn" =~ /^foo$\n/;
1175"foo\nn" =~ /^foo${\}n/;
1176my $foo = qr/^foo$\n/;
1177my $bar = qr/^foo${\}n/;
1178no warnings "ambiguous";
1179"foo\nn" =~ /^foo$\n/;
1180"foo\nn" =~ /^foo${\}n/;
1181my $foo = qr/^foo$\n/;
1182my $bar = qr/^foo${\}n/;
1183EXPECT
1184Possible unintended interpolation of $\ in regex at - line 3.
1185Possible unintended interpolation of $\ in regex at - line 5.
d83f38d8
NC
1186########
1187# toke.c
f0a2b745
KW
1188use warnings 'syntax' ;
1189my $a = "\o";
1190my $a = "\o{";
1191my $a = "\o{}";
1192no warnings 'syntax' ;
1193my $a = "\o";
1194my $a = "\o{";
1195my $a = "\o{}";
1196EXPECT
1197Missing braces on \o{} at - line 3, within string
1198Missing right brace on \o{ at - line 4, within string
1199Number with no digits at - line 5, within string
1200BEGIN not safe after errors--compilation aborted at - line 6.
1201########
1202# toke.c
1203use warnings 'digit' ;
1204my $a = "\o{1238456}";
1205no warnings 'digit' ;
1206my $a = "\o{1238456}";
1207EXPECT
1208Non-octal character '8'. Resolved as "\o{123}" at - line 3.
725a61d7
Z
1209########
1210# toke.c
1211use warnings;
1212my $a = "foo";
1213print $a =~ ?f? ? "yes\n" : "no\n" foreach 0..2;
1214EXPECT
1215Use of ?PATTERN? without explicit operator is deprecated at - line 4.
1216yes
1217no
1218no
17a3df4c
KW
1219########
1220# toke.c
1221use warnings;
1222my $a = "\c{ack}";
1223$a = "\c,";
1224$a = "\c`";
1225no warnings 'syntax';
1226$a = "\c{ack}";
1227$a = "\c,";
1228$a = "\c`";
1229no warnings 'deprecated';
1230EXPECT
1231"\c{" is deprecated and is more clearly written as ";" at - line 3.
1232"\c," is more clearly written simply as "l" at - line 4.
1233"\c`" is more clearly written simply as "\ " at - line 5.
1234"\c{" is deprecated and is more clearly written as ";" at - line 7.
3955e1a9
KW
1235########
1236# toke.c
1237use warnings 'syntax' ;
1238my $a = qr/foo/du;
ff3f26d2 1239$a = qr/foo/lai;
3955e1a9 1240$a = qr/foo/lil;
ff3f26d2
KW
1241$a = qr/foo/aia;
1242$a = qr/foo/aaia;
3955e1a9
KW
1243no warnings 'syntax' ;
1244my $a = qr/foo/du;
1245EXPECT
1246Regexp modifiers "/d" and "/u" are mutually exclusive at - line 3, near "= "
1247Regexp modifiers "/l" and "/a" are mutually exclusive at - line 4, near "= "
1248Regexp modifier "/l" may not appear twice at - line 5, near "= "
ff3f26d2
KW
1249Regexp modifier "/a" may appear a maximum of twice at - line 7, near "= "
1250BEGIN not safe after errors--compilation aborted at - line 8.
ba05d9aa
FC
1251########
1252# toke.c
1253# [perl #4362]
1254eval "print q\xabfoo";
1255print "ok\n" if
1256 $@ =~ /Can't find string terminator "\xab" anywhere before EOF/;
1257EXPECT
1258ok
5c66c3dd
BF
1259########
1260# toke.c
1261use utf8;
1262use open qw( :utf8 :std );
1263use warnings 'ambiguous' ;
1264sub frèd {}
1265$a = ${frèd} ;
1266no warnings 'ambiguous' ;
1267$a = ${frèd} ;
1268EXPECT
1269Ambiguous use of ${frèd} resolved to $frèd at - line 6.
1270########
1271# toke.c
1272use utf8;
1273use open qw( :utf8 :std );
1274use warnings 'ambiguous' ;
1275sub f렏 {}
1276$a = ${f렏} ;
1277no warnings 'ambiguous' ;
1278$a = ${f렏} ;
1279EXPECT
1280Ambiguous use of ${f렏} resolved to $f렏 at - line 6.
3773592b
BF
1281########
1282# toke.c
1283use utf8;
1284use open qw( :utf8 :std );
1285use warnings;
1286CORE::렏;
1287EXPECT
1288CORE::렏 is not a keyword at - line 5.
5dc13276
MH
1289########
1290# toke.c
1291# [perl #16249]
1292print '';
1293eval this_method_is_fake ();
1294EXPECT
1295Undefined subroutine &main::this_method_is_fake called at - line 4.