[swift-evolution] Handling unknown cases in enums [RE: SE-0192]

Goffredo Marocchi panajev at gmail.com
Fri Jan 12 12:59:31 CST 2018


Sent from my iPhone

> On 12 Jan 2018, at 18:25, Jordan Rose via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
> 
>> On Jan 11, 2018, at 23:30, Chris Lattner <clattner at nondot.org> wrote:
>> 
>> 
>>> On Jan 11, 2018, at 11:15 PM, Jean-Daniel via swift-evolution <swift-evolution at swift.org> wrote:
>>> 
>>> A question about the new #unknown behavior. Is it intended to be used for error handling too ?
>>> Will it be possible to use in catch clause ?
>> 
>> If we go with the #unknown approach, then yes of course it will work in catch clauses.  They are patterns, so it naturally falls out.
> 
> It will not work in catch clauses because you need to have a static type that's an enum. Catch clauses always (today…) have a static type of 'Error'.
> 
> 
>> 
>> If we go with the “unknown default:” / “unknown case:"  approach, then no, this has nothing to do with error handling.
>> 
>> IMO, this pivots on the desired semantics for “unknown cases in enums”: if you intentionally try to match on this, do we get a warning or error if you don’t handle all the cases?  If we can get to consensus on that point, then the design is pretty obvious IMO.
> 
> That's fair. I'm strongly in favor of a warning, though, because again, people don't edit their dependencies.

A warning is better than nothing :), but for third party libraries you include in the app you are responsible for not updating to a library that would break your build and between compiler and automation catch this error before merging a PR and putting it in production. It is also your responsibility to reasonable choose a library that is properly maintained and vetted.

> 
> Jordan
> 
> _______________________________________________
> 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