I can assure you that I most definitely do not want an API developer adding to 
an exposed enum without me -the user- noticing it.

That would imo be a recipe for disaster.

Regards,
Rien.


> On 7 Feb 2017, at 19:58, Tanner Nelson <tan...@qutheory.io> wrote:
> 
> The point of the warning is to inform you that the author of the library you 
> depend on could cause your could not to compile by simply adding a case to 
> that enum. 
> 
> This is something you should be happy to avoid as someone writing a library 
> you want other people to depend on or as someone writing an application that 
> you don't want to find failing to compile in a few weeks or months. 
> 
> Sent from my iPhone
> 
>> On Feb 7, 2017, at 19:49, Rien <r...@balancingrock.nl> wrote:
>> 
>> If you don’t want the default case, and if you like a warning free 
>> compilation, you need a way to suppress the warning.
>> 
>> Regards,
>> Rien
>> 
>> Site: http://balancingrock.nl
>> Blog: http://swiftrien.blogspot.com
>> Github: http://github.com/Balancingrock
>> Project: http://swiftfire.nl
>> 
>> 
>> 
>> 
>> 
>>> On 07 Feb 2017, at 19:42, Tanner Nelson <tan...@qutheory.io> wrote:
>>> 
>>> I don't understand the part about warning suppression. The warning would go 
>>> away when you add the default case. 
>>> 
>>> Sent from my iPhone
>>> 
>>>> On Feb 7, 2017, at 16:25, Rien <r...@balancingrock.nl> wrote:
>>>> 
>>>> -1
>>>> 
>>>> Reason 1: the “negative” behaviour you describe is actually exactly what I 
>>>> want to happen.
>>>> Reason 2: Introducing a warning would also necessitate a warning 
>>>> suppression in order to have your code compile without warnings. But when 
>>>> you suppress, the purpose of the warning is nul and void.
>>>> 
>>>> PS: I would suggest not to use an enum in cases where this is really 
>>>> annoying and replace the enums with constants.
>>>> 
>>>> Regards,
>>>> Rien
>>>> 
>>>> Site: http://balancingrock.nl
>>>> Blog: http://swiftrien.blogspot.com
>>>> Github: http://github.com/Balancingrock
>>>> Project: http://swiftfire.nl
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> On 07 Feb 2017, at 16:12, Tanner Nelson via swift-evolution 
>>>>> <swift-evolution@swift.org> wrote:
>>>>> 
>>>>> Hello Swift Evolution,
>>>>> 
>>>>> I'd like to propose that a warning be emitted when default cases are 
>>>>> omitted for enums from other modules. 
>>>>> 
>>>>> What this would look like:
>>>>> 
>>>>> OtherModule:
>>>>> ```
>>>>> public enum SomeEnum {
>>>>> case one
>>>>> case two
>>>>> }
>>>>> 
>>>>> public let global: SomeEnum = .one
>>>>> ```
>>>>> 
>>>>> executable:
>>>>> ```
>>>>> import OtherModule
>>>>> 
>>>>> switch OtherModule.global {
>>>>> case .one: break
>>>>> case .two: break
>>>>> ^~~~~ ⚠︎ Warning: Default case recommended for imported enums. Fix-it: 
>>>>> Add `default: break`
>>>>> }
>>>>> ```
>>>>> 
>>>>> Why:
>>>>> 
>>>>> Allowing the omission of a default case in an exhaustive switch makes the 
>>>>> addition of a new case to the enum a breaking change. 
>>>>> In other words, if you're exhaustively switching on an enum from an 
>>>>> imported library, the imported library can break your code by adding a 
>>>>> new case to that enum (which the library authors may erroneously view as 
>>>>> an additive/minor-bump change).
>>>>> 
>>>>> Background:
>>>>> 
>>>>> As a maintainer of a Swift framework, public enums have been a pain point 
>>>>> in maintaining semver. They've made it difficult to implement additive 
>>>>> features and have necessitated the avoidance of enums in our future 
>>>>> public API plans.
>>>>> 
>>>>> Related Twitter thread: 
>>>>> https://twitter.com/tanner0101/status/796860273760104454
>>>>> 
>>>>> Looking forward to hearing your thoughts.
>>>>> 
>>>>> Best,
>>>>> Tanner
>>>>> 
>>>>> Tanner Nelson
>>>>> Vapor 
>>>>> +1 (435) 773-2831
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> swift-evolution mailing list
>>>>> swift-evolution@swift.org
>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>> 
>> 

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

Reply via email to