Typechecking errors with large integers and sprintf("%c").
The testsuite currently fails with:
Doing tests in testsuite (12091 tests, pid 29825)
Fri Mar 13 16:28:53 2020: Thread.Thread(0x7fced9367700) at 900
testsuite:2: Soft cast of string(1: -1412597613) to string(2147483647) isn't a valid cast.
testsuite:2: Expected: string(2147483647).
testsuite:2: Got : string(1: -1412597613).
/lhome/build/Xenofarm/client/pike-devel/medaka.roxen.com/buildtmp/Pike-v8.1-snapshot/src/testsuite.in:14918: Test 11817 (CRNL) failed.
1: mixed a() { return "\25363274223"; }
2: mixed b() { return sprintf("%c", 0x1abcd7893) ; }
testsuite:2: Soft cast of string(1: 1412597613) to string(-2147483648) isn't a valid cast.
testsuite:2: Expected: string(-2147483648).
testsuite:2: Got : string(1: 1412597613).
/lhome/build/Xenofarm/client/pike-devel/medaka.roxen.com/buildtmp/Pike-v8.1-snapshot/src/testsuite.in:14919: Test 11818 (shift 1) (CRNL) failed.
1: mixed a() { return "\12414503555"; }
2: mixed b() { return sprintf("%c", -0x1abcd7893) ; }
Subresult: 41609 tests, 2 failed, 13 skipped
The cause is that the values 025363274223
, 0x1abcd7893
, 012414503555
and -0x1abcd7893
all are out of the 32-bit signed range of the integer type.
The easiest fix is probably just to switch the type for large integers to the generic int
type.