If we drop the idea of extending Any and AnyObject (which is out of scope), 
does the fact that what is left is syntactic sugar make it unsuitable for Swift 
4? I remember Chris saying syntactic sugar is not the goal for Swift 4, but 
this syntactic sugar looks really sweet (pun intended).

> On 22 Feb 2017, at 08:36, Douglas Gregor <[email protected]> wrote:
> 
> 
> 
> Sent from my iPhone
> 
>> On Feb 21, 2017, at 11:25 PM, David Hart via swift-evolution 
>> <[email protected]> wrote:
>> 
>> Yes, but it's not very discoverable. Plus, if the subclass existentials 
>> proposal is accepted, it would actually allow us to do:
>> 
>> class C {}
>> extension C & P1 {}
> 
> ... which is 
> 
> extension P1 where Self: C1 {}
> 
> 
> Actually extending semantics (e.g. to extend Any or AnyObject) is a very 
> large project that's out of scope. Without that, this is a small bit of 
> syntactic sugar. 
> 
>   - Doug
> 
>> 
>>> On 22 Feb 2017, at 08:06, Jacob Bandes-Storch <[email protected]> wrote:
>>> 
>>> This works today:
>>> 
>>> protocol P1{}
>>> protocol P2{}
>>> 
>>> extension P1 where Self: P2 {
>>>     func foo() {}
>>> }
>>> 
>>> func bar(x: P1 & P2) {
>>>     x.foo()
>>> }
>>> 
>>> 
>>>> On Tue, Feb 21, 2017 at 10:53 PM, David Hart via swift-evolution 
>>>> <[email protected]> wrote:
>>>> Hello list,
>>>> 
>>>> Found out yesterday that you can’t extend all existentials in Swift:
>>>> 
>>>> protocol P1 {}
>>>> extension P1 {}
>>>> // works as expected
>>>> 
>>>> protocol P2 {}
>>>> extension P1 & P2 {}
>>>> // error: non-nominal type 'P1 & P2' cannot be extended
>>>> 
>>>> extension Any {}
>>>> // error: non-nominal type 'Any' cannot be extended
>>>> 
>>>> extension AnyObject {}
>>>> // error: 'AnyObject' protocol cannot be extended
>>>> 
>>>> I’d like to write a proposal to lift some of those restrictions. But the 
>>>> question is: which should be lifted? P1 & P2 seems like an obvious case. 
>>>> But what about Any and AnyObject? Is there a design reason that we 
>>>> shouldn’t allow it?
>>>> 
>>>> David.
>>>> 
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> [email protected]
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>> 
>>> 
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected]
>> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to