Should these be consistent?
All crashing or none crashing?
print(abs(Int8.min)) // crash
print(abs(Int16.min)) // crash
print(abs(Int32.min)) // prints -2147483648
print(abs(Int64.min)) // crash
Should this be reported by Radar or another mechanism?
I'm using this as a replacement:
func safeAbs<T: SignedInteger & FixedWidthInteger>(_ i: T) -> T {
if i >= 0 {
return i
} else if i == T.min { // can't negate this value
// return i // unconverted, violates postcondition, assert(result >=
0)
// return 0 // or return an arbitrary "safe" value
return -(1+i) // or return approximately the right value
} else {
return -i
}
}
print(safeAbs(Int8.min)) // prints 127
print(safeAbs(Int16.min)) // prints 32767
print(safeAbs(Int32.min)) // prints 2147483647
print(safeAbs(Int64.min)) // prints 9223372036854775807
_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users