xref: /openbsd-src/gnu/usr.bin/perl/t/op/protowarn.t (revision 9f11ffb7133c203312a01e4b986886bc88c7d74b)
1b39c5158Smillert#!./perl
2b39c5158Smillert
3b39c5158SmillertBEGIN {
4b39c5158Smillert    chdir 't' if -d 't';
5*9f11ffb7Safresh1    require './test.pl';
6*9f11ffb7Safresh1    set_up_inc( qw(. ../lib) );
7b39c5158Smillert}
8b39c5158Smillert
9b39c5158Smillertuse strict;
10b39c5158Smillertuse warnings;
11b39c5158Smillert
12b39c5158Smillertplan( tests => 12 );
13b39c5158Smillert
14*9f11ffb7Safresh1our (@warnings, $sub, $warn);
15b39c5158Smillert
16b39c5158SmillertBEGIN {
17b39c5158Smillert    $warn = 'Illegal character in prototype';
18b39c5158Smillert}
19b39c5158Smillert
20b39c5158Smillertsub one_warning_ok {
21b39c5158Smillert    cmp_ok(scalar(@warnings), '==', 1, 'One warning');
22b39c5158Smillert    cmp_ok(substr($warnings[0],0,length($warn)),'eq',$warn,'warning message');
23b39c5158Smillert    @warnings = ();
24b39c5158Smillert}
25b39c5158Smillert
26b39c5158Smillertsub no_warnings_ok {
27b39c5158Smillert    cmp_ok(scalar(@warnings), '==', 0, 'No warnings');
28b39c5158Smillert    @warnings = ();
29b39c5158Smillert}
30b39c5158Smillert
31b39c5158SmillertBEGIN {
32b39c5158Smillert    $SIG{'__WARN__'} = sub { push @warnings, @_ };
33b39c5158Smillert    $| = 1;
34b39c5158Smillert}
35b39c5158Smillert
36b39c5158SmillertBEGIN { @warnings = () }
37b39c5158Smillert
38b39c5158Smillert$sub = sub (x) { };
39b39c5158Smillert
40b39c5158SmillertBEGIN {
41b39c5158Smillert    one_warning_ok;
42b39c5158Smillert}
43b39c5158Smillert
44b39c5158Smillert{
45b39c5158Smillert    no warnings 'syntax';
46b39c5158Smillert    $sub = sub (x) { };
47b39c5158Smillert}
48b39c5158Smillert
49b39c5158SmillertBEGIN {
50b39c5158Smillert    no_warnings_ok;
51b39c5158Smillert}
52b39c5158Smillert
53b39c5158Smillert{
54b39c5158Smillert    no warnings 'illegalproto';
55b39c5158Smillert    $sub = sub (x) { };
56b39c5158Smillert}
57b39c5158Smillert
58b39c5158SmillertBEGIN {
59b39c5158Smillert    no_warnings_ok;
60b39c5158Smillert}
61b39c5158Smillert
62b39c5158Smillert{
63b39c5158Smillert    no warnings 'syntax';
64b39c5158Smillert    use warnings 'illegalproto';
65b39c5158Smillert    $sub = sub (x) { };
66b39c5158Smillert}
67b39c5158Smillert
68b39c5158SmillertBEGIN {
69b39c5158Smillert    one_warning_ok;
70b39c5158Smillert}
71b39c5158Smillert
72b39c5158SmillertBEGIN {
73b39c5158Smillert    $warn = q{Prototype after '@' for};
74b39c5158Smillert}
75b39c5158Smillert
76b39c5158Smillert$sub = sub (@$) { };
77b39c5158Smillert
78b39c5158SmillertBEGIN {
79b39c5158Smillert    one_warning_ok;
80b39c5158Smillert}
81b39c5158Smillert
82b39c5158Smillert{
83b39c5158Smillert    no warnings 'syntax';
84b39c5158Smillert    $sub = sub (@$) { };
85b39c5158Smillert}
86b39c5158Smillert
87b39c5158SmillertBEGIN {
88b39c5158Smillert    no_warnings_ok;
89b39c5158Smillert}
90b39c5158Smillert
91b39c5158Smillert{
92b39c5158Smillert    no warnings 'illegalproto';
93b39c5158Smillert    $sub = sub (@$) { };
94b39c5158Smillert}
95b39c5158Smillert
96b39c5158SmillertBEGIN {
97b39c5158Smillert    no_warnings_ok;
98b39c5158Smillert}
99b39c5158Smillert
100b39c5158Smillert{
101b39c5158Smillert    no warnings 'syntax';
102b39c5158Smillert    use warnings 'illegalproto';
103b39c5158Smillert    $sub = sub (@$) { };
104b39c5158Smillert}
105b39c5158Smillert
106b39c5158SmillertBEGIN {
107b39c5158Smillert    one_warning_ok;
108b39c5158Smillert}
109