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