xref: /openbsd-src/gnu/usr.bin/perl/t/comp/redef.t (revision 04bf48b9e2bc58227ac0da17f40089433d4f734e)
1ba47ec9dSmillert#!./perl -w
2ba47ec9dSmillert#
3ba47ec9dSmillert# Contributed by Graham Barr <Graham.Barr@tiuk.ti.com>
4ba47ec9dSmillert
5ba47ec9dSmillertBEGIN {
6ba47ec9dSmillert    $warn = "";
7ba47ec9dSmillert    $SIG{__WARN__} = sub { $warn .= join("",@_) }
8ba47ec9dSmillert}
9ba47ec9dSmillert
10ba47ec9dSmillertsub ok ($$) {
11ba47ec9dSmillert    print $_[1] ? "ok " : "not ok ", $_[0], "\n";
12ba47ec9dSmillert}
13ba47ec9dSmillert
1455745691Smillertprint "1..20\n";
15ba47ec9dSmillert
16ba47ec9dSmillertmy $NEWPROTO = 'Prototype mismatch:';
17ba47ec9dSmillert
18ba47ec9dSmillertsub sub0 { 1 }
19ba47ec9dSmillertsub sub0 { 2 }
20ba47ec9dSmillert
21ba47ec9dSmillertok 1, $warn =~ s/Subroutine sub0 redefined[^\n]+\n//s;
22ba47ec9dSmillert
23ba47ec9dSmillertsub sub1    { 1 }
24ba47ec9dSmillertsub sub1 () { 2 }
25ba47ec9dSmillert
26*04bf48b9Smillertok 2, $warn =~ s/$NEWPROTO \Qsub main::sub1: none vs ()\E[^\n]+\n//s;
27ba47ec9dSmillertok 3, $warn =~ s/Subroutine sub1 redefined[^\n]+\n//s;
28ba47ec9dSmillert
29ba47ec9dSmillertsub sub2     { 1 }
30ba47ec9dSmillertsub sub2 ($) { 2 }
31ba47ec9dSmillert
32*04bf48b9Smillertok 4, $warn =~ s/$NEWPROTO \Qsub main::sub2: none vs ($)\E[^\n]+\n//s;
33ba47ec9dSmillertok 5, $warn =~ s/Subroutine sub2 redefined[^\n]+\n//s;
34ba47ec9dSmillert
35ba47ec9dSmillertsub sub3 () { 1 }
36ba47ec9dSmillertsub sub3    { 2 }
37ba47ec9dSmillert
38ba47ec9dSmillertok 6, $warn =~ s/$NEWPROTO \Qsub main::sub3 () vs none\E[^\n]+\n//s;
39ba47ec9dSmillertok 7, $warn =~ s/Constant subroutine sub3 redefined[^\n]+\n//s;
40ba47ec9dSmillert
41ba47ec9dSmillertsub sub4 () { 1 }
42ba47ec9dSmillertsub sub4 () { 2 }
43ba47ec9dSmillert
44ba47ec9dSmillertok 8, $warn =~ s/Constant subroutine sub4 redefined[^\n]+\n//s;
45ba47ec9dSmillert
46ba47ec9dSmillertsub sub5 ()  { 1 }
47ba47ec9dSmillertsub sub5 ($) { 2 }
48ba47ec9dSmillert
49ba47ec9dSmillertok  9, $warn =~ s/$NEWPROTO \Qsub main::sub5 () vs ($)\E[^\n]+\n//s;
50ba47ec9dSmillertok 10, $warn =~ s/Constant subroutine sub5 redefined[^\n]+\n//s;
51ba47ec9dSmillert
52ba47ec9dSmillertsub sub6 ($) { 1 }
53ba47ec9dSmillertsub sub6     { 2 }
54ba47ec9dSmillert
55ba47ec9dSmillertok 11, $warn =~ s/$NEWPROTO \Qsub main::sub6 ($) vs none\E[^\n]+\n//s;
56ba47ec9dSmillertok 12, $warn =~ s/Subroutine sub6 redefined[^\n]+\n//s;
57ba47ec9dSmillert
58ba47ec9dSmillertsub sub7 ($) { 1 }
59ba47ec9dSmillertsub sub7 ()  { 2 }
60ba47ec9dSmillert
61ba47ec9dSmillertok 13, $warn =~ s/$NEWPROTO \Qsub main::sub7 ($) vs ()\E[^\n]+\n//s;
62ba47ec9dSmillertok 14, $warn =~ s/Subroutine sub7 redefined[^\n]+\n//s;
63ba47ec9dSmillert
64ba47ec9dSmillertsub sub8 ($) { 1 }
65ba47ec9dSmillertsub sub8 ($) { 2 }
66ba47ec9dSmillert
67ba47ec9dSmillertok 15, $warn =~ s/Subroutine sub8 redefined[^\n]+\n//s;
68ba47ec9dSmillert
69ba47ec9dSmillertsub sub9 ($@) { 1 }
70ba47ec9dSmillertsub sub9 ($)  { 2 }
71ba47ec9dSmillert
72ba47ec9dSmillertok 16, $warn =~ s/$NEWPROTO sub main::sub9 \(\$\Q@) vs ($)\E[^\n]+\n//s;
73ba47ec9dSmillertok 17, $warn =~ s/Subroutine sub9 redefined[^\n]+\n//s;
74ba47ec9dSmillert
7555745691SmillertBEGIN {
7655745691Smillert    local $^W = 0;
7755745691Smillert    eval qq(sub sub10 () {1} sub sub10 {1});
7855745691Smillert}
7955745691Smillert
8055745691Smillertok 18, $warn =~ s/$NEWPROTO \Qsub main::sub10 () vs none\E[^\n]+\n//s;
8155745691Smillertok 19, $warn =~ s/Constant subroutine sub10 redefined[^\n]+\n//s;
8255745691Smillert
8355745691Smillertok 20, $warn eq '';
84ba47ec9dSmillert
85ba47ec9dSmillert# If we got any errors that we were not expecting, then print them
8655745691Smillertprint $warn if length $warn;
87