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 swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users