<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class="">On Sep 8, 2017, at 5:14 PM, Xiaodi Wu via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Here, people just want an array of all cases. Give them an array of all cases. When it's not possible (i.e., in the case of cases with associated values), don't do it.</span></div></blockquote></div><div class=""><br class=""></div><div class="">I agree it should be Int-indexed; that seems to be what people want from this.</div><div class=""><br class=""></div><div class="">I seem to recall that there is information about the available enum cases in the module metadata. If so, and if we're willing to lock that in as part of the ABI design, I think we should write—or at least allow for—a custom Int-indexed collection, because this may allow us to recurse into associated value types. If we aren't going to have suitable metadata, though, I agree we should just use an Array. There are pathological cases where instantiating a large Array might be burdensome, but sometimes you just have to ignore the pathological cases.</div><div class=""><br class=""></div><div class="">(The "infinite recursion" problem with associated values is actually relatively easy to solve, by the way: Don't allow, or at least don't generate, `ValuesEnumerable` conformance on enums with `indirect` cases.)</div><br class=""><div class="">
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div class=""><div style="font-size: 12px; " class="">-- </div><div style="font-size: 12px; " class="">Brent Royal-Gordon</div><div style="font-size: 12px; " class="">Architechies</div></div></span>
</div>
<br class=""></body></html>