Subject: | validate_explain and Intersections |
Looking at my test results here: http://www.cpantesters.org/cpan/report/4b853aae-2e4c-11e3-b41f-3bc36b6e3093
The underlying issue is pretty obvious: IntLike isn't accepting large integers in E notation. However, some of the detailed explanations of it comes up with some strange logic:
# "SignedInt" is a subtype of "PerlSafeInt|BlessedInt"
# "PerlSafeInt|BlessedInt" requires that the value pass "BlessedInt" or "PerlSafeInt"
# Value "-1.84467440737095516e+19" did not pass type constraint "PerlSafeInt"
# "PerlSafeInt" is a subtype of "PerlNum&IntLike&_NumRange_perlsafe"
# "PerlNum&IntLike&_NumRange_perlsafe" requires that the value pass "IntLike", "PerlNum", and "_NumRange_perlsafe"
# "PerlNum" is a subtype of "NumLike"
# "NumLike" is a subtype of "Defined"
# Undef did not pass type constraint "Defined"
# "Defined" is defined as: (defined($_))
# Value "-1.84467440737095516e+19" did not pass type constraint "BlessedInt"
# "BlessedInt" is a subtype of "NumLike&Object&IntLike"
# "NumLike&Object&IntLike" requires that the value pass "IntLike", "NumLike", and "Object"
# "NumLike" is a subtype of "Defined"
# Undef did not pass type constraint "Defined"
# "Defined" is defined as: (defined($_))
It's not defined? Huh? Somewhere along the validate_explain chain, the actual value is getting lost.