Sent from my iPad
> On Sep 9, 2017, at 11:42 AM, gs. <griotsp...@gmail.com> wrote: > > How does fragility play into this? Does this only work for fragile (closed) > and internal/private/fileprivate enums? That's a great question. I think it would have to have that limitation. Using Jordan's terminology, by definition a nonexhaustive cannot provide a complete list of all values. > > TJ > >> On Sep 9, 2017, at 15:23, Matthew Johnson via swift-evolution >> <swift-evolution@swift.org> wrote: >> >> >> >> Sent from my iPad >> >>> On Sep 9, 2017, at 7:33 AM, Brent Royal-Gordon <br...@architechies.com> >>> wrote: >>> >>>> On Sep 8, 2017, at 5:14 PM, Xiaodi Wu via swift-evolution >>>> <swift-evolution@swift.org> wrote: >>>> >>>> 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. >>> >>> >>> I agree it should be Int-indexed; that seems to be what people want from >>> this. >>> >>> 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. >>> >>> (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.) >> >> This is the direction I think makes the most sense in terms of how we should >> approach synthesis. The open question in my mind is what the exact >> requirement of the protocol should be. Should it exactly match what we >> synthesize (`[Self]` or an associated `Collection where Iterator.Element == >> Self, Index == Int`) or whether the protocol should have a more relaxed >> requirement of `Sequence where Iterator.Element == Self` like Tony proposed. >> >>> >>> -- >>> Brent Royal-Gordon >>> Architechies >>> >> _______________________________________________ >> 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