[swift-evolution] [Pitch] Introducing role keywords to reduce hard-to-find bugs

Vladimir.S svabox at gmail.com
Wed Jun 14 15:37:34 CDT 2017


On 14.06.2017 21:23, Haravikk via swift-evolution wrote:
> 
>> On 14 Jun 2017, at 19:08, Xiaodi Wu via swift-evolution <swift-evolution at swift.org 
>> <mailto:swift-evolution at swift.org>> wrote:
>>
>> On Wed, Jun 14, 2017 at 1:01 PM, David Hart via swift-evolution 
>> <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>
>>     Sorry, initially sent off-list:
>>
>>     I think this proposal is a great idea. But I would vote for the alternative of
>>     only having default and implicitly deducing extend when default is not specified:
>>
>>
>> This wouldn't work with the fundamental design decision that these are optional 
>> keywords, which IMO is absolutely key.
> 
> Hmm, I'm inclined to agree with David that only the default keyword really seems like 
> it's necessary, and that extend can be implied.
> 

I'm not so sure. If they are optional, then it depends on developer if he/she wants 
to explicitly mark some func to avoid possible errors. Please look here :

1. First we have this

protocol A {
   func foo() {}
}

and we  write extension (possible in another file)

extension A {
   extent func bar() {} // I'm sure currently I want *additional* 'bar' method
}

2. Then 'A' protocol has been changed for some reason :

protocol A {
   func foo() {}
   func bar() {}
}

Now, if we have 'extent' - we(compiler) can detect the problem here('bar' was not the 
default implementation for A's requirement). Without 'extent' - 'bar' will be default 
implementation without our intent for this.

So, in case suggested keywords are both optional - IMO we need both.
In case 'default' is required - then yes, we need only it.


> My preference would be to just add the default keyword, and have breaches treated as 
> warnings using the current behaviour, which we can eliminate and elevate to an error 
> in future once people have had a chance to change their code.
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
> 


More information about the swift-evolution mailing list