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