[Pitch] Extensible enums for non-resilient modules

For non-resilient libraries, an agreement was never expressible in code as to the @frozen-ness of enums.

A library turning on this feature would be the moral equivalent of adding a new case to every enum declared in that library—which (unless it explicitly documented otherwise) the library could always do. For cases where there was a documented promise of being frozen, now there is a way to express it in code.

Turning on this feature does not require any existing library to lie about whether its enums are frozen: rather it exercises an option that the library has always explicitly reserved. If that cannot be tolerated in practice by a library’s clients, then that library’s enums were in fact frozen anyway.

1 Like