> On Apr 11, 2016, at 10:15 AM, Joe Groff <jgr...@apple.com> wrote:
> 
> 
>> On Apr 7, 2016, at 5:12 PM, Douglas Gregor via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> One could perhaps work around (a), (b), and (d) by allowing compound 
>> (function-like) names like tableView(_:viewFor:row:) for properties, and 
>> work around (c) by allowing a method to satisfy the requirement for a 
>> read-only property, but at this point you’ve invented more language hacks 
>> than the existing @objc-only optional requirements. So, I don’t think there 
>> is a solution here.
> 
> To me, compound names for closure properties and satisfying property 
> requirements with methods aren't hacks, they're missing features we ought to 
> support anyway. I strongly prefer implementing those over your proposed 
> solution.

I haven’t seen these come up in any discussion that wasn’t about mapping 
Objective-C optional requirements to something else in Swift. What other use 
cases are you envisioning?

>  It sounds to me like a lot of people using optional protocol requirements 
> *want* the locality of control flow visible in the caller, for optimization 
> or other purposes,

Most of the requests I see for this feature are of the form “this works for 
@objc protocols, so it should work everywhere,” and most of the push-back I’ve 
seen against removing ‘optional’ is a concern over interaction with Cocoa. I 
haven’t gotten the sense that optional requirements are considered to be the 
best design for any particular task in Swift.

> and your proposed solution makes this incredibly obscure and magical.


That’s fair. The mechanism I’m talking about *is* a bit hard to explain—we 
would need to rely on the diagnostic for cases where one tries to call a method 
that is caller-defaulted from Swift code, e.g.,

        error: method ‘foo(bar:wibble:)’ may not be implemented by the adopting 
class; add a default implementation via an extension to protocol ‘Foo'

This would only affect optional requirements of protocols imported from 
Objective-C. My hypothesis is that those just aren’t used in Swift app code.

        - Doug

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

Reply via email to