They all crash when I test it with Xcode 9.2 (default toolchain and dev snapshot 2017-12-09, command line app), in what environment are you seeing the non-crashing behavior?
My guess is that all of them crashing is the intended behavior, since the operations result in an overflow.. /Jens On Tue, Dec 12, 2017 at 9:06 PM, C. Keith Ray via swift-users < swift-users@swift.org> wrote: > 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 > >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users