If you're asking me, it depends on what gets filled in for "syntax". I see no 
reason to explicitly prohibit classes from participating, though.

- Dave Sweeris

> On May 30, 2016, at 16:12, Vladimir.S <sva...@gmail.com> wrote:
> 
> In case we discuss this feature not for just value types but for classes also 
> - will such AutoEquatable allows to implement protocol manually?
> 
> Now we can have:
> 
> func == (lhs: A, rhs: A) -> Bool { return true }
> class A: Hashable { var hashValue: Int { return 100 } }
> class B: A { override var hashValue: Int { return 200 } }
> 
> So, if we'll have
> class A: AutoHashable { }
> or
> class A: deriving Hashable { }
> will we be able to have:
> class B: A { override var hashValue: Int { return 200 } }
> ?
> 
> (The same question was for `deriving` proposal)
> Please note that we probably don't want/have no rights to modify the 
> definition of class A.
> 
> There is no such question for auto-derived Hashable in case of simple 
> conformance as we do now `class A: Hashable`.
> 
>> On 30.05.2016 23:45, David Sweeris wrote:
>> What about declaring the requirements for auto-conformance in a sub-protocol?
>> @auto protocol AutoEquatable : Equatable {
>>    //"syntax" for how to conform to Equatable
>> }
>> 
>> struct Foo : AutoEquatable {} //the compiler automatically synthesizes 
>> everything
>> struct Bar : Equatable {} //you manually conform
>> 
>> It would be a compiler error to conform to an `@auto` protocol if the 
>> compiler couldn't apply the provided "syntax" to the conforming type.
>> 
>> (I have no clue what this "syntax" could be, other than some expansion of 
>> generics and/or a macro system)
>> 
>> Anyway, does that help? It satisfies both the "explicit conformance" crowd 
>> and the "no new keywords" (at least at the "call" site) crowd.
>> 
>> - Dave Sweeris
>> 
>>> On May 30, 2016, at 15:26, Vladimir.S via swift-evolution 
>>> <swift-evolution@swift.org> wrote:
>>> 
>>> I see these two groups: both wants explicit conformance to protocols, but 
>>> first thinks that current syntax is enough (`: Equatable`) and second 
>>> thinks we should introduce new keyword `deriving` for this(`: deriving 
>>> Equatable`). I see no opinions(except the one opinion in proposal itself) 
>>> to automatically deriving without explicit decoration.
>> 
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to