> 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