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
