On 20.12.2017 1:58, Ted Kremenek via swift-evolution wrote:
The review of "SE 0192 - Non-Exhaustive Enums" begins now and runs through 
*January 3, 2018*.

The proposal is available here:

    
https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md

Reviews are an important part of the Swift evolution process. All review feedback should be sent to the swift-evolution mailing list at:

    https://lists.swift.org/mailman/listinfo/swift-evolution

or, if you would like to keep your feedback private, directly to the review 
manager.

When replying, please try to keep the proposal link at the top of the message:

    Proposal link: 
https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md
    ...
    Reply text
    ...
    Other replies


      What goes into a review of a proposal?

The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, determine the direction of Swift.

When reviewing a proposal, here are some questions to consider:

  *

    What is your evaluation of the proposal?

+0.5.
I'll give additional +0.5 if 'future' case will be included in proposal.

I still do believe that without 'future' case we are introducing now a bug-generator point of code. For me this is obvious. Especially for the moment when Swift 4 code will be converted to Swift 5 and, as I understand, developer will see "non-exhaustive enum, add 'default' case" as suggestion during the migration. Instead of "use 'default' or 'future' ", so one can think and decide what needed here.

Having a tool('future' case) to express "switch over non-exhaustive enum exhaustively and let me know if new cases appear" is IMO a Swifty way, and much better than catching *run-time* bugs when your framework introduced a new enum value but you were not able to process it *during the compilation*, because you have 'default' case in switch.

Also, probably I missed this and not sure if this even can work, if framework(module) was compiled with Swift4 and contains 'public enum' - will such enum be treated as exhaustive if framework is imported in Swift 5 code? So, it was declared without @exchaustive, but for Swift4 exhaustive was the default.

Additionally, I'd like someone answers/comments my question regarding real-world example noted in the proposal (https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20171002/040053.html). Is it really a very rare use-case for embedded framework&enums, and is it really I have to find a way to use lint-like tools to check new cases in embedded enum after proposal is implemented? Or use other technique to process all cases of enum declared in framework?


  *

    Is the problem being addressed significant enough to warrant a change to 
Swift?


Yes, I believe so.

  *

    Does this proposal fit well with the feel and direction of Swift?


Generally yes, but
* I don't like @exchaustive as attribute, something like "public sealed enum" or "public enum(final)" IMO is more Swifty syntax
* not safe/dangerous 'default' without able to keep switch exhaustive at 
compilation time IMO is not Swift-way

  *

    If you have used other languages or libraries with a similar feature, how 
do you feel that this proposal compares to
    those?

  *

Don't know


    How much effort did you put into your review? A glance, a quick reading, or 
an in-depth study?


Previous discussions, proposal text and proposal review thread

Thanks,
Ted Kremenek
Review Manager



_______________________________________________
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