<html><body><div id="edo-message"><div>The edge-case I have in mind is... let's say we synthesised RawRep conformance for all Equatable raw-types. That would allow you use struct and class rawvalues with our shorthand syntax.</div><div><br></div><div>But Equatable values might overlap. A single raw-value might be considered equal to multiple cases in the enum. If you do that, you can get unexpected values from the initialiser, and we won't be able to check for it at compile-time, and when you try to debug these strange values, it will be in some code that isn't written down anywhere and so less obvious to debug. The only magic about Int/String literals is that the compiler understands their content and that content is known at compile-time so can be checked for uniqueness.</div><div><br></div><div>To be clear, though: I don't know really know why that limitation is there; but from what I've seen of the implementation this is my best guess. Otherwise there's nothing technically stopping us loosening the restrictions for the shorthand AFAIK.</div><div><br></div><div><br><br><style>#edo-signature img {max-width: 90%}</style><div id="edo-signature" style="font-family: 'Helvetica Neue','Helvetica',Helvetica,Arial,sans-serif;font:'-apple-system-body';"></div><br><div id="edo-link"></div></div></div><div id="edo-original"><div><br><br><blockquote type="cite" style="margin:1ex 0 0 0;border-left:1px #ccc solid;padding-left:0.5ex;"><div>On Oct 15, 2016 at 12:37 pm, &lt;<a href="mailto:swift-evolution@swift.org">J.E. Schotsman via swift-evolution</a>&gt; wrote:<br><br></div><div><meta http-equiv="Content-Type" content="text/html charset=utf-8"><br class=""><div><blockquote type="cite" class=""><div class="">On 15 Oct 2016, at 01:53,Karl wrote:</div></blockquote><blockquote type="cite" class=""><br class="Apple-interchange-newline"><div class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">There are no restrictions on what can be RawRepresentable (structs and classes can also conform), and no limitation on the type of RawType (can also be a struct or a class). You just need to implement it yourself in those cases; I’m guessing because there are complex edge-cases which we don’t want hidden away in a location you can’t easily debug.</span></div></blockquote></div><br class=""><div class="">Can you give an example of such an edge case?</div><div class="">We may be able to exclude them somehow.</div><div class=""><br class=""></div><div class="">Jan E.</div>_______________________________________________
swift-evolution mailing list
<a dir="ltr" href="mailto:swift-evolution@swift.org" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="3">swift-evolution@swift.org</a>
<a dir="ltr" href="https://lists.swift.org/mailman/listinfo/swift-evolution" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="4">https://lists.swift.org/mailman/listinfo/swift-evolution</a>
</div></blockquote></div></div></body></html>