diff options
author | Kenichi Ishigaki <ishigaki@cpan.org> | 2013-10-12 01:59:23 +0900 |
---|---|---|
committer | Kenichi Ishigaki <ishigaki@cpan.org> | 2013-10-12 01:59:23 +0900 |
commit | fc60eefc231f4c1315e6de2fc8d7c8df8702361f (patch) | |
tree | e6b8fe8985be0e9135091b6c146c5aaccda86749 | |
parent | 8907ea9a936fd03834069fc61f71b23ded13b21e (diff) |
keep normalization errors as well
-rw-r--r-- | lib/Parse/PMFile.pm | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/Parse/PMFile.pm b/lib/Parse/PMFile.pm index f162d55..6ed2d33 100644 --- a/lib/Parse/PMFile.pm +++ b/lib/Parse/PMFile.pm @@ -70,7 +70,11 @@ sub parse { my $pp = $ppp->{$package}; if ($pp->{version} && $pp->{version} =~ /^\{.*\}$/) { # JSON parser error my $err = JSON::PP::decode_json($pp->{version}); - if ($err->{openerr}) { + if ($err->{x_normalize}) { + $errors{$package} = {normalize => $err->{version}}; + $pp->{version} = "undef"; + next; + } elsif ($err->{openerr}) { $self->_verbose(1, qq{Parse::PMFile was not able to read the file. It issued the following error: C< $err->{r} >}, @@ -452,11 +456,15 @@ sub _normalize_version { # was found". return $v ; } + if (!version::is_lax($v)) { + return JSON::PP::encode_json({ x_normalize => 'version::is_lax failed', version => $v }); + } # may warn "Integer overflow" my $vv = eval { no warnings; version->new($v)->numify }; if ($@) { # warn "$v: $@"; - return "undef"; + return JSON::PP::encode_json({ x_normalize => $@, version => $v }); + # return "undef"; } if ($vv eq $v) { # the boring 3.14 |