<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Oct 12, 2016 at 2:27 PM, Sean Heber <span dir="ltr">&lt;<a href="mailto:sean@fifthace.com" target="_blank">sean@fifthace.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 class="HOEnZb"><div class="h5"><br>
&gt; With the improved syntax, this could look something like this instead:<br>
&gt;<br>
&gt; enum FileError: Error, LocalizedError {<br>
&gt;     var url: URL { get }<br>
&gt;<br>
&gt;     case notFound(url: URL) {<br>
&gt;         errorDescription = &quot;Could not access the file \(url.lastPathComponent) because it could not be found.&quot;<br>
&gt;         failureReason = &quot;The file \(url.lastPathComponent) could not be found.&quot;<br>
&gt;         recoverySuggestion = &quot;Please locate the correct file and try again.&quot;<br>
&gt;         helpAnchor = &quot;notFound&quot;<br>
&gt;         url = url<br>
&gt;     }<br>
&gt;<br>
&gt;     case accessDenied(url: URL) {<br>
&gt;         errorDescription = &quot;Could not access the file \(url.lastPathComponent) because access was denied.&quot;<br>
&gt;         failureReason = &quot;We do not have permission to view the file \(url.lastPathComponent)&quot;<br>
&gt;         recoverySuggestion = &quot;You can change the file&#39;s permissions using the Finder&#39;s Get Info window.&quot;<br>
&gt;         helpAnchor = &quot;accessDenied&quot;<br>
&gt;         url = url<br>
&gt;     }<br>
&gt;<br>
&gt;     case incorrectFormat(url: URL) {<br>
&gt;         errorDescription = &quot;Could not access the file \(url.lastPathComponent) because it was not in the expected format.&quot;<br>
&gt;         failureReason = &quot;The file \(url.lastPathComponent) was not in the expected format.&quot;<br>
&gt;         recoverySuggestion = &quot;The file may have become corrupt.&quot;<br>
&gt;         helpAnchor = &quot;incorrectFormat&quot;<br>
&gt;         url = url<br>
&gt;     }<br>
&gt;<br>
&gt;     case ioError(url: URL) {<br>
&gt;         errorDescription = &quot;Could not access the file \(url.lastPathComponent) because an I/O error occurred.&quot;<br>
&gt;         failureReason = &quot;An I/O error occurred while accessing the file \(url.lastPathComponent).&quot;<br>
&gt;         recoverySuggestion = &quot;Dear Lord, the hard drive may be failing.&quot;<br>
&gt;         helpAnchor = &quot;ioError&quot;<br>
&gt;         url = url<br>
&gt;     }<br>
&gt;<br>
&gt;     // ... etc ...<br>
&gt; }<br>
&gt;<br>
&gt; I don’t think it can be denied that the second is orders of magnitude easier to read and comprehend.<br>
&gt;<br>
&gt; Charles<br>
<br>
</div></div>I’m 100% in favor of something approaching this syntax where the case-specific values are all grouped by the case and not the other way around.<br></blockquote><div><br></div><div>This particular suggestion has been made multiple times in the past. It is a proposal for sugar that did not converge on a consensus during either Swift 2 or 3 evolution. Since sugar is not in scope now and is still low priority for phase 2, let&#39;s focus on the potentially ABI-impacting issues here.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
l8r<br>
<span class="HOEnZb"><font color="#888888">Sean<br>
<br>
<br>
<br>
</font></span></blockquote></div><br></div></div>