> On Feb 6, 2017, at 11:46, Daniel Duan <dan...@duan.org> wrote:
> 
>> 
>> On Feb 6, 2017, at 11:35 AM, Jordan Rose <jordan_r...@apple.com 
>> <mailto:jordan_r...@apple.com>> wrote:
>> 
>>> 
>>> On Feb 6, 2017, at 11:08, Daniel Duan <dan...@duan.org 
>>> <mailto:dan...@duan.org>> wrote:
>>> 
>>> 
>>>> On Feb 6, 2017, at 10:58 AM, Jordan Rose <jordan_r...@apple.com 
>>>> <mailto:jordan_r...@apple.com>> wrote:
>>>> 
>>>> I think I see Alex's point here. Optional chaining is still intended to be 
>>>> a substitute for Objective-C's nil-swallowing, and therefore foo?.bar() 
>>>> should not warn if 'bar' has a discardable result, even though there is 
>>>> semantic information about whether the method was actually called. I think 
>>>> that of the three things under consideration here:
>>>> 
>>>> 1. foo?.bar() should not warn
>>>> 2. foo.map(baz) should warn
>>>> 3. Ternaries should be consistent with non-ternaries
>>>> 
>>> 
>>> I 100% agree with this analysis.
>>> 
>>>> #1 is the most important, at least to me. The Swift 3 change was to 
>>>> sacrifice #2 in favor of #3, which I'm not sure I would have done, but I 
>>>> wouldn't want to sacrifice #1 in favor of #2.
>>>> 
>>>> I wouldn't mind the model of the type being '@discardableResult 
>>>> Optional<Void>' or whatever, but I think that's probably more work than 
>>>> anyone wants to sign up for.
>>> 
>>> I’ll give this a go and report back. *crosses fingers*
>> 
>> I suspect this will entail making a new sugared type kind and then threading 
>> it carefully through the constraint solver (hence why I said it's probably 
>> more work than you want to take on).
>> 
> 
> I was going to write a enhanced version of 
> TypeBase::lookThroughAllAnyOptionalTypes(). Too hacky?

Oh, to specifically handle ternaries? I hadn't thought of that. That'd be a 
much more targeted fix. :-)

Jordan

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

Reply via email to