> On Mar 10, 2017, at 10:15 AM, Trevör ANNE DENISE via swift-evolution 
> <[email protected]> wrote:
> 
> Hello everyone,
> 
> As I was writing a program, I realised that I could make it safer by being 
> able to list all possible cases of a Swift enum.
> This is similar to what has been described there:
> https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151207/001233.html
>  
> <https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151207/001233.html>
> 
> Is there any updates about it since 2015?
> 
> Also, do you think this would be a good idea to make extensions constrainable 
> by enum types, like that?
> extension Type where P1: enum {
> }
> 
> You could then write something similar to this:
> 
> protocol A {
> associatedtype P1
> associatedtype P2
> static var p1PossibleValues:[P1] { get }
> static var p2PossibleValues:[P2] { get }
> }
> 
> extension A where P1: enum, P2: enum {
>       static var p1PossibleValues:[P1] { return p1PossibleValues.allValues }
>       static var p2PossibleValues:[P2] { return p2PossibleValues.allValues }
> }
> 
> Would it make sense to do it this way?

Almost… You could have the compiler generate that for 2/3 of the types of enum, 
but it can’t do anything with enums that have associated values. I wrote a bit 
of software a while back that does as much as I could figure out how to do 
automatically, then makes in a compile-time error to not fill-in the blanks 
(which is still annoying, but at least you don’t find out about your mistake 
when your program crashes). Feel free to do whatever you want with it: 
https://github.com/TheOtherDave/EnumEnhancer

Hope that helps
- Dave Sweeris
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to