[swift-evolution] IUO in Swift 3.0

Joe Groff jgroff at apple.com
Wed Jun 22 10:56:50 CDT 2016


> On Jun 21, 2016, at 9:55 PM, Chris Lattner <clattner at apple.com> wrote:
> 
> 
>> On Jun 21, 2016, at 1:39 PM, Jonathan Cotton via swift-evolution <swift-evolution at swift.org> wrote:
>> 
>> I was also surprised this type still exists as I'd taken that the proposal was for the removal of IUO as an explicit type, but after some testing of IUO propagation behaviour in Swift 3.0, I'm happy to report the behaviour has been changed to meet the desired behaviour in the spec, specifically, I now don't need to define a separate interface signature to specifically expect type T!
> 
> I think that there is some confusion here: it is true that IUO exists internally as a type within the compiler, but the idea of our current implementation is that that is just an implementation detail within the compiler (similar to LValueType, which has no user syntax), not an exposed part of the programmer model.
> 
> That said, the “T!” *syntax* is intended to stay in Swift.  This is the way to model the IUO declaration modifier, as outlined in the proposal.

As implemented in the seed, T! still leaks into the user type system.

-Joe


More information about the swift-evolution mailing list