Thank you for the feedback.
Regarding the mistake/unintuiveness/error-proneness, IMHO nim users should be
able to understand and use unordered enums with no problems.
For example C and Python enum numbering requirements are more flexible and are
not causing major usability or safety issues.
C enums numbering is something like this:
* values order is not required.
* aliasing is allowed, i.e. multiple fields with the same value is possible.
* automatic numbering is incremental and is reset each time an item with a
value is encountered.
That is one known and working way of implementing option1; removing the order
requirement completely.
Option2 that I implemented, is not full C enum flexibility. It allows unordered
fields only when all the values are set, so it does not require aliasing and/or
special automatic numbering. In this case, your example would still be not
supported by the language and would result in an error.