<div dir="ltr">I can see why this is useful, and understand the problem. However, it does feel like the wrong solution to a real problem. This seems to be very similar to the *expression problem*:<div><br></div><div>&gt; The expression problem is a new name for an old problem.[2][3] The goal is to define a datatype by cases, where one can add new cases to the datatype and new functions over the datatype, without recompiling existing code, and while retaining static type safety (e.g., no casts).</div><div>&gt; </div><div>&gt; (source: <a href="https://en.wikipedia.org/wiki/Expression_problem">https://en.wikipedia.org/wiki/Expression_problem</a>)</div><div><br></div><div>The price we&#39;ll pay for this proposal is to always have a default case with non-exhaustive enums. To me, this feels very similar to the default case in Swift&#39;s error handling, and in that sense it matches the existing language behavior. However, I find the default case in Swift&#39;s error handling quite annoying (especially if you can guarantee you&#39;ve handled all possible errors). </div><div><br></div><div>In the case of enums, I&#39;d much rather get a compiler error because I didn&#39;t handle case, than a runtime error because my default caught a case I actually wanted to catch. Having non-exhaustive enums makes it much harder to refactor code that uses those enums (if I add a case, the compiler doesn&#39;t give me a list of all the sites I need to fix).</div><div><br></div><div>A -1 from me.</div><div><br></div><div>I would like a solution to the problem, but I feel that the proposed solution has too many drawbacks.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Dec 19, 2017 at 11:58 PM, Ted Kremenek <span dir="ltr">&lt;<a href="mailto:kremenek@apple.com" target="_blank">kremenek@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><p style="margin-right:0px;margin-bottom:15px;margin-left:0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255);margin-top:0px!important">The review of &quot;SE 0192 - Non-Exhaustive Enums&quot; begins now and runs through <strong>January 3, 2018</strong>.</p><p style="margin:15px 0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">The proposal is available here:</p><blockquote style="margin:15px 0px;border-left-width:4px;border-left-style:solid;border-left-color:rgb(221,221,221);padding:0px 15px;color:rgb(119,119,119);font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)"><div style="margin:0px"><a href="https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md" target="_blank">https://github.com/apple/<wbr>swift-evolution/blob/master/<wbr>proposals/0192-non-exhaustive-<wbr>enums.md</a></div></blockquote><p style="margin:15px 0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">Reviews are an important part of the Swift evolution process. All review feedback should be sent to the swift-evolution mailing list at:</p><blockquote style="margin:15px 0px;border-left-width:4px;border-left-style:solid;border-left-color:rgb(221,221,221);padding:0px 15px;color:rgb(119,119,119);font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)"><div style="margin:0px"><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-<wbr>evolution</a></div></blockquote><p style="margin:15px 0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">or, if you would like to keep your feedback private, directly to the review manager. </p><p style="margin:15px 0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">When replying, please try to keep the proposal link at the top of the message:</p><blockquote style="margin:15px 0px;border-left-width:4px;border-left-style:solid;border-left-color:rgb(221,221,221);padding:0px 15px;color:rgb(119,119,119);font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)"><div style="margin:0px">Proposal link: <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md" target="_blank">https://github.com/apple/<wbr>swift-evolution/blob/master/<wbr>proposals/0192-non-exhaustive-<wbr>enums.md</a><br>...<br>Reply text<br>...<br>Other replies</div></blockquote><h3 id="m_-3546260578713253111toc_0" style="margin:20px 0px 10px;padding:0px;font-size:18px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">What goes into a review of a proposal?</h3><p style="margin:15px 0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, determine the direction of Swift. </p><p style="margin:15px 0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">When reviewing a proposal, here are some questions to consider:</p><ul style="margin:15px 0px;padding-left:30px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)"><li style="margin:0px"><p style="margin:0px 0px 15px">What is your evaluation of the proposal?</p></li><li style="margin:0px"><p style="margin:0px 0px 15px">Is the problem being addressed significant enough to warrant a change to Swift?</p></li><li style="margin:0px"><p style="margin:0px 0px 15px">Does this proposal fit well with the feel and direction of Swift?</p></li><li style="margin:0px"><p style="margin:0px 0px 15px">If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?</p></li><li style="margin:0px"><p style="margin:0px 0px 15px">How much effort did you put into your review? A glance, a quick reading, or an in-depth study?</p></li></ul><p style="margin-top:15px;margin-right:0px;margin-left:0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255);margin-bottom:0px!important">Thanks,<br>Ted Kremenek<br>Review Manager</p></div><br>______________________________<wbr>_________________<br>
swift-evolution-announce mailing list<br>
<a href="mailto:swift-evolution-announce@swift.org">swift-evolution-announce@<wbr>swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution-announce" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-<wbr>evolution-announce</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Chris Eidhof</div>
</div>