> On Apr 25, 2016, at 3:30 PM, Jordan Rose <jordan_r...@apple.com> wrote:
> 
>> I, personally, *really* don’t want yet another decorator keyword to indicate 
>> the intent here, because I believe the user has already indicated intent by 
>> stating conformance to the protocol P.
> 
> I don't find this so compelling in a language with defaulted requirements.

If we didn’t have defaulted/optional requirements, this wouldn’t be an issue at 
all.

> The place where we're seeing this problem the most is optional requirements 
> in ObjC protocols (because of all the name changes), but it's really the same 
> thing: it's hard to know if a particular member is intended to be part of a 
> protocol or just something that happens to be similar.



> 
>> It’s somewhat frustrating that these are *all* false positives. However, 
>> they seem like “reasonable” false positives, in the sense that they’re close 
>> enough to the requirement to be justifiable, and the suggested recovery 
>> strategies look acceptable.
> 
> I agree that these are all reasonable, but I don't think moving decls to 
> extensions is a great answer. A lot of these close names might be close 
> because they're helper functions,

You can explicitly give them less visibility than the conformance, which makes 
it clear that they’re helper functions and disables the diagnostic.

> or (in the case of removeLast) because they implement API that's in the same 
> family as the protocol.


It seems less onerous to move removeLast out to a different extension than it 
is to splat some “implements” keyword on a bunch of declarations within an 
extension whose purpose is to conform to a protocol P:

        extension X : P {
          // this is how X conforms to P
        }



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

Reply via email to