> On Feb 13, 2017, at 09:28, James Froggatt via swift-evolution > <[email protected]> wrote: > > Having loosely followed this discussion, the way I'm thinking of ‘closed’ is > as a modifier which would let you switch over something from outside the > module in which it is declared. > > From outside the declaring module: > • A closed enum's cases can be exhaustively switched. > • A closed protocol's conforming types can be exhaustively switched. > • A closed class's subclasses can be exhaustively switched. > > If this is correct, I can't help but think ‘closed’ is describing something > subtly different in each case - picking and choosing the ‘important’ > relationship for each type, while protocols already have a subtyping > relationship, and it sounds like there's possibility for enum subtyping in > the future. > > I'd rather keep ‘open’ (and a potential future ‘closed’) purely describing > the subtyping relationship, and have some other means of labelling > conformance and cases as switchable.
This is definitely not correct. A "closed" enum's cases can be exhaustively switched from any module, but a non-open protocol's conforming types or non-open class's subclasses cannot be exhaustively switched from anywhere except the defining module (because there may be internal subclasses). Jordan _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
