Yes, I think I agree with you. Maybe we are missing something, but I don't
see a reason why declaring a property with the same name and a different type
should be allowed in the 1. scenario.

So maybe you should file a bug in JIRA, after all.

Best regards,
Toni

> Am 02.01.2018 um 13:56 schrieb Marc Palmer <m...@anyware.co.uk>:
> 
> 
>> On 2 Jan 2018, at 09:12, Toni Suter <tonisu...@me.com> wrote:
>> 
>> 
>> You can only 'overload' properties that are inherited from a protocol 
>> extension. 
>> 
>> protocol P {}
>> extension P {
>>    static var x: Int { return 2 }
>> }
>> struct S: P {
>>    static var x = ""
>> }
>> 
>> I am not exactly sure why this is allowed, but maybe someone from the Swift 
>> team can help.
> 
> FYI there’s a little more nuance to this. Even if `x` is defined as a 
> requirement in the protocol, the compiler still doesn’t complain, and IMO 
> this is the most heinous problem.
> 
> So it looks like:
> 
> 1. If the property is declared in the protocol and something is marked as 
> conforming to it, there is no excuse for permitting a property with the same 
> name but wrong type
> 
> 2. If the property is not declared in the protocol but only in an extension, 
> not types should be allowed to define a property with the same name but 
> different type as the property defined in the extension.
> 
> Marc
> 

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

Reply via email to