From: Graham Knop Date: Wed, 12 Feb 2014 18:25:09 +0000 (-0500) Subject: fix ->VERSION calls to query version in newer perls X-Git-Tag: v1.005003~3 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=91b5f6b6b865cb0f86d7677e13643e7fac10dda5;p=p5sagit%2Fstrictures.git fix ->VERSION calls to query version in newer perls --- diff --git a/lib/strictures.pm b/lib/strictures.pm index f979fa2..7c517b9 100644 --- a/lib/strictures.pm +++ b/lib/strictures.pm @@ -10,15 +10,14 @@ BEGIN { our $VERSION = '1.005002'; # 1.5.2 sub VERSION { - for ($_[1]) { + my ($class, $version) = @_; + for ($version) { last unless defined && !ref && int != 1; die "Major version specified as $_ - this is strictures version 1"; } - # disable this since Foo->VERSION(undef) correctly returns the version - # and that can happen either if our caller passes undef explicitly or - # because the for above autovivified $_[1] - I could make it stop but - # it's pointless since we don't want to blow up if the caller does - # something valid either. + # passing undef here may either warn or die depending on the version of perl. + # we can't match the caller's warning state in this case, so just disable the + # warning. no warnings 'uninitialized'; shift->SUPER::VERSION(@_); } diff --git a/t/strictures.t b/t/strictures.t index 877439b..58104fa 100644 --- a/t/strictures.t +++ b/t/strictures.t @@ -34,6 +34,10 @@ foreach my $idx (0 .. $#us) { is($us[$idx][1], $expect[$idx][1], 'Warnings ok for case '.($idx+1)); } +my $v; +eval { $v = strictures->VERSION; 1 } or diag $@; +is $v, $strictures::VERSION, '->VERSION returns version correctly'; + SKIP: { skip 'Extra tests disabled on perls <= 5.008003', 1 if $] < 5.008004;