Sorry for the last email…I didn’t see your response.

I realize that disallowing IUOs in parameters (but not as properties) is 
inconsistent, but IUOs for properties make sense: they must be set during 
initialization, but sometimes this isn’t possible. IUOs make it possible to use 
the property just as any other non-Optional one, provided the property is set 
before it is used (see the proposal). This kind of guarantee doesn’t work for 
function parameters and return values. 

As for IUOs for non-audited methods; why can’t they just all use Optional 
parameters? It should have the same behavior as before, since you can pass in 
both an Optional as well as a non-Optional even today.

Saagar Jha



> On Jul 20, 2016, at 17:13, Chris Lattner <clatt...@apple.com> wrote:
> 
>> 
>> On Jul 20, 2016, at 12:52 PM, Chris Lattner <clatt...@apple.com 
>> <mailto:clatt...@apple.com>> wrote:
>> 
>> On Jul 19, 2016, at 3:46 PM, Saagar Jha <saagarjh...@gmail.com 
>> <mailto:saagarjh...@gmail.com>> wrote:
>>> 
>>> I have updated the proposal here 
>>> <https://gist.github.com/saagarjha/f33fecd4576f40133b6469da942ef453>. Since 
>>> this is a potentially a source breaking change, I’d like this to be 
>>> considered for Swift 3; unless anyone has any issues with it, I’m going to 
>>> push this to swift-evolution.
>> 
>> Some comments:
>> - The syntax proposed would be *completely* unlike anything in Swift, and is 
>> semantically changing things unrelated to the type.
>> - This proposal doesn’t work, and overly punishes IUOs.
>> 
>> I recommend that we do not discuss this proposal, as it would not be a good 
>> use of community time.  Beyond the unworkability of this specific proposal, 
>> in my personal opinion, there is nothing wrong with the T! syntax.  Making 
>> it significantly more verbose would be a very *bad* thing for the intended 
>> use cases.
> 
> Hi Saagar,
> 
> I’m sorry for the response above, I apparently misunderstood your early 
> example to read it as putting the force unwrapping concept into the 
> “forceUnwrapping” parameter label.
> 
> I now see that your idea is to remove force unwrapping entirely for 
> parameters.  I am very concerned about this and think it would not be 
> accepted into Swift.  It makes the language less consistent (why can you do 
> it on a property, but not a parameter) and eliminates important use cases for 
> T!: overriding an non-nullability audited method.
> 
> -Chris

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to