[swift-evolution] Make integer conversion initializers failable

Matthew Johnson matthew at anandabits.com
Sat Feb 13 08:32:52 CST 2016


Are you thinking of something along the lines of is proposal?

https://github.com/apple/swift-evolution/pull/58 <https://github.com/apple/swift-evolution/pull/58>

It has been sitting as a PR for quite a while and not been merged yet. 

-Matthew

> On Feb 12, 2016, at 11:21 AM, Félix Cloutier via swift-evolution <swift-evolution at swift.org> wrote:
> 
> It appears that the current integer conversion initializers will either always work, possibly trap, or truncate:
> 
>> init(_: Int)
>> init(_: Int8)
>> init(_: Int16)
>> init(_: Int32)
>> init(_: Int64)
>> init(_: UInt)
>> init(_: UInt8)
>> init(_: UInt16)
>> init(_: UInt32)
>> init(_: UInt64)
>> init(truncatingBitPattern: Int)
>> init(truncatingBitPattern: Int16)
>> init(truncatingBitPattern: Int32)
>> init(truncatingBitPattern: Int64)
>> init(truncatingBitPattern: UInt)
>> init(truncatingBitPattern: UInt16)
>> init(truncatingBitPattern: UInt32)
>> init(truncatingBitPattern: UInt64)
> 
> I suggest that we change trapping initializers to failable initializers. Initializers that can't fail (identity, unsigned -> bigger signed/unsigned, signed -> bigger signed) should keep a non-Optional type.
> 
> This could extend to changing SignedIntegerType's and UnsignedIntegerType's (U)IntMax to failable initializers as well.
> 
> I think I remember someone on the core team saying that someone's working on integer types at the moment. Is that right?
> 
> Félix
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160213/88de5ba1/attachment.html>


More information about the swift-evolution mailing list